在建完数据库之后,我们就要开始进行EJB的开发了,先建个lib的目录,将一些要用的库文件放到其中,首先就把mysql的JDBC驱动放进去吧。然后解压下载的struts包,将lib目录下的所有jar文件也放到这个目录中,我所用的Struts是1.1b1。
接下来,我们将请出Jbuilder啦,用Jbuilder开发EJB,就像用DW写网页一样方便快捷。首先我们还是将Jbuilde的库配置一下,先建一个struts 1.1 lib的库,把刚才我们放到lib目录中的除mysql外的jar都添加进去,这就是将来开发编写javabean要用到的啦!
在出现的对话框中,按下图所填写即可,这里的Driver和URL是连接mysql的写法,下面是连接MYSQL数据库的用户名和密码,最下面的JNDI name我们命名为mywork,这里所写的名字要与以后在配置weblogic中的名字相同。
下图是这个文件的源代码。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大型应用的基础,希望大家多多交流!!
进入讨论组讨论。