JBoss的两种类隔离机制配置说明

 
   | |

导读:本文介绍了在部署应用到JBoss服务器时,为避免应用所带的jar包与容器自己的jar包版本不同导致的冲突以及应用间jar包导致的冲突,JBOSS提供两种隔离机制。

关键词:JBOSS 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>     ...  
   

    1. WEB-INF/lib (for WARs)

  2. server/default/lib下的jar包

  3. tomcat的jar包server/default/deploy/jbossweb-tomcatxxx.sar,与server/default/lib将混合在一起,不区别顺序。


JBoss 4.0简化了中间件的开发
 JBoss 4.0 简化了中间件的开发(一)
 JBoss 4.0 简化了中间件的开发(二)
 JBoss用EAP 5.0实现组件化
 Java平台的企业级Ruby解决方案:JBoss的TorqueBox
 JBoss的两种类隔离机制配置说明
 浅谈如何将EJB部署在Jboss下
 配置JBoss如何从数据库里读取信息

原文出处:http://developer.51cto.com/art/201001/179092.htm
 
来源:51cto    作者:tiger888    
 
 
 
 
 

JBoss Web服务

 
在每年的用户会议上,凭借其企业级应用平台(EAP)5.0,红帽的JBoss集团围绕核心JBoss微容器进行努力,已经可以与各种编程模型对接……
 
数据服务存在的问题造成SOA性能受到影响。红帽公司的Craig Muzilla对一些常见的数据服务问题以及关于开源治理的未来目标进行了探讨。
 
如果你正在吹捧面向服务的架构,Frank Cohen相信你将需要改变一下步调才能成功地从实验品走向的产品。他的项目FastSOA是一种不同的架构,它利用了XML查询语言(XML Query Language,XQuery),并在中间层使用了本地XML数据库来处理J2EE应用服务器的可扩展性和性能问题。
 
在JavaOne大会上,JBoss公司产品主管Pierre Fricke并没有谈与Red Hat公司合并一事。他谈到了支持新的Java EE5的第一版JBoss Seam,并且他还谈到了Seam与Ajax的前景以及JBoss将加入NetBeans社区。
 
Linux的先驱者Red Hat收购了开放源码中间件供应商Jboss。在上周的两家公司的CEO的远程电话会议上发布了这个合并的消息,这将会形成一个主要的新SOA供应商。

热门技术手册排行

 

随着开源技术越来越成熟,一个稍有开发经验的人通过学习就可以用开源的产品和技术构建一套可用的系统。对于从事软件开发的人员,尤其是对Java或动态语言相关领域的人来说,“开源”也许是他们最喜爱的单词。但是,很多时候我们需要的不仅仅是一个可用的系统,而是希望这个系统开发更简易、性能更高和扩展性更好等。这确实是一个令人头痛的问题。本指南很多地方都是点到为止,要深入了解相关信息的读者请借助参考资料、网站等自行挖掘。

 

本专题分六部分探讨SOA设计模式,当初设计面向服务架构的一大初衷就是降低服务间耦合度,由此提高服务的灵活性和自由度。

 

业务流程管理(business process management,bpm)不是一个新概念,甚至不是一个新名词。它是从相关的业务流程变革领域,如业务流程改进(bpi)、业务流程重组(bpr)、业务流程革新中发展起来的。流程管理技术也是从早期的工作流管理、eai、流程自动化、流程集成、流程建模、流程优化等技术中发展起来的。

 

TOAGF是一个架构框架,简而言之,TOGAF是一种协助发展,验收,运行,使用,和维护架构的工具。它是基于一个迭代(Iterative)的过程模型,支持最佳实践和一套可重用的现有架构资产。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

Mashup是一个非常cool的新的应用程序种类。如果你想真正的了解它们,我们需要回过头来看看你现在的计算机,其实它就是一个非常好的帮助你理解mashup的模型。现在开源的操作系统无疑是非常好的apis的集合或应用程序编程接口,帮助开发者去构建其应用程序。计算机本身也是一个很好的为用户提供接口的例子,键盘和鼠标可以被理解为你通过计算机的接口而使用的不同的应用程序。本技术手册为读者提供了一些相关信息,如果需要深入了解mashup,读者可以借助其他参考资源。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录