服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

如何调用部署在其他服务器上的ejb?


  前段日子有网友问如何调用不在一个应用服务器上的ejb的问题,自己试验了一下,下面举个例子把这个问题说清楚:
  
  假设我们写了一个session bean,实现了一些业务方法,部署到了a服务器的sunone application server上,然后我们又写了一个jsp,并将其部署到了b服务器上的sunone application server中,该jsp将调用a服务器上那个session bean的一些业务方法,这其中需要注意两点:
  
  1、在使用jndi lookup a服务器上的那个session bean的时候,需要如下配置环境变量:
  properties env = new properties();
  env.put("java.naming.factory.initial",
  "com.sun.jndi.cosnaming.cnctxfactory");
  env.put("java.naming.provider.url", "iiop://192.168.0.2:3700");
  其中192.168.0.2就是a服务器的ip地址,当然也可以写a服务器的主机名
  当然,有些文章或书上可能是这种写法,也是可以的:
  hashtable env = new hashtable();
  env.put(context.initial_context_factory, "com.sun.jndi.cosnaming.cnctxfactory");
  env.put(context.provider_url, "iiop://192.168.0.2:3700");
  
  2、众所周知,远程调用需要在调用端有被调用类的stub类,对应到j2ee应用中,也就是ejb的client类,一般来说,这个类都是在部署我们的j2ee应用时自动生成的,所以需要将包含这个类的jar包放到web-inf/lib目录下(如果是使用一个web app来作为客户端调用ejb)以便应用服务器能找到这些stub类并正确还原出调用对象来
  
  明确了以上两点后,基本上就没有问题了,有兴趣的朋友可以自己试验一下

扫描关注微信公众号