程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JBoss的兩種類隔離機制配置說明

JBoss的兩種類隔離機制配置說明

編輯:J2EE

本文來自tiger888的博客,原文標題為《JBoss類隔離》。

這幾天,項目組在部署JBOSS時遇到不少問題,都是由於JBOSS的類裝載問題引起,特發表一篇BLOG詳細說一下JBOSS的類隔離機制。

在部署應用到JBoss服務器時,通常見到的問題就是應用所帶的jar包與容器自己的jar包版本不同導致的沖突,以及應用間jar包導致的沖突,JBOSS提供兩種隔離機制:

1. 部署包之間的隔離

2. 覆蓋JBoss Server的類的隔離

對於這兩種隔離,通常是修改部署文件來進行,以下進行說明:

部署包之間的隔離機制

對於.ear部署包,我們應該修改jboss-app.XML如下:

  1. <jboss-app>
  2. <loader-repository>
  3. com.example:archive=unique-archive-name
  4. </loader-repository>
  5. </jboss-app>

對於.war部署包,在jboss-web.XML中定義如下:

  1. <jboss-web>
  2. <class-loading>
  3. <loader-repository>
  4. com.example:archive=unique-archive-name
  5. </loader-repository>
  6. </class-loading>
  7. </jboss-web>

在JBoss 4.2.1中<class-loading>不再被支持,而4.0.5兩種方式都支持,直接修改為:

  1. <jboss-web>
  2. <loader-repository>
  3. com.example:archive=unique-archive-name
  4. </loader-repository>
  5. </jboss-web>

在.sar部署包中,在jboss-service.XML定義如下:

  1. <server>
  2. <loader-repository>
  3. com.example:archive=unique-archive-name
  4. </loader-repository>
  5. </server>

示例中,com.example:archive=unique-archive-name代表jar倉庫的對象名objectName ,其中,com.example可以隨意取,unique-archive-name 就用部署包的名字即可,例如com.example:archive=helloworld.sar,保證這一串唯一即可。而com.example將出現在JMX-Console (http://localhost:8080/jmx-console/)列出的節點上(每個節點為一個LoaderRepository domain:jar參考的域概念,其實就是一個所有jar容器倉庫的分組概念)

對於部署包內內嵌了其他部署包,只有最上層的部署描述配置才起作用,例如:

.ear中包含了.sar和.war,這只有.ear中的META-INF/jboss-app.XML 中定義的隔離范圍才會起作用。

.sar中包含了.war,則只有.sar META-INF/jboss-service.XML中定義的隔離范圍才起作用

覆蓋JBoss Server的類的隔離

對於jboss-app.XML:

  1. <jboss-app>
  2. <loader-repository>
  3. com.example:archive=unique-archive-name
  4. <loader-repository-config>
  5. Java2ParentDelegation=false
  6. </loader-repository-config>
  7. </loader-repository>
  8. </jboss-app>

對於jboss-web.XML:

  1. <jboss-web>
  2. <class-loading Java2ClassLoadingCompliance="false">
  3. <loader-repository>
  4. com.example:archive=unique-archive-name
  5. <loader-repository-config>Java2ParentDelegation=false</loader-repository-config>
  6. </loader-repository>
  7. </class-loading>
  8. ...

jboss-service.XML:

  1. <server>
  2. <loader-repository>
  3. com.example:archive=unique-archive-name
  4. <loader-repository-config>Java2ParentDelegation=false</loader-repository-config>
  5. </loader-repository>
  6. ...

  • 淺談如何將EJB部署在Jboss下
  • apache HTTPServer與Tomcat/JBoss的配置
  • 紅帽升級JBoss 意在Java中間件雲平台
  • 運行多個JBoss在同一台機器的配置方法介
  • Java平台的企業級Ruby解決方案:JBoss的T
EAR or WAR的類將按照以下順序裝載:

1. WEB-INF/lib (for WARs)

2. server/default/lib下的jar包

3. tomcat的jar包server/default/deploy/jbossweb-tomcatxxx.sar,與server/default/lib將混合在一起,不區別順序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved