Any tips on how to get a JDBC connection going using the embedded version of Tomcat? Where does the MySql driver go? How is the JNDI resource configured? I've tried deploying a .war file with a context.xml, but have had some problems (below). Thanks, Joe
-----Original Message----- From: Joe Reger, Jr. [mailto:[EMAIL PROTECTED] Sent: Sunday, May 29, 2005 3:56 PM To: tomcat-user@jakarta.apache.org Subject: Embedded Tomcat JNDI/JDBC Configuration Questions Hi! I've successfully created a project that embeds Tomcat. Excellent! I can see the sample page and the manager app, reporting Tomcat 5.5.9. Now I'm working on deploying a .war file programatically: public void registerWAR(String contextPath, String absolutePath) throws Exception { Context context = this.embedded.createContext(contextPath, absolutePath); context.setReloadable(false); this.host.addChild(context); } I pass in the path "" and the location of the .war file. When I run the application the .war file is found and exploded to the /ROOT directory properly. Inside of the .war file is a context.xml file. The "jdbc/db" resource is defined in context.xml, inside of the .war file with the following: <Resource name="jdbc/db" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/db"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>maxActive</name> <value>100</value> </parameter> <parameter> <name>maxIdle</name> <value>30</value> </parameter> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <parameter> <name>username</name> <value>foo</value> </parameter> <parameter> <name>password</name> <value>bar</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost:3306/reger?autoReconnect=true</value> </parameter> </ResourceParams> When I make a call to my application the code inside the .war file attempts to connect to the database like this: private static final String jndiPrePend = "java:comp/env/"; private static final String jndiDB = "jdbc/db"; public static Connection getConnection(){ Connection conn=null; try{ Context ctx = new InitialContext(); if(ctx != null){ DataSource ds = (DataSource)ctx.lookup(jndiPrePend + jndiDB); if(ds != null){ conn = ds.getConnection(); return conn; } } } catch (Exception e){ e.printStackTrace(); util.errorsave(e); } return null; } But I get the following error in the console window, repeatedly, each time my app tries to connect to the db: javax.naming.NamingException: Cannot create resource instance at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory. java:132) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) at org.apache.naming.NamingContext.lookup(NamingContext.java:792) at org.apache.naming.NamingContext.lookup(NamingContext.java:139) at org.apache.naming.NamingContext.lookup(NamingContext.java:780) at org.apache.naming.NamingContext.lookup(NamingContext.java:139) at org.apache.naming.NamingContext.lookup(NamingContext.java:780) at org.apache.naming.NamingContext.lookup(NamingContext.java:139) at org.apache.naming.NamingContext.lookup(NamingContext.java:780) at org.apache.naming.NamingContext.lookup(NamingContext.java:152) at org.apache.naming.SelectorContext.lookup(SelectorContext.java:136) at javax.naming.InitialContext.lookup(InitialContext.java:351) at reger.db.RunSQL(db.java:64) at reger.db.RunSQL(db.java:124) at reger.scheduler.MasterThread.setupThread(MasterThread.java:377) at reger.scheduler.MasterThread.run(MasterThread.java:48) It looks like the jndi/jdbc resource isn't configured correctly and/or isn't available to the code from the .war file running inside of the embedded tomcat. Questions: 1) Is my jndiPrePend variable correct? It works for a standard deployment on a non-embedded tomcat. 2) Is there anything special I need to do to get a jndi/jdbc resource configured under the embedded tomcat? 3) Does the error message I'm seeing point to anything that I need to change? Thanks, Joe --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]