歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
這幾天,項目組在部署JBOSS時遇到不少問題,都是由於JBOSS的類裝載問題引起,特發表一篇BLOG詳細說一下JBOSS的類隔離機制.

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

1. 部署包之間的隔離

2. 覆蓋JBoss Server的類的隔離

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

部署包之間的隔離機制

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

<jboss-app>

<loader-repository>

com.example:archive=unique-archive-name

</loader-repository>

</jboss-app>

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

<jboss-web>

<class-loading>

<loader-repository>

com.example:archive=unique-archive-name

</loader-repository>

</class-loading>

</jboss-web>

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

<jboss-web>

<loader-repository>

com.example:archive=unique-archive-name

</loader-repository>

</jboss-web>

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

<server>

<loader-repository>

com.example:archive=unique-archive-name

</loader-repository>

</server>

示例中,com.example:archive=unique-archive-name代表jar倉庫的對象名objectName ,其中,com.example可以隨意取,unique-archive-name 就用部署包的名字即可,例如com.example:archive=helloworld.sar,保證這一串唯一即可.而com.example將出現在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:

<jboss-app>

<loader-repository>

com.example:archive=unique-archive-name

<loader-repository-config>

java2ParentDelegation=false



</loader-repository-config>

</loader-repository>

</jboss-app>

對於jboss-web.xml:

<jboss-web>

<class-loading java2ClassLoadingCompliance="false">

<loader-repository>

com.example:archive=unique-archive-name

<loader-repository-config>java2ParentDelegation=false</loader-repository-config>

</loader-repository>

</class-loading>



jboss-service.xml:

<server>

<loader-repository>

com.example:archive=unique-archive-name

<loader-repository-config>java2ParentDelegation=false</loader-repository-config>

</loader-repository>



淺談如何將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將混合在一起,不區別順序.


[火星人 ] JBoss的兩種類隔離機制配置說明已經有989次圍觀

http://coctec.com/docs/java/show-post-59817.html