JBoss的两种类隔离机制配置说明
来源:互联网 发布:python快速入门 pdf 编辑:程序博客网 时间:2024/06/06 08:44
本文来自tiger888的博客,原文标题为《JBoss类隔离》。
这几天,项目组在部署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 (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:
- <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的..
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的两种类隔离机制配置说明
- windows下JBOSS的安装配置说明
- jboss部署配置说明
- Jboss配置HTTPS说明
- SQL Server 2005两种快照隔离机制的比较
- SQL Server 2005两种快照隔离机制的比较
- jboss-web.xml 配置说明
- jboss-web.xml 配置说明
- jboss-web.xml 配置说明
- Jboss配置HTTPS说明(转)
- jboss-web.xml 配置说明
- jboss的目录说明
- 数据库的隔离机制
- JBoss的部署机制
- 两种类型的注释
- 两种类型的员工
- Cookie的两种类型
- dstream的两种类型
- hdu 1253 胜利大逃亡
- C++初始化与赋值的区别
- 用socket通讯执行远程命令-linux实例
- 判断dataset是否为空 &dataset取值示例
- cruisecontrol与SVN集成_config.xml build.xml_http://meetrice.javaeye.com/blog/73636
- JBoss的两种类隔离机制配置说明
- Boost和STL的几种智能指针
- 【转】想成为电子工程师的请看
- 从基础开始!!
- Linux的inode、软链接、硬链接
- Using CruiseControl with Subversion_http://raibledesigns.com/rd/entry/using_cruisecontrol_with_subversion
- 协议栈对GSO和TSO,UFO的支持
- 批处理代码遇到路径中间有空格怎么办?
- svnant_http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=1731