Hi folks,
I have been trying to get to grips with JNDI but cannot get data sources or
bean factories - using the standard examples in the Tomcat user doc - but
cannot get hardly anything to work.
I have the following declared in TOMCAT/webapps/axis/WEB-INF/web.xml after the
<session-mapping/> element and before the <mime-mapping/> element.
<resource-ref>
<description>Data Source Example</description>
<res-ref-name>jdbc/mikeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-env-ref>
<resource-env-ref-name>simpleValue</resource-env-ref-name>
<resource-env-ref-type>java.lang.Integer</resource-env-ref-type>
</resource-env-ref>
<resource-env-ref>
<resource-env-ref-name>value/someValue</resource-env-ref-name>
<resource-env-ref-type>java.lang.String</resource-env-ref-type>
</resource-env-ref>
<env-entry>
<env-entry-name>value/someDirectValue</env-entry-name>
<env-entry-value>10</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<resource-env-ref>
<description>Object factory for MyBean instances</description>
<resource-env-ref-name>bean/MyBeanFactory</resource-env-ref-name>
<resource-env-ref-type>com.mycompany.MyBean</resource-env-ref-type>
</resource-env-ref>
In TOMCAT/conf/server.xml there is...
<Server...>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
I have the following TOMCAT/webapps/axis/META-INF/context.xml file:
<Context debug="0" docBase="/home/michaelj/test/tomcatAxis/webapps/axis"
reloadable="true">
<Resource name="jdbc/mikeDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mikeDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name>
<value>daitester</value>
</parameter>
<parameter>
<name>password</name>
<value>It35tda1</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://coal.epcc.ed.ac.uk:3306/daitest</value>
</parameter>
</ResourceParams>
<Environment name="value/someValue"
value="10"
type="java.lang.String"
override="true"/>
<ResourceLink name="simpleValue"
global="simpleValue"
type="java.lang.Integer"/>
<Resource name="bean/MyBeanFactory" auth="Container"
type="com.mycompany.MyBean"/>
<ResourceParams name="bean/MyBeanFactory">
<parameter>
<name>factory</name>
<value>org.apache.naming.factory.BeanFactory</value>
</parameter>
<parameter>
<name>bar</name>
<value>23</value>
</parameter>
</ResourceParams>
</Context>
I have my database driver in both TOMCAT/common/lib and
TOMCAT/webapps/axis/WEB-INF/lib and my example bean in TOMCAT/common/classes
and TOMCAT/webapps/axis/WEB-INF/classes.
Now when I run the following within a web service
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
the context is accessed fine. But when I then do ctx.lookup() for each
of my declared resources:
jdbc/mikeDB
bean/MyBeanFactory
value/someValue
value/someDirectValue
simpleValue
Then I get the following
-For jdbc/mikeDB I get
object [EMAIL PROTECTED] as expected. -However
running getConnection() on this throws
"Cannot create JDBC driver of class '' for connect URL 'null'"
-For bean/MyBeanFactory
value/someValue
simpleValue
I get:
Cannot create resource instance
-The only one that works is value/someDirectValue for which
I get "10" as expected.
Can anyone offer any clue as to why this is going wrong? Is there some piece of
configuration I'm missing or have done wrong? Most of these examples were cut
and paste from the user doc so I'm suprised that virtually nothing is returned
from lookup() sucessfully.
Thanks,
mike
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]