建立entitybean
好了,我們現在在orion目錄下,我們運行java -jar orion來啟動orion server后會發現如下的提示:
Auto-deploying helloejb (New server version detected)...
Auto-deploying helloejb-ejb.jar (No previous deployment found)... done.
Orion/1.3.8 initialized
這就說明系統找到了我們進行打包的ear文件,并且沒有發生問題。同時在orionapplication-deployments目錄中會多出一個helloejb的目錄,這其中會存儲所有的helloejb的設置文件狀態,如果你改動了系統發現系統沒有按照改動產生應用。可以試著重新啟動orion,如果還不能改變,哪么我們可以刪除這個目錄,orion在重新運行時就會像上面一樣重新識別ear文件。同時我們還可以在存放ear文件的目錄(在我的計算機上是c:hdsiteel)orion會自動把ear文件分解開來尋找相應的文件來使用。這是一個小的插曲,我們完全可以忽略這些,開始看一下我們的偉大工程的第一步:
我們打開瀏覽器,由于我是在一臺計算機上所以我輸入http://localhost/helloejb/ 就可以看到這樣的頁面:
Time stamp: Sun Dec 17 22:15:15 CST 2000
Hello type: Hello_StatelessSessionBeanWrapper0
Answer: Hello HD...
如果你得到了這樣的信息,哪么你就成功的完成了一個session bean與servlet ejb client的實例。如果再回過頭去理解EJB的構建框架將十分的有利。
下一步,我們會做一個更為復雜的工作-建立一個entity bean。同時我們將這個entity bean連接到數據庫上,與數據庫中的一個表進行關聯,存儲用戶輸入的數據。同時我們使用jsp來與用戶進行交互處理,用它來調用ejb與數據庫進行存取操作。這個應用主要是通過一個web頁面讓用戶登錄到服務器上,來管理自己的地址本。這個地址本由許多人的地址組成。我們需要在剛才所建立的目錄中再加入幾個目錄如下:
hdsite/src/java/net/chinacode/addressbook
hdsite/src/jsp
hdsite/src/web
這里第一個目錄存放addressbook的ejb相關文件,jsp目錄存放所有的jsp文件,web目錄則是存放所有的html源文件。我們先來寫Home Interface,它與session bean的Home Interface沒有什么區別,因為他們都是繼承自EJBHome,只是create不太一樣,如下所示:
package net.chinacode.addressbook;
import java.rmi.*;
import java.util.*;
import javax.ejb.*;
public interface AddressBook extends EJBHome {
public AddressEntry create(String name, String address, String city)
throws CreateException, RemoteException;
public AddressEntry findByPrimaryKey(String name)
throws FinderException, RemoteException;
public Collection findAll()
throws FinderException, RemoteException;
}
我們將這個文件存入hdsite/src/java/net/chinacode/addressbook/AddressBook.java文件中。
接下來我們完成Remote Interface,由上面的creat的返回值我們就知道它的類名應該是AddressEntry。但是我們還需要考慮的是這個EJB要向用戶完成什么樣的方法(或是說屬性)。我們做為例子,定義一個地址由人名、城市、地址組成。我們在數據庫中由人名組成主鍵,這樣就不會出現記錄重復的現像,哪么也同時說明人名將是一個只讀的屬性。依照一個Bean的屬性的規則,我們構建Remote interface的代碼如下:
package net.chinacode.addressbook;
import javax.ejb.*;
import java.rmi.*;
public interface AddressEntry extends EJBObject {
public String getName() throws RemoteException;
public String getAddress() throws RemoteException;
public String getCity() throws RemoteException;
public void setAddress(String newAddress) throws RemoteException;
public void setCity(String newCity) throws RemoteException;
}
這可以可注意Name屬性只有get而沒有set,這就形成了Name是一個只讀的屬性。
Auto-deploying helloejb (New server version detected)...
Auto-deploying helloejb-ejb.jar (No previous deployment found)... done.
Orion/1.3.8 initialized
這就說明系統找到了我們進行打包的ear文件,并且沒有發生問題。同時在orionapplication-deployments目錄中會多出一個helloejb的目錄,這其中會存儲所有的helloejb的設置文件狀態,如果你改動了系統發現系統沒有按照改動產生應用。可以試著重新啟動orion,如果還不能改變,哪么我們可以刪除這個目錄,orion在重新運行時就會像上面一樣重新識別ear文件。同時我們還可以在存放ear文件的目錄(在我的計算機上是c:hdsiteel)orion會自動把ear文件分解開來尋找相應的文件來使用。這是一個小的插曲,我們完全可以忽略這些,開始看一下我們的偉大工程的第一步:
我們打開瀏覽器,由于我是在一臺計算機上所以我輸入http://localhost/helloejb/ 就可以看到這樣的頁面:
Time stamp: Sun Dec 17 22:15:15 CST 2000
Hello type: Hello_StatelessSessionBeanWrapper0
Answer: Hello HD...
如果你得到了這樣的信息,哪么你就成功的完成了一個session bean與servlet ejb client的實例。如果再回過頭去理解EJB的構建框架將十分的有利。
下一步,我們會做一個更為復雜的工作-建立一個entity bean。同時我們將這個entity bean連接到數據庫上,與數據庫中的一個表進行關聯,存儲用戶輸入的數據。同時我們使用jsp來與用戶進行交互處理,用它來調用ejb與數據庫進行存取操作。這個應用主要是通過一個web頁面讓用戶登錄到服務器上,來管理自己的地址本。這個地址本由許多人的地址組成。我們需要在剛才所建立的目錄中再加入幾個目錄如下:
hdsite/src/java/net/chinacode/addressbook
hdsite/src/jsp
hdsite/src/web
這里第一個目錄存放addressbook的ejb相關文件,jsp目錄存放所有的jsp文件,web目錄則是存放所有的html源文件。我們先來寫Home Interface,它與session bean的Home Interface沒有什么區別,因為他們都是繼承自EJBHome,只是create不太一樣,如下所示:
package net.chinacode.addressbook;
import java.rmi.*;
import java.util.*;
import javax.ejb.*;
public interface AddressBook extends EJBHome {
public AddressEntry create(String name, String address, String city)
throws CreateException, RemoteException;
public AddressEntry findByPrimaryKey(String name)
throws FinderException, RemoteException;
public Collection findAll()
throws FinderException, RemoteException;
}
我們將這個文件存入hdsite/src/java/net/chinacode/addressbook/AddressBook.java文件中。
接下來我們完成Remote Interface,由上面的creat的返回值我們就知道它的類名應該是AddressEntry。但是我們還需要考慮的是這個EJB要向用戶完成什么樣的方法(或是說屬性)。我們做為例子,定義一個地址由人名、城市、地址組成。我們在數據庫中由人名組成主鍵,這樣就不會出現記錄重復的現像,哪么也同時說明人名將是一個只讀的屬性。依照一個Bean的屬性的規則,我們構建Remote interface的代碼如下:
package net.chinacode.addressbook;
import javax.ejb.*;
import java.rmi.*;
public interface AddressEntry extends EJBObject {
public String getName() throws RemoteException;
public String getAddress() throws RemoteException;
public String getCity() throws RemoteException;
public void setAddress(String newAddress) throws RemoteException;
public void setCity(String newCity) throws RemoteException;
}
這可以可注意Name屬性只有get而沒有set,這就形成了Name是一個只讀的屬性。