2015-12-15 1 views
2

J'essaie d'exécuter deux ensembles de tests d'intégration (deux modules différents) dans la même construction à l'aide du plugin maven tomcat. Le premier ensemble fonctionne parfaitement sur le premier module. Mais Tomcat est incapable de déployer la guerre pour le second modukle. donne au lieu exception suivanteImpossible d'exécuter maven embedded tomcat pour la deuxième fois

com.sun.faces.config.ConfigureListener contextInitialized 
    SEVERE: Critical error during deployment: 
    com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding 
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:760) 
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:349) 
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:214) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5014) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5524) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) 
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:758) 
    ... 11 more 
    Caused by: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding 
    at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:1009) 
    at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:953) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:746) 
    ... 11 more 
    Caused by: java.lang.IllegalStateException: Illegal class loader binding 
    at org.apache.naming.resources.DirContextURLStreamHandler.get(DirContextURLStreamHandler.java:228) 
    at org.apache.naming.resources.DirContextURLStreamHandler.openConnection(DirContextURLStreamHandler.java:90) 
    at java.net.URL.openConnection(URL.java:971) 
    at com.sun.faces.config.ConfigManager$ParseTask.getInputStream(ConfigManager.java:1230) 
    at com.sun.faces.config.ConfigManager$ParseTask.getDocument(ConfigManager.java:1030) 
    at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:1000) 
    ... 14 more 

configuration du plugin dans pom.xml des deux projets Maven regarde comme ci-dessous:

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.3-SNAPSHOT</version> 
    <configuration> 
     <path>/test-module2</path> 
     <port>8081</port> 
    </configuration> 
    <executions> 
     <execution> 
      <id>start-tomcat</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>run</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> 

Est-ce que quelqu'un a idée de pourquoi cette erreur phénomène se produit?

+0

apparemment gradle plugin a le même problème https://github.com/bmuschko/gradle-tomcat-plugin/issues/46, https://github.com/bmuschko/gradle-tomcat-plugin/issues/124, probablement lié à Tomcat internes, comme suggéré par quelqu'un dans le fil. Une option se déplaçant à jetty maven plugin? –

Répondre

0

Utilisez des noms différents pour votre ressource JNDI dans ces modules. J'ai déjà rencontré une variation de ce problème. Il semble y avoir une sorte de staticité causant cela. Les exécutions du plugin Maven sont dans la même JVM - celle de Maven. Si elles ont été exécutées dans des Java-s fourchus, vous ne les obtiendrez probablement pas.

Je ne pense pas que le passage à Jetty aidera, bien qu'il puisse en effet. Cependant, j'ai l'impression que c'est un peu plus un problème avec Maven lui-même.

Je pense que cela peut avoir quelque chose à voir avec avoir un ServiceLocator statique quelque part (comme beaucoup d'exemple comme ce spectacle one).