JBoss中的部署加载为7

时间:2014-02-06 18:46:47

标签: jsf jboss jboss7.x jsf-2.2

阅读redhat(https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Development_Guide/chap-Class_Loading_and_Modules.html)的文档我发现了应用服务器类加载器 加载用于避免任何冲突的类时有一个优先级列表 已加载的类,顺序如下

  • 隐式依赖。 这些是JBoss企业应用程序平台6自动添加的依赖项,例如JAVA EE API。这些依赖项具有最高的类加载器优先级,因为它们包含JBoss企业应用程序平台6提供的通用功能和API。 有关每个隐式依赖关系的完整详细信息,请参见第3.7.1节“隐式模块依赖关系”。
  • 明确的依赖关系。 这些是在应用程序配置中手动添加的依赖项。这可以使用应用程序的MANIFEST.MF文件或新的可选JBoss部署描述符jboss-deployment-structure.xml文件来完成。 请参阅第3.2节“向部署添加显式模块依赖性”以了解如何添加显式依赖项。
  • 本地资源。 在部署本身内打包的类文件,例如来自WAR文件的WEB-INF / classes或WEB-INF / lib目录。
  • 部署间依赖关系。 这些依赖于EAR部署中的其他部署。这可以包括EAR的lib目录中的类或其他EJB jar中定义的类。

我尝试在我的EAR存档中使用JSF webapp(富面)来测试此顺序 我的耳朵如下:

sample.ear

--- sport.war

--- mysql.jar

--- lib

  • Usescase 1 :我在webapp下添加了JSF jar( sport.war / WEB-INF / lib ):[ jsf-api-2.1。 14.jar / jsf-impl-2.1.14.jar / portletbridge-api-3.1.2.Final.jar / portletbridge-impl-3.1.2.Final.jar ],jboss服务器启动良好,我没有任何例外
  • Usescase2 :我在sample.ear / lib下添加了JSF jar ==>当我启动jboss服务器时,我得到一个异常(听起来应用服务器加载了jboss提供的模块JSF 隐式依赖而不是我的 sample.ear / lib )

我无法理解为什么在 1srt使用 2sd用例 时,类加载优先级不受尊重是否尊重类加载优先级

请你澄清这一点

ENV

  1. JBoss EAP 6.1.0.GA(AS 7.2.0.Final-redhat-8)
  2. JDK 6

1 个答案:

答案 0 :(得分:0)

如果没有看到您所获得的确切部署异常,则很难诊断出该问题。

  • 在第一个场景中,打包的库加载到与应用程序相同的类加载器中。

  • 在第二个场景中,打包的库被加载到一个单独的模块和类加载器中。

以上意味着,您所遇到的部署问题不一定与Class Loading Precedence相关,它们也可能与Class Loading Isolation有关。

此外,Jboss和EAP已经预装了JSF实现,并且由于版本不匹配,您可能会遇到冲突

如果你想在JBoss上替换默认的JSF实现,那么更好的选择就是将新的JSF实现放在静态模块中,就像默认模块一样,让Jboss按需加载它。 / p>