You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Alexandre Borgoltz <al...@smartjog.com> on 2004/11/29 15:59:12 UTC
Fw: [tomcat 5.5] Reference a JNDI env resource from another env-resource
Hi,
I have developed my own BeanFactory as explained in your JNDI-RESOURCE-HOWTO.
Everything works fine and I can use the corresponding factory successfully.
But when I try to upgrade it a bit, I'm facing a problem:
I'd like my factory to access a database to update the bean it returns. So I'd like it to use the datasource I've also configured in server.xml:
<GlobalNamingResources> <Resource name="jdbc/oracle/sjogmxf" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@re7:1521:SJOGMXF" username="pdi" password="pdi" maxActive="20" maxIdle="10" maxWait="-1" /> <Resource name="infocenter" auth="Container" type="cosmos.infocenter.Infocenter" factory="test.factory.InfocenterFactory" /></GlobalNamingResources>To be more precise, I've also added the following ResourceLink in my <Context> declaration:
<ResourceLink name="infocenter" type="cosmos.infocenter.Infocenter" global="infocenter"/> <ResourceLink name="jdbc/oracle/sjogmxf" type="javax.sql.DataSource" global="jdbc/oracle/sjogmxf"/>
When I try to lookup and use one of these resources directly from the webapps, it just works great. But if I try to modify my custom factory to make it lookup the datasource, it gets a NamingException (Comp is not linked to the initial context).
I suppose this means the initial context is created after the resources are created. Is there a way to have my custom resource reference another resource (in this case, the datasource)? Then is there a way to specify the order of loading for resources? (Here I'll need the datasource to be loaded BEFORE the custom factory...)
I thank you in advance,
Alexandre BORGOLTZ
Head of Technology
SmartJog SA
Phone: +33 (0)1 4996 6324
Fax: +33 (0)1 4996 6405
Mobile: +33 (0)6 8882 1417
alexandre.borgoltz@smartjog.com