SessionBean的学习:
用于测试EJB的client代码:
package cn.choelea.ejb; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; public class HelloClient { public HelloClient() {} public static void main(String[] args) throws Exception { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001"); Context ctx=new InitialContext(properties ); Object obj = ctx.lookup("HelloWorldEJB"); HelloWorldHome home = (HelloWorldHome) javax.rmi.PortableRemoteObject.narrow(obj, HelloWorldHome.class); HelloWorld hello = home.create(); System.out.println(hello.helloWorld()); } }
客户端可以是个简单的java application. classpath 中要有服务器端打包的EJB的jar文件(或者只导入两个接口类即可)和weblogic.jar
Weblogic Server端EJB
HelloWorld 远程接口:
package cn.choelea.ejb; import java.rmi.RemoteException; import javax.ejb.EJBObject; public interface HelloWorld extends EJBObject{ public String helloWorld() throws RemoteException; }
Home 接口:
package cn.choelea.ejb; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface HelloWorldHome extends EJBHome{ public HelloWorld create() throws CreateException,RemoteException; }
EJB 类:
package cn.choelea.ejb; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.EJBHome; import javax.ejb.EJBObject; import javax.ejb.Handle; import javax.ejb.RemoveException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class HelloWorldBean implements SessionBean,HelloWorld{ private SessionContext ctx; public EJBHome getEJBHome() throws RemoteException { // TODO Auto-generated method stub return null; } public void ejbCreate(){} public Handle getHandle() throws RemoteException { // TODO Auto-generated method stub return null; } public Object getPrimaryKey() throws RemoteException { // TODO Auto-generated method stub return null; } public boolean isIdentical(EJBObject arg0) throws RemoteException { // TODO Auto-generated method stub return false; } public void remove() throws RemoteException, RemoveException { // TODO Auto-generated method stub } public void ejbActivate() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void ejbPassivate() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void ejbRemove() throws EJBException, RemoteException { // TODO Auto-generated method stub } public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { ctx = arg0; } public String helloWorld() throws RemoteException { return "Hello World. Welcome to EJB!"; } }
EJB部署文件:(ejb-jar.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar id="ejb-jar_ID"> <enterprise-beans> <session> <ejb-name>HelloWorld</ejb-name> <home>cn.choelea.ejb.HelloWorldHome</home> <remote>cn.choelea.ejb.HelloWorld</remote> <ejb-class>cn.choelea.ejb.HelloWorldBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>
weblogic-ejb-jar.xml 描述文件
<?xml version="1.0"?> <!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd"> <!-- Sample MessageDriven bean Weblogic deployment descriptor --> <weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>HelloWorld</ejb-name> <jndi-name>HelloWorldEJB</jndi-name> </weblogic-enterprise-bean> </weblogic-ejb-jar>