Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] jetty-maven-plugin v8, failsafe and JNDI failure

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 <janb@xxxxxxxxxxx> wrote:
> Do you have the datasource defined as a <resource-ref> in web.xml?
>
> Jan
>
>
> On 5 December 2012 03:32, Adam Retter <adam.retter@xxxxxxxxxxxxxx> 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
>> jetty-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>
>
>
>
> --
> Jan Bartel <janb@xxxxxxxxxxx>
> www.webtide.com – Developer advice, services and support
> from the Jetty & CometD experts.
>
> _______________________________________________
> jetty-users mailing list
> jetty-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/jetty-users
>



-- 
Adam Retter

skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk


Back to the top