问题描述
最近在看ejb3.也不管以后用不用,就看看。一个问题是,我写的一个客户端去访问容器中的sessionbean,在本机时访问时成功的,容器和客户端都是在同一个虚拟机上跑,我觉得这样理所应当。我分开来执行,把客户端放到同一个局域网的别的机器上,执行就出错了,所需的jar包都是已经放过去了的。ejb的客户端只能和容器同一个虚拟机?另外,客户端里的代码有SimpleBeanLocalbean=(SimpleBeanLocal)ctx.lookup("simpleBean");去jndi查找相应的bean来提供服务,这个jndi是在容器里提供的吧?代码里没指定容器的地址端口,怎么能找到呢?同一个虚拟机还无所谓,要是在不同的机器上跑,我想应该指定的吧?三个问号三个问题,望指教!谢谢~~
解决方案
解决方案二:
查了下,可以配置这个地址。jndi.properties~~!
解决方案三:
在同一个JVM进程中运行的话,sessionbean只要标注@Local就可以了,如果在不同的JVM中或者是在不同的服务器上运行那必须使用@Remote标注为远程接口。服务端把sessionbean的接口打成jar包给客户端。
解决方案四:
楼主研究一下@Remote@Local
解决方案五:
我也正在学习,大家一同进步哈~~
时间: 2024-10-25 19:17:41