JBoss的两种类隔离机制配置说明
创始人
2024-06-21 03:51:04
0

本文来自tiger888的博客,原文标题为《JBoss类隔离》。

这几天,项目组在部署JBOSS时遇到不少问题,都是由于JBOSS的类装载问题引起,特发表一篇BLOG详细说一下JBOSS的类隔离机制。

在部署应用到JBoss服务器时,通常见到的问题就是应用所带的jar包与容器自己的jar包版本不同导致的冲突,以及应用间jar包导致的冲突,JBOSS提供两种隔离机制:

1. 部署包之间的隔离

2. 覆盖JBoss Server的类的隔离

对于这两种隔离,通常是修改部署文件来进行,以下进行说明:

部署包之间的隔离机制

对于.ear部署包,我们应该修改jboss-app.xml如下:

  1.     
  2.         
  3.    com.example:archive=unique-archive-name     
  4.         
  5.     
  6.   

对于.war部署包,在jboss-web.xml中定义如下:

  1.     
  2.         
  3.            
  4.       com.example:archive=unique-archive-name     
  5.            
  6.        
  7.      
  8.   

在JBoss 4.2.1中不再被支持,而4.0.5两种方式都支持,直接修改为:

  1.     
  2.         
  3.       com.example:archive=unique-archive-name     
  4.         
  5.      
  6.   

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

  1.     
  2.          
  3.           com.example:archive=unique-archive-name     
  4.          
  5.     
  6.   

示例中,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.     
  2.        
  3.   com.example:archive=unique-archive-name     
  4.           
  5.      java2ParentDelegation=false     
  6.           
  7.       
  8.     
  9.   

对于jboss-web.xml:

  1.     
  2.      
  3.      
  4.         com.example:archive=unique-archive-name    
  5.         java2ParentDelegation=false    
  6.      
  7.      
  8. ...    
  9.    

jboss-service.xml:

  1.     
  2.      
  3.         com.example:archive=unique-archive-name    
  4.         java2ParentDelegation=false    
  5.      
  6.  ...    
  7.   

#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将混合在一起,不区别顺序。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...