在建完數據庫之后,我們就要開始進行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大型應用的基礎,希望大家多多交流!!
進入討論組討論。
(出處:http://m.survivalescaperooms.com)