« Return to Thread: Cargo Maven2 plugin: failure to deploy in Tomcat6x

Cargo Maven2 plugin: failure to deploy in Tomcat6x

by greko23 :: Rate this Message:

Reply to Author | View in Thread

Hello guys,

I am using the cargo maven2 plugin to deploy a WAR in tomcat6x (6.0.18). I am getting the following error (it seems that there is a collission with the class loader), but I do not understand well why and how to fix it.

java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"


I think it might be related to the fact that I have some dependencies on Tomact (catalina), however the scope is set as "provided" in my pom.xml. Also, from javax.servlet I have the following dependencies: jstl (runtime), servlet-api (provided) and jsp-api (provided). Any ideas on how can I get this working??

Note: Cargo+Tomcat6x works fine when I use it to deploy a more simple/empty WAR (basic maven project, basic pom). If I use the default Jetty container, then I can succesfully see the site but some pages won't work well due to the dependencies on Tomcat6.

Configuration in my pom.xml
=====================
      <plugin>
        <groupId>org.codehaus.cargo</groupId>
        <artifactId>cargo-maven2-plugin</artifactId>
        <version>1.0</version>
        <configuration>
         
          <container>
            <containerId>tomcat6x</containerId>
           
            <zipUrlInstaller>
              <url>http://www.apache.org/dist/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.zip</url>
              <installDir>${project.build.directory}/cargoinstalls</installDir>
            </zipUrlInstaller>
            <log>${project.build.directory}/tomcat6x/cargo.log</log>
          </container>
         
          <configuration>
            <home>${project.build.directory}/tomcat6x/config</home>
          </configuration>
          <wait>true</wait>
        </configuration>
        <executions>
          <execution>
            <id>start-container</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>start</goal>
            </goals>
          </execution>
          <execution>
            <id>stop-container</id>
            <phase>post-integration-test</phase>
            <goals>
              <goal>stop</goal>
            </goals>
          </execution>
        </executions>
      </plugin>


Relevant logs
==========

[17:45:34.718][warn][talledLocalContainer] SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
[17:45:34.718][warn][talledLocalContainer] java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"
[17:45:34.718][warn][talledLocalContainer]  at java.lang.ClassLoader.defineClass1(Native Method)
[17:45:34.719][warn][talledLocalContainer]  at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
[17:45:34.719][warn][talledLocalContainer]  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
[17:45:34.719][warn][talledLocalContainer]  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
[17:45:34.719][warn][talledLocalContainer]  at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:181)
[17:45:34.719][warn][talledLocalContainer]  at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardService.start(StandardService.java:516)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
[17:45:34.719][warn][talledLocalContainer]  at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
[17:45:34.720][warn][talledLocalContainer]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[17:45:34.720][warn][talledLocalContainer]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[17:45:34.720][warn][talledLocalContainer]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[17:45:34.720][warn][talledLocalContainer]  at java.lang.reflect.Method.invoke(Method.java:597)
[17:45:34.720][warn][talledLocalContainer]  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
[17:45:34.720][warn][talledLocalContainer]  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

Thanks,
Greko


 « Return to Thread: Cargo Maven2 plugin: failure to deploy in Tomcat6x