如何使用Wildfly提供的不同JAR版本将EAR部署到Wildfly?

时间:2015-07-14 23:58:52

标签: java jboss classloader wildfly wildfly-8

考虑这个用例:

我们部署到Wildfly 8.2,其中包含许多依赖项,包括应用程序服务器本身在类加载器中。例子包括像HttpClient这样的东西。为了在我的示例中说明这一点,我们将其称为:libaryX-v1.jar

我们将多个EAR部署到同一个安装中,这些安装由我们组织内的多个团队提供,这些团队处于不同的发布和预算周期。

TeamA.ear需要libraryX-v1.jar,并且已经过该版本的全面测试和认证。

TeamB.ear需要libraryX-v2.jar,特别是满足此团队要求的新功能,这些要求未包含在任何其他版本中。

我们如何将这两个EAR部署到Wildfly?

如果TeamA有预算要测试并使用librayX-v2.jar获得认证,那么显而易见的解决方案就是在Wildfly中升级该模块。

当我们将libraryX-v2.jar添加到TeamB.ear时,我们会遇到以下异常:

java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.Example.<init>(Lorg/whatever/sharedClass;)V" 
the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, com/company/teamB/exampleService, and 
the class loader (instance of org/jboss/modules/ModuleClassLoader) for the method's defining class, org/apache/Example, 
have different Class objects for the type org/whatever/sharedClass used in the signature

0 个答案:

没有答案