websphere6.1开发、部署、远程调用EJB2.0

开发工具是IBM RAD 7.5.4。

WAS版本6.1。

EJB版本2.0。


开发过程如图:





新建完后,工程结构如下:




再新建SessionBean




下一步




完成。

如图:




修改几个文件:

package com.ejb;

import static java.lang.System.out;

/**
 * Bean implementation class for Enterprise Bean: HelloSession
 */
public class HelloSessionBean implements javax.ejb.SessionBean {

	static final long serialVersionUID = 3206093459760846163L;
	private javax.ejb.SessionContext mySessionCtx;

	/**
	 * getSessionContext
	 */
	public javax.ejb.SessionContext getSessionContext() {
		return mySessionCtx;
	}

	/**
	 * setSessionContext
	 */
	public void setSessionContext(javax.ejb.SessionContext ctx) {
		mySessionCtx = ctx;
	}

	/**
	 * ejbCreate
	 */
	public void ejbCreate() throws javax.ejb.CreateException {
		out.println("ejbCreate");
	}

	/**
	 * ejbActivate
	 */
	public void ejbActivate() {
		out.println("ejbActivate");
	}

	/**
	 * ejbPassivate
	 */
	public void ejbPassivate() {
		out.println("ejbPassivate");
	}

	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
		out.println("ejbRemove");
	}

	public String sayHello(String someOne) {
		out.println("sayHello");
		return "Hello, " + someOne + "!";
	}
}

package com.ejb;

import java.rmi.RemoteException;

/**
 * Remote interface for Enterprise Bean: HelloSession
 */
public interface HelloSession extends javax.ejb.EJBObject {
	public String sayHello(String someOne) throws RemoteException;
}

增加一个测试类:

package com.ejb;

import java.rmi.RemoteException;
import java.util.Properties;

import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

public class TestClient {

	/**
	 * @param args
	 * @throws NamingException
	 * @throws CreateException
	 * @throws RemoteException
	 */
	public static void main(String[] args) throws NamingException,
			RemoteException, CreateException {
		Properties props = new Properties();
		props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
		props.setProperty(Context.PROVIDER_URL, "iiop://127.0.0.1:2810/");
		Context ctx = new InitialContext(props);
		Object objref = ctx.lookup("ejb/com/ejb/HelloSessionHome");
		HelloSessionHome home = (HelloSessionHome) PortableRemoteObject.narrow(objref, HelloSessionHome.class);
		HelloSession hello = home.create();
		String msg = hello.sayHello("ejb");
		System.out.println(msg);

	}

}

上面jndi的名字,可以在ibm-ejb-jar-bnd.xmi中找到,其内容:

<?xml version="1.0" encoding="UTF-8"?>
<ejbbnd:EJBJarBinding xmi:version="2.0"
	xmlns:xmi="http://www.omg.org/XMI" xmlns:ejb="ejb.xmi" xmlns:ejbbnd="ejbbnd.xmi"
	xmi:id="EJBJarBinding_1393691689296">
	<ejbJar href="META-INF/ejb-jar.xml#ejb-jar_ID" />
	<ejbBindings xmi:id="EnterpriseBeanBinding_1393691689296"
		jndiName="ejb/com/ejb/HelloSessionHome">
		<enterpriseBean xmi:type="ejb:Session"
			href="META-INF/ejb-jar.xml#HelloSession" />
	</ejbBindings>
</ejbbnd:EJBJarBinding>

ejb-jar.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_ID">
	<display-name>EJB</display-name>
	<enterprise-beans>
		<session id="HelloSession">
			<ejb-name>HelloSession</ejb-name>
			<home>com.ejb.HelloSessionHome</home>
			<remote>com.ejb.HelloSession</remote>
			<ejb-class>com.ejb.HelloSessionBean
			</ejb-class>
			<session-type>Stateless</session-type>
			<transaction-type>Bean</transaction-type>
		</session>
	</enterprise-beans>
	<ejb-client-jar>EJBClient.jar</ejb-client-jar>
</ejb-jar>

上面两个文件内容,都是自动生成的,无需修改。如果知道怎么改,也可以改。


然后把EJBSystem加到WAS6.1里去,启动WAS,会生成一些java文件,如图:



此时,运行TestClient,会报错,解决办法,见http://blog.csdn.net/feier7501/article/details/20247219


上面的问题,解决后,就可以测试成功了。上面的URL里的端口,一般是2809,我这里的是2810。反正就从2809开始往上加1。


服务端输出:

[14-3-2 0:44:04:890 CST] 00000041 SystemOut     O ejbCreate
[14-3-2 0:44:04:906 CST] 00000041 SystemOut     O sayHello

客户端输出:

Hello, ejb!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值