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 下一页