部署至 JBoss 時常遇到應用自帶 JAR 與伺服器內建 JAR 版本衝突,或應用間 JAR 衝突。JBoss 提供兩種隔離機制:
修改部署描述檔定義 <loader-repository>,指定唯一 ObjectName(如 com.example:archive=unique-archive-name):
META-INF/jboss-app.xmlWEB-INF/jboss-web.xml(JBoss 4.2.1+ 需移除 <class-loading> 包裹)META-INF/jboss-service.xml巢狀部署包(如 EAR 含 WAR/SAR)僅最上層描述檔生效。
在 <loader-repository-config> 設定 Java2ParentDelegation=false,讓應用優先載入自身類別:
jboss-app.xml、jboss-web.xml、jboss-service.xml 均支援此設定.war 另需在 <class-loading> 設 Java2ClassLoadingCompliance="false"WEB-INF/lib (WAR)server/default/lib JARserver/default/deploy/jbossweb-tomcatxxx.sar) 與 server/default/lib 混合相關參考:淺談如何將 EJB 部署在 JBoss 下、Apache HTTP Server 與 Tomcat/JBoss 配置 等。