2013-12-22 13 views
9

Ich versuche, Arbeit Integrationstest mit tomcat7 Embedded-Plugin mit dieser Konfiguration zu machen:

  <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <port>29360</port> 
        <systemProperties> 
         <logback.configurationFile>${project.build.testOutputDirectory}/logback-test.xml</logback.configurationFile> 
         <psw.config>${project.build.testOutputDirectory}</psw.config> 
         <spring.profiles.active>test-e2e</spring.profiles.active> 
        </systemProperties> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>org.slf4j</groupId> 
         <artifactId>slf4j-api</artifactId> 
         <version>${slf4j.version}</version> 
        </dependency> 
        <dependency> 
         <groupId>ch.qos.logback</groupId> 
         <artifactId>logback-classic</artifactId> 
         <version>${logback.version}</version> 
        </dependency> 
       </dependencies> 
       <executions> 
        <execution> 
         <id>run-tomcat</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run-war-only</goal> 
         </goals> 
         <configuration> 
          <fork>true</fork> 
         </configuration> 
        </execution> 
        <execution> 
         <id>stop-tomcat</id> 
         <phase>post-integration-test</phase> 
         <goals> 
          <goal>shutdown</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

jedoch, wenn die Abschaltung geschieht, ich hielt diesen Fehler mit : verursacht durch: java.lang.ClassNotFoundException: org.apache.catalina.core.ContainerBase $ StopChild

[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2:49.618s 
[INFO] Finished at: Sun Dec 22 07:58:06 CET 2013 
[INFO] Final Memory: 163M/259M 
[INFO] ------------------------------------------------------------------------ 

ERROR: IllegalAccessException for stop method in class org.apache.tomcat.maven.plugin.tomcat7.run.ExtendedTomcat 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.apache.tomcat.maven.common.run.EmbeddedRegistry.shutdownAll(EmbeddedRegistry.java:110) 
    at org.apache.tomcat.maven.common.run.EmbeddedRegistry$1.run(EmbeddedRegistry.java:69) 
Caused by: org.apache.catalina.LifecycleException: Failed to stop component [StandardServer[-1]] 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236) 
    at org.apache.catalina.startup.Tomcat.stop(Tomcat.java:351) 
    ... 6 more 
Caused by: org.apache.catalina.LifecycleException: Failed to stop component [StandardService[Tomcat]] 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236) 
    at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:753) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    ... 7 more 
Caused by: org.apache.catalina.LifecycleException: Failed to stop component [StandardEngine[Tomcat]] 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:236) 
    at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:502) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    ... 9 more 
Caused by: java.lang.NoClassDefFoundError: org/apache/catalina/core/ContainerBase$StopChild 
    at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1173) 
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
    ... 11 more 
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.core.ContainerBase$StopChild 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227) 
    ... 13 more 

Process finished with exit code 0 

Irgendwelche Tipps, dies zu korrigieren?

+0

Ich habe das gleiche Problem. Der Server stoppt nicht, nachdem die Integrationstests mit 'mvn verify' ausgeführt wurden. Das Seltsame ist, dass dies nur passiert, wenn die Integrationstests fehlschlagen. Wenn sie korrekt ausgeführt werden, versucht der Server ordnungsgemäß herunterzufahren, und ich erhalte diese Warnung "Der dem Thread-Pool [http-bio-8087] zugeordnete Executor wurde nicht vollständig heruntergefahren. Einige Anwendungsthreads werden möglicherweise noch ausgeführt. – virgium03

Antwort

13

Wenn Sie mvn integration-test ausführen, wird die Post-Integration-Test-Phase nicht ausgeführt, was zu diesem Fehler führen kann. Verwenden Sie stattdessen mvn verify.

+0

Ich hatte ein ähnliches Problem und "MVN Verify" arbeitete für mich :) – user2325154