下图是这个文件的源代码。MyejbMd package myejb.maxuan.ejb.model;
import java.io.*;
public class MyejbMd implements Serializable {
public MyejbMd() { } public String dlDm; public String dlMc; public String action; public String getDlDm() { return dlDm; } public void setDlDm(String dlDm) { this.dlDm = dlDm; } public String getDlMc() { return dlMc; } public void setDlMc(String dlMc) { this.dlMc = dlMc; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); } }
然后我们需要编辑实体BEAN文件来引入模型和对数据库的基本操作。 Myejb.java文件 package myejb.maxuan.ejb;
import javax.ejb.*; import java.util.*; import myejb.maxuan.ejb.model.*;
public interface Myejb extends javax.ejb.EJBLocalObject { public String getDlDm(); public void setDlMc(String dlMc); public String getDlMc(); public MyejbMd getDlMd(); public void setMyejbMd(MyejbMd dlMd); }
MyejbBean.java文件 package myejb.maxuan.ejb;
import javax.ejb.*; import myejb.maxuan.ejb.model.*;
abstract public class MyejbBean implements EntityBean { EntityContext entityContext; public java.lang.String ejbCreate(java.lang.String dlDm) throws CreateException { setDlDm(dlDm); return null; } public void ejbPostCreate(java.lang.String dlDm) throws CreateException { /**@todo Complete this method*/ } public java.lang.String ejbCreate(java.lang.String dlDm, java.lang.String dlMc) throws CreateException { setDlDm(dlDm); setDlMc(dlMc); return null; } public void ejbPostCreate(java.lang.String dlDm, java.lang.String dlMc) throws CreateException { /**@todo Complete this method*/ } public void ejbRemove() throws RemoveException { /**@todo Complete this method*/ } public abstract void setDlDm(java.lang.String dlDm); public abstract void setDlMc(java.lang.String dlMc); public abstract java.lang.String getDlDm(); public abstract java.lang.String getDlMc(); public void ejbLoad() { /**@todo Complete this method*/ } public void ejbStore() { /**@todo Complete this method*/ } public void ejbActivate() { /**@todo Complete this method*/ } public void ejbPassivate() { /**@todo Complete this method*/ } public void unsetEntityContext() { this.entityContext = null; } public void setEntityContext(EntityContext entityContext) { this.entityContext = entityContext; } public myejb.maxuan.ejb.model.MyejbMd getDlMd() { MyejbMd dlMd = new MyejbMd(); dlMd.setDlDm(getDlDm()); dlMd.setDlMc(getDlMc()); return dlMd; } public void setMyejbMd(MyejbMd dlMd){ setDlMc(dlMd.getDlMc()); } }
接着我们要编辑最后的MyejbHome.java,双击左边树的EJB,在右边的面板中选中Myejb后点右键,在出现的菜单中选ADD,选取下面的Findel方法,如下图所示:
在接着出现的对话框中选择填写如下:
我们继续编辑MyejbHome.java文件 package myejb.maxuan.ejb; import javax.ejb.*; import java.util.*;
public interface MyejbHome extends javax.ejb.EJBLocalHome { public Myejb create(String dlDm) throws CreateException; public Myejb create(String dlDm, String dlMc) throws CreateException; public Collection findAll() throws FinderException; public Myejb findByPrimaryKey(String dlDm) throws FinderException; }
好了,实体BEAN文件我们已经写完了,现在我们编译一下,看有没有什么错误。 新手提示:在引入模型之前,我们需要先编译一下模型文件。 在接下来我们将写一个SessionBean。
我们继续来完成这个EJB,我们需要来写一个SessionBean,创建方法与创建实体BEAN一样,这里不在多说,只把它们的源码贴出,请大家仔细看,理解其中的意义! 这里我将SessionBean命名为MyejbWeb MyejbWeb.java package myejb.maxuan.ejb;
import javax.ejb.*; import java.util.*; import java.rmi.*; import java.sql.*; import java.io.*; import myejb.maxuan.ejb.model.*;
public interface MyejbWeb extends javax.ejb.EJBObject { public ArrayList getDlList() throws RemoteException; public MyejbMd getDl(String dlDm) throws RemoteException; }
MyejbWebBean.java package myejb.maxuan.ejb;
import javax.ejb.*; import java.util.*; import java.sql.*; import java.sql.Date; import java.io.InputStream; import java.io.OutputStream; import myejb.maxuan.ejb.model.*;
public class MyejbWebBean implements SessionBean { SessionContext sessionContext; public void ejbCreate() throws CreateException { /**@todo Complete this method*/ } public void ejbRemove() { /**@todo Complete this method*/ } public void ejbActivate() { /**@todo Complete this method*/ } public void ejbPassivate() { /**@todo Complete this method*/ } public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } public ArrayList getDlList(){ ArrayList dlList=new ArrayList(); try { javax.naming.Context context = new javax.naming.InitialContext(); MyejbHome dlHome= (MyejbHome)context.lookup("Myejb"); Collection dlCntl = dlHome.findAll(); Iterator iterator = dlCntl.iterator(); while(iterator.hasNext()){ Myejb myEjb = (Myejb) iterator.next(); MyejbMd dlMd = myEjb.getDlMd(); dlList.add(dlMd); } }catch (Exception ex) { throw new EJBException(ex); } return dlList; } public MyejbMd getDl(String dlDm){ MyejbMd dlMd=new MyejbMd(); try { javax.naming.Context context = new javax.naming.InitialContext(); MyejbHome dlHome= (MyejbHome)context.lookup("Myejb"); try{ Myejb myEjb = dlHome.findByPrimaryKey(dlDm); dlMd = myEjb.getDlMd(); }catch(FinderException fe){ dlMd=null; } }catch (Exception ex) { throw new EJBException(ex); } return dlMd; } }
MyejbWebHome.java package myejb.maxuan.ejb;
import javax.ejb.*; import java.util.*; import java.rmi.*;
public interface MyejbWebHome extends javax.ejb.EJBHome { public MyejbWeb create() throws CreateException, RemoteException; }
至此,我们的EJB部份已经完成,明天我们将继续写一个javabean来访问这个EJB!同时我们也会引入struts,请大家留意!
PS:虽然这只是一个简单的EJB网络应用结构,但却是建立J2EE大型应用的基础,希望大家多多交流!!
本文链接:http://www.blueidea.com/tech/program/2004/1603.asp
出处:蓝色理想
责任编辑:蓝色
上一页 [J2EE] 实战开发EJB [1] 下一页
◎进入论坛网络编程版块参加讨论
|