Note that there are some explanatory texts on larger screens.

plurals
  1. POAtomikos + Jetty in a Maven build environment - Classloader issue?
    primarykey
    data
    text
    <p>I am working on a project with multiple JDBC data sources and JTA. I use Maven as a build tool, and I'd like to use the Jetty plugin (6.1.20) to run the application during development.</p> <p>I am trying to configure Jetty to use <a href="http://www.atomikos.com/" rel="nofollow noreferrer">Atomikos</a> as the transaction manager. I'm following the <a href="http://docs.codehaus.org/display/JETTY/Atomikos" rel="nofollow noreferrer">Atomikos documentation from Jetty</a>, but the Jetty startup fails with what looks like a class loader issue.</p> <p>Here are the relevant bits of my configuration.</p> <p><code>runtime</code> scope dependencies in my <code>pom.xml</code>:</p> <pre><code>&lt;dependency&gt; &lt;groupId&gt;com.atomikos&lt;/groupId&gt; &lt;artifactId&gt;transactions-jta&lt;/artifactId&gt; &lt;version&gt;3.5.7&lt;/version&gt; &lt;scope&gt;runtime&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.atomikos&lt;/groupId&gt; &lt;artifactId&gt;transactions-jdbc&lt;/artifactId&gt; &lt;version&gt;3.5.7&lt;/version&gt; &lt;scope&gt;runtime&lt;/scope&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;javax.transaction&lt;/groupId&gt; &lt;artifactId&gt;jta&lt;/artifactId&gt; &lt;version&gt;1.1&lt;/version&gt; &lt;scope&gt;runtime&lt;/scope&gt; &lt;/dependency&gt; </code></pre> <p>My <code>jetty-env.xml</code> located in <code>/WEB-INF</code> (autodiscovered by Jetty):</p> <pre><code>&lt;New id="userTxImpl" class="com.atomikos.icatch.jta.UserTransactionImp" /&gt; &lt;New id="tx" class="org.mortbay.jetty.plus.naming.Transaction"&gt; &lt;Arg&gt; &lt;Ref id="userTxImpl" /&gt; &lt;/Arg&gt; &lt;/New&gt; </code></pre> <p>The instantiation of <code>tx</code> at the end is the bit that fails, if I leave it out, Jetty starts up fine (but does not expose <code>UserTransaction</code> via JNDI, of course).</p> <p>The Stacktrace: </p> <pre><code> 2009-09-02 18:42:18.910::WARN: Config error at &lt;New id="tx" class="org.mortbay.jetty.plus.naming.Transaction"&gt;&lt;Arg&gt; &lt;Ref id="userTxImpl"/&gt; &lt;/Arg&gt;&lt;/New&gt; 2009-09-02 18:42:18.910::WARN: Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@12515db{/administrator,C:\workspace\administrator\src\main\webapp} java.lang.IllegalStateException: No Constructor: &lt;New id="tx" class="org.mortbay.jetty.plus.naming.Transaction"&gt;&lt;Arg&gt; &lt;Ref id="userTxImpl"/&gt; &lt;/Arg&gt;&lt;/New&gt; on org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@12515db{/administrator,C:\workspace\administrator\src\main\webapp} at org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:631) at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:256) at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:190) at org.mortbay.jetty.plus.webapp.EnvConfiguration.configureWebApp(EnvConfiguration.java:130) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStart(Jetty6PluginWebAppContext.java:124) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.plugin.Jetty6PluginServer.start(Jetty6PluginServer.java:132) at org.mortbay.jetty.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:441) at org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:383) at org.mortbay.jetty.plugin.AbstractJettyRunMojo.execute(AbstractJettyRunMojo.java:210) at org.mortbay.jetty.plugin.Jetty6RunMojo.execute(Jetty6RunMojo.java:184) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149) at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223) at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1) at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904) at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304) at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:176) at org.apache.maven.cli.MavenCli.main(MavenCli.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:408) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:351) at org.codehaus.classworlds.Launcher.main(Launcher.java:31) </code></pre> <p>This looks like a classloader issue, as <code>org.mortbay.jetty.plus.naming.Transaction</code> has got a Constructor taking a <code>javax.transaction.UserTransaction</code>, and <code>com.atomikos.icatch.jta.UserTransactionImp</code> implements <code>javax.transaction.UserTransaction</code>, yet Jetty complains it does not have a proper constructor to use.</p> <p>I'm obviously missing something here, but what is it?</p> <p>Thanks!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload