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

来源:互联网 发布:mac onenote 文字识别 编辑:程序博客网 时间:2024/05/17 07:13

开发工具是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 0
原创粉丝点击