最近在看ejb3.也不管以后用不用,就看看。一个问题是,我写的一个客户端去访问容器中的session bean,在本机时访问时成功的,容器和客户端都是在同一个虚拟机上跑,我觉得这样理所应当。我分开来执行,把客户端放到同一个局域网的别的机器上,执行就出错了,所需的jar包都是已经放过去了的。ejb的客户端只能和容器同一个虚拟机?
另外,客户端里的代码有SimpleBeanLocal bean = (SimpleBeanLocal) ctx.lookup("simpleBean");
去jndi查找相应的bean来提供服务,这个jndi是在容器里提供的吧?
代码里没指定容器的地址端口,怎么能找到呢?同一个虚拟机还无所谓,要是在不同的机器上跑,我想应该指定的吧?三个问号三个问题,望指教!谢谢~~

解决方案 »

  1.   

    查了下,可以配置这个地址。jndi.properties~~!
      

  2.   

    在同一个 JVM 进程中运行的话,session bean 只要标注 @Local 就可以了,如果在不同的 JVM 中或者是在不同的服务器上运行那必须使用 @Remote 标注为远程接口。服务端把 session bean 的接口打成 jar 包给客户端。
      

  3.   

    楼主研究一下@Remote  @Local