On Tue, 26 Jul 2011 10:49:47 -0400, adam_gent-zF7ou3TX9xLSUeElwK9/Pw wrote:
> I'm trying to figure out how to use derby.war in the same > Servlet Container as other web applications that depend on it. > I asked the question fist on Stackoverflow (I didn't realize you had an > active mailing list... apologies). I > need the derby war to load first otherwise our database connection pool > will try to immediately connect to the derby environment and fail. We > have tried to set Spring and our db pool (bonecp) to lazy initialize but > that doesn't seem to work correctly. Have others had this issue? > We were hoping to have a single tomcat instance with everything you > needed to easy installation of our > product. Apologies for editing your post. I stripped out the html. I just tried a quick application on Tomcat 5.5.33, and things worked as expected. Here are a few thoughts. As far as I know, servlet containers do not enforce startup order for web applications. This has been mentioned a couple of times on the Tomcat mailing list. Also, derby controlled by derby.war doesn't start (normally) until the web application is accessed (http://localhost:8080/derby/derbynet is the default). To get around the first, you can use a validation query (if your pooling supports it) with a retry / timeout. I use Tomcat's pooling and JNDI so this works for me. I know you can coerce Hibernate to use Tomcat's database pooling and JNDI, so I imagine you can do the same with Spring. If not, then hopefully you can configure your pooling to use a validation query to make sure that the database is up and running. To get around the second, you can add the following line to the servlet element in web.xml: <load-on-startup>0</load-on-startup> This will start the Derby network server running without having to access the derbynet URL. Hopefully you've done things like add derby.jar, derbynet.jar, derbyclient.jar to the appropriate place in Tomcat ($CATALINA_HOME/common/ lib for Tomcat 5.5.x, $CATALINA_HOME/lib for Tomcat 6.0.x and 7.0.x). It's also probably a good idea to set derby.system.home outside of the webapps area. Add -Dderby.system.home=somewhere to JAVA_OPTS in $CATALINA_HOME/bin/setenv.sh (create if you don't have one already). , , , , just my two cents. /mde/
