2010-12-10 66 views
4

J'essaie de passer de JBoss 4.2.1 à JBoss 6. Dans JBoss 4.2.1, nous déployons manuellement notre application comme une guerre éclatée et tout fonctionne parfaitement.Comment séparer le chargeur de classe d'oreille et le chargeur de classe système dans JBoss 6?

Je rencontre des problèmes car l'application que j'essaie de déployer utilise des versions de bibliothèques tierces plus anciennes que celles que JBoss 6 inclut désormais par défaut. Le résultat de ceci est que j'obtiens des conflits de classloader partout et l'application ne commencera même pas.

Actuellement, j'ai essayé d'utiliser le JBoss Classloading Documentation ainsi que les peu de documentation pour jboss-classloading.xml et n'ai pas eu de succès.

Est-ce que quelqu'un a réussi à le faire avec succès? Si oui, comment l'avez-vous fait?

J'ai inclus une trace de pile ci-dessous au cas où elle fournirait des informations utiles.

Caused by: java.lang.Error: Error visiting "/C:/jboss6/server/default/deploy/app.war/WEB-INF/lib/jaxb-xjc-2.1.12.jar/1.0/com/sun/codemodel/JConditional.class" 
    at org.jboss.classloading.plugins.vfs.VFSResourceVisitor.visit(VFSResourceVisitor.java:268) [jboss-classloading-vfs.jar:2.2.0.Alpha9] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:407) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:395) [jboss-vfs.jar:3.0.0.CR5] 
    at org.jboss.classloading.plugins.vfs.VFSResourceVisitor.visit(VFSResourceVisitor.java:102) [jboss-classloading-vfs.jar:2.2.0.Alpha9] 
    at org.jboss.deployers.vfs.plugins.classloader.VFSDeploymentClassLoaderPolicyModule.visit(VFSDeploymentClassLoaderPolicyModule.java:181) [:2.2.0.Alpha8] 
    at org.jboss.scanning.plugins.DeploymentUnitScanner.scan(DeploymentUnitScanner.java:111) [:1.0.0.Alpha7] 
    at org.jboss.scanning.spi.helpers.UrlScanner.scan(UrlScanner.java:96) [:1.0.0.Alpha7] 
    at org.jboss.scanning.deployers.ScanningDeployer.deploy(ScanningDeployer.java:90) [:1.0.0.Alpha7] 
    at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) [:2.2.0.Alpha8] 
    ... 41 more 
+0

En dernier recours, vous pouvez utiliser Jarjar ou proguard à reconditionner vieux libs avec espace de noms a changé. – Vadzim

Répondre

0
+0

J'ai essayé java2ParentDelegation = false et cela n'a pas fonctionné. Je pense que cette partie du problème est que les fichiers jaxb-xjc sont dans le chargeur de classe bootstrap de JBoss, et il semble que cela ignore la plupart des directives de chargement de classes. – dskiles

+0

Ok voir si ce lien aide: http://community.jboss.org/message/568820 –

+0

Pas de chance là-bas. J'ai fini par aller avec JBoss 5.1. – dskiles

0

Nous utilisons les éléments suivants dans ear-deployer-jboss-beans.xml

<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">  
    <property name="isolated">true</property> 
</bean> 
+0

Pour information c'est le paramétrage par défaut de la configuration _standard_ JBoss 5, à l'opposé de la configuration _default_. Nous avons fait face au même problème. –