读书人

调度ear和jar的疑问

发布时间: 2012-10-20 14:12:48 作者: rapoo

部署ear和jar的疑问

?? 今天测试过找到了些头绪。

?? 情况

?? 在jboss下有三个包,A.jar, B.ear, C.ear.三者的关系:B.ear是主工程,需要调用A.jar做鉴权,同时需要调用C.ear处理内容管理的业务。而这三个包中,都有一个Ejb3Factory的类,但是不同步(事实上是应该同步的。),这个类的作用是实例化会话bean用的,包括实例化会话bean的远程接口和本地接口。其中还有common.jar,这个包是包含了公共的会话bean、工具类、公共实体类,同时B.ear, C.ear都import了这个包,另外A.jar理论上来说也应该import这个包,实际上也算是import了,但是版本不同,少了getLocalEJBSessionBean(String moduleName,String ejbSessionBeanName)

?? 其当B.ear调用C.ear处理业务的时候,C.ear需要调用本身的Ejb3Factory进行实例化一些持久层的会话bean,这个时候就报错,找不到Ejb3Factory.getLocalEJBSessionBean方法了。

??? 后来测试:1、单独将C.ear部署到jboss,单元测试时,能够调用,并能返回正确的值。

???????????????????2、将B.ear、C.ear部署到jboss,单元测试,调用的是C.ear的Ejb3Factory.getLocalEJBSessionBean方法,能返回正确的值。

?????????????????? 3、将A.jar, B.ear, C.ear部署到jboss,单元测试,报错,找不到Ejb3Factory.getLocalEJBSessionBean方法。

?????????????????? 4、将common.jar、C.ear部署到jboss,能够调用,并能返回正确的值。但是后台打印的信息显示C.ear调用本身的Ejb3Factory进行实例化一些持久层的会话bean时,这个Ejb3Factory是属于common.jar的。

?

?? 猜论:部署后,ear包在寻找javabean的时候,优先考虑jar包的,而不是ear包的。

??????????? 实际上呢,需要继续测试才知道。

?

后续:

??? 测试:将A.jar, common.jar, C.ear部署到jboss中,单元测试,能够调用,并能返回正确的值,后台显示的是调用了common.jar的Ejb3Factory。这里猜测到,部署的顺序是按第一个字母来排的。

??????????? 修改A.jar, common.jar的名称,将其首字母改为s、t(排在R的后面),测试发现,还是调用了原来的A.jar的Ejb3Factory。。

??

读书人网 >软件架构设计

热点推荐