客户端应用访问EJB,服务器为WAS 6.1

前提:服务器端EAR包发布正确,必要的接口类已经被导出.

客户端设置:假设客户端为一个web应用,名称为test。

在WEB-INF里面的"ibm-web-bnd.xmi"里面增加如下代码:

<ejbRefBindings xmi:id="EnterpriseBeanBinding_1238728565453"
        jndiName="ejb/com/ncut/salab/epc/queryservice/SubscribeHome">
        <bindingEjbRef href="WEB-INF/web.xml#EjbRef_1237982284250" />
 </ejbRefBindings>

 其中“EnterpriseBeanBinding_1238728565453”,是需要在client 应用里面使用的EJB,具体信息能够在服务器端的ejb-jar.xml找到,copy过来就可以了。

然后再web.xml里面添加:

<ejb-ref id="EjbRef_1237982284250">
  		<ejb-ref-name>ejb/Subscribe</ejb-ref-name>
  		<ejb-ref-type>Session</ejb-ref-type>
  		<home>com.ncut.salab.epc.queryservice.SubscribeHome</home>
  		<remote>com.ncut.salab.epc.queryservice.Subscribe</remote>
</ejb-ref>

 这个的意思是添加一个ejb引用。注意这里面的id要和上面的<bindingEjbRef/>里面的一致。

访问代码如下:

Context ic = new InitialContext();
		Object obj = ic.lookup("java:comp/env/ejb/Subscribe");
		SubscribeHome home = (SubscribeHome)PortableRemoteObject.narrow(obj, SubscribeHome.class);
		Subscribe subscriber = home.create();
		if(subscriber != null){
			System.out.println("JNID find successfully !!");
		}

 如果客户端和服务器端都部署在一个JVM里面的话,context用默认的就可以,否则的话需要使用相应服务器的参数设置context。

相关推荐