Ah ha! Thank you very much, it works perfectly now. Of course its always the silly things that you overlook...
On 4 December 2012 21:23, Jan Bartel <[email protected]> wrote: > Do you have the datasource defined as a <resource-ref> in web.xml? > > Jan > > > On 5 December 2012 03:32, Adam Retter <[email protected]> wrote: >> >> Hi there, >> >> I have been using the jetty-maven-plugin in combination with the >> maven-failsafe-plugin to start and stop jetty before and after our >> integration tests are executed. >> >> So far this has worked well, however we are trying to move to JNDI for >> our database connections, rather than configuring them directly >> through our Spring applicationContext.xml >> >> We are using version 8.1.8.v20121106 of the jetty-maven-plugin, and >> even though Jetty appears to start the C3P0 connection pool we define >> in its JNDI connection, when our Web App tries to get a JNDI >> datasource, it always fails with the error: >> >> javax.naming.NameNotFoundException; remaining name 'jdbc/substitute' >> >> The jetty part of our Maven pom.xml looks like this: >> >> <plugin> >> <groupId>org.mortbay.jetty</groupId> >> <artifactId>jetty-maven-plugin</artifactId> >> <configuration> >> <scanIntervalSeconds>10</scanIntervalSeconds> >> <stopPort>8995</stopPort> >> <stopKey>STOP</stopKey> >> <contextPath>/</contextPath> >> <connectors> >> <connector >> implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> >> <port>8990</port> >> <maxIdleTime>60000</maxIdleTime> >> </connector> >> </connectors> >> <systemProperties> >> <systemProperty> >> <name>substitutes.folder</name> >> <value>target/test/substitutes</value> >> </systemProperty> >> <systemProperty> >> <name>temp.folder</name> >> <value>target/test/tmp/substitutes</value> >> </systemProperty> >> </systemProperties> >> >> <jettyConfig>src/test/resources/jetty-config.xml</jettyConfig> >> </configuration> >> <executions> >> <execution> >> <id>start-jetty</id> >> <phase>pre-integration-test</phase> >> <goals> >> <goal>run-exploded</goal> >> </goals> >> <configuration> >> >> <scanIntervalSeconds>0</scanIntervalSeconds> >> <daemon>true</daemon> >> </configuration> >> </execution> >> <execution> >> <id>stop-jetty</id> >> <phase>post-integration-test</phase> >> <goals> >> <goal>stop</goal> >> </goals> >> </execution> >> </executions> >> <dependencies> >> <dependency> >> <groupId>c3p0</groupId> >> <artifactId>c3p0</artifactId> >> <version>${c3p0.version}</version> >> <scope>runtime</scope> >> </dependency> >> <dependency> >> <groupId>hsqldb</groupId> >> <artifactId>hsqldb</artifactId> >> <version>1.8.0.10</version> >> <scope>runtime</scope> >> </dependency> >> </dependencies> >> </plugin> >> >> The jetty-config.xml file referenced in the pom.xml above looks like this: >> >> <?xml version="1.0"?> >> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" >> "http://www.eclipse.org/jetty/configure.dtd"> >> <Configure id="Server" class="org.eclipse.jetty.server.Server"> >> >> <New id="substituteServer" >> class="org.eclipse.jetty.plus.jndi.Resource"> >> <Arg>jdbc/substitute</Arg> >> <Arg> >> <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> >> <Set name="driverClass">org.hsqldb.jdbc.JDBCDriver</Set> >> <Set name="jdbcUrl">jdbc:hsqldb:mem:test</Set> >> <Set name="user">SA</Set> >> <Set name="password"></Set> >> </New> >> </Arg> >> </New> >> </Configure> >> >> When we run 'mvn clean install' and it gets to the failsafe plugin, we >> see the following on the console: >> >> [INFO] >> [INFO] <<< jetty-maven-plugin:8.1.8.v20121106:run-exploded >> (start-jetty) @ substitute-server <<< >> [INFO] >> [INFO] --- jetty-maven-plugin:8.1.8.v20121106:run-exploded >> (start-jetty) @ substitute-server --- >> [INFO] Configuring Jetty for project: substitute-server >> [INFO] Configuring Jetty from xml configuration file = >> >> /home/dev/svn-root/trunk/substitute/substitute-server/src/test/resources/jetty-config.xml >> Dec 4, 2012 4:20:24 PM com.mchange.v2.log.MLog <clinit> >> INFO: MLog clients using java 1.4+ standard logging. >> Dec 4, 2012 4:20:24 PM com.mchange.v2.c3p0.C3P0Registry banner >> INFO: Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? >> true; trace: 10] >> [INFO] Context path = / >> [INFO] Tmp directory = >> /home/dev/svn-root/trunk/substitute/substitute-server/target/tmp >> [INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml >> [INFO] Web overrides = none >> 2012-12-04 16:20:25.070:INFO:oejs.Server:jetty-8.1.8.v20121106 >> 2012-12-04 16:20:26.621:INFO:oejpw.PlusConfiguration:No Transaction >> manager found - if your webapp requires one, please configure one. >> Null identity service, trying login service: null >> Finding identity service: null >> 2012-12-04 16:20:36.829:INFO:oejsh.ContextHandler:started >> >> o.m.j.p.JettyWebAppContext{/,file:/home/dev/svn-root/trunk/substitute/substitute-server/target/substitute-server-3.0-SNAPSHOT/},/home/dev/svn-root/trunk/substitute/substitute-server/target/substitute-server-3.0-SNAPSHOT >> >> In the above output I can see that Jetty indeed started up the c3p0 >> connection pool, so from that I assume that it should have bound the >> JNDI resource, however as Jetty then starts up our Spring Web App, I >> see the following: >> >> Related cause: org.springframework.beans.factory.BeanCreationException: >> Error creating bean with name 'substituteDataSource': Invocation of >> init method failed; nested exception is >> javax.naming.NameNotFoundException; remaining name 'jdbc/substitute' >> >> The related Spring config looks like: >> >> <jee:jndi-lookup id="substituteDataSource" >> jndi-name="java:comp/env/jdbc/substitute" >> expected-type="javax.sql.DataSource"/> >> >> So my question is, why can spring not bind to the JNDI resource that >> we have setup in Jetty? >> >> Thanks Adam. >> >> >> -- >> Adam Retter >> >> skype: adam.retter >> tweet: adamretter >> http://www.adamretter.org.uk >> _______________________________________________ >> jetty-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/jetty-users > > > > > -- > Jan Bartel <[email protected]> > www.webtide.com – Developer advice, services and support > from the Jetty & CometD experts. > > _______________________________________________ > jetty-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/jetty-users > -- Adam Retter skype: adam.retter tweet: adamretter http://www.adamretter.org.uk _______________________________________________ jetty-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/jetty-users
