cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Kavanagh <...@dotech.com>
Subject JNDI datasource from Cocoon
Date Tue, 01 Apr 2003 21:45:07 GMT
I spent a bit of time getting this to work, so I thought I'd submit it 
to the list. Can someone add this to the CocoonWiki how-tos list?

Switching from Cocoon managed datasource to JBoss JNDI datasource.

Up til now, I've used the datasource defined in cocoon which managed 
pooling, etc. The advantage of having jboss manage the connections is 
they can be shared across different applications running under jboss. 
Here is a list of things tha need to be done to make this work.

- move the jdbc driver jar file from the cocoon/WEB-INF/lib directory to 
jboss/server/default/lib. For Oracle, this file is ojdbc14.jar (This 
makes it availble to all applications, plus jboss)

- create your own XXX-service.xml file. You can modify the one for your 
database found in jboss/docs/examples/jda. I took the oracle.service.xml 
and changed the "OracleDS" name and put in my own. Also edit the 
ConnectionURL, UserName, Password config properties to suit your 
connection.

- in the cocoon.xconf file, change your datasource from the <jdbc> style 
to the <j2ee> style. My example shows a datasource named "stevie" 
refering to the JNDI named source called "mbrdb".
   <j2ee name="stevie">
       <dbname>mbrdb</dbname>
   </j2ee>
- Here is a jboss-web.xml file that needs to go into your cocoon/WEB-INF 
directory with your web.xml file. just edit your datasource name, 
replacing "mbrdb" with your source name.
    <?xml version="1.0"?>
    <jboss-web>
        <resource-ref>
            <res-ref-name>jdbc/mbrdb</res-ref-name>
            <jndi-name>java:/mbrdb</jndi-name>
        </resource-ref>
    </jboss-web>

- at the bottom of the web.xml file for your cocoon instance, add this;
   <resource-ref>
       <res-ref-name>jdbc/mbrdb</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>
It goes just before the </web-app> line at the bottom. You'll need to 
change the "mbrdb" reference here also.

- One other change I needed to make was to comment out 3 <map:action>s 
in the main sitemap.xmap file for cocoon. The first three actions 
defined are some "DatabaseXXXAction"s. They need to be commented out. 
Not sure why, but they caused cocoon to throw exceptions when used the 
<j2ee> datasource.

That is it! It took me many hours and the help of some co-workers to get 
this set up right.
Now, in your cocoon pipeline, you can just use the datasource name like 
you did before the change!


David



Mime
View raw message