jboss3.0.1部署的问题

02-08-27 封叶

我想问下关于部署一个application的问题

包含4个ejb jar和一个war

但问题是,如果ejb jar中不包含war中WEB-INF下的所有class,就会报一些ClassNotFound的Excepion,不管这些类实际有没有import或者invoke

并且发现,似乎只要将一个ejb jar中包含所有的class就可以部署成功

所以想问一下jboss下部署时的机制,是否是类似所有ejb是共享一个classpath,war是另外的?

Yukin
2002-08-27 19:05

jboss部署一个应用时,先是进行ejb的部署,等完成后,才进行war的部署。部署ejb时,war下的classes的类还不能被加载。

封叶
2002-08-27 19:26

恩,这个我知道,我想它也应该是象weblogic等其他中间件的classloader一样,ejb的loader级别高些,web application的低些

但是,我说的是ejb jar必须包含所有的class文件,而很多的是ejb部署不需要用到的

并且部署结束后,应该说web中的也部署完成了,但是访问时却仍然好像是在访问ejb jar中

banq
2002-08-27 21:13

EJB.jar会将其所用的包都包括在内,ejb-jar.xml要保证正确。

.war和ejb.jar联系靠JNDI 理解这样的关系,你再仔细检查每一步。

封叶
2002-08-28 13:21

唉,前面我没说,关键代码不是我写的,并且以前不是用的jboss,是从weblogic往jboss上移植,这些代码的封装性比较差,乱七八糟的回调很多

问题也找到了

将ejb jar中的其余所有不相关的类一个一个都删清之后,就没问题了

由此发现一个jboss3.0.1部署的特性

部署结束之后servlet访问时它会优先从ejb jar中去找,如果发现了就直接调用jar中的class,但如果该class又调用了别的class,而在所有ejb jar中没有找到的话,就会报NotFound的ex

也就是说ejb中的class无法访问jar外的war中的文件,我想应该是和classLoader的等级有关系,ejb的高,而war的低

当然还不知道正确与否,谢谢各位回答我的问题

2Go 1 2 下一页