0
点赞
收藏
分享

微信扫一扫

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

花明 2023-04-26 阅读 49


开发工具是IBM RAD 7.5.4。

WAS版本6.1。

EJB版本2.0。


开发过程如图:

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


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


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


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


再新建SessionBean


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


下一步


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


完成。

如图:


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


修改几个文件:

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文件,如图:

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

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


此时,运行TestClient,会报错,解决办法


上面的问题,解决后,就可以测试成功了。上面的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 条评论