测试环境:
1、myEclipse
2、jboss4.2.3-GA
3、operationInterface.jar(接口和实体类的jar包,供需要远程调用的应用使用如Jdom.ear,)、Jdom.war(需要远程调用的应用)、ReadPlatform_Operation.ear(ejb模块)
其中ReadPlatform_Operation.ear中的BusinessSortKlevelMgrBean是有状态会话bean ,其他会话bean是无状态的。
测试过程:
1、将有状态会话bean部署到jboss,然后在开发环境中新建一个java类,建一个main函数,并远程调用BusinessSortKlevelMgrBean,测试成功。
2、将ReadPlatform_Operation.ear、Jdom.ear部署到jboss A。运行Jdom.ear,在实例化BusinessSortKlevelMgrBean时,报错:
java.lang.ClassCastException: $Proxy1069 cannot be cast to ejbModule.operation.keyword.BusinessSortKlevelMgr
这里的报错有点奇怪,$Proxy1069这个东西(是叫代理吗?)在jmx中找不到,另外,jmx中,显示无状态会话bean和有状态会话bean有点不同:
3、将ReadPlatform_Operation.ear部署到jboss A,将Jdom.ear部署到jboss B,当运行Jdom.ear,实例化BusinessSortKlevelMgrBean时,报错如下:
java.lang.ClassNotFoundException: No ClassLoaders found for: ejbModule.common.PageInfo
这里应该跟远程调用没关系,然后将工程的包ReadPlatform_Common.ejb.jar打入Jdom.ear后,重启部署,运行,这个错误消失了。在Jdom.ear运行过程中没用到PageInfo,但是不知道为什么报错。运行成功,能够远程调用有状态会话bean。
<!--StartFragment --><!--StartFragment -->如图:
到目前为止,关于有状态会话bean不能远程调用的问题就暂时解决了。
问题:为什么不能部署到同一台服务器呢?