?? 0009.htm
字號:
<html>
<head>
<title>新時代軟件教程:操作系統 主頁制作 服務器 設計軟件 網絡技術 編程語言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>開發EJB(下)</strong></big></p>
<div align="right">---(文/ilamei)</div>
<br>EJBHome的基類:
<br>
<br>
每一個Home接口都擴展了javax.ejb.EJBHome接口。如下代碼顯示了javax.ejb.EJBHome接口的定義:
<br>
<br>
package javax.ejb;
<br>
<br>
<br>
public interface EJBHome extends java.rmi.Remote() {
<br>
<br>
void remove(Handle handle) throws java.rmi.RemoteException,RemoveException;
<br>
<br>
void remove(Object primarykey) throws java.rmi.RemoteException,RemoveException;
<br>
<br>
EJBMetaData getEJBMetaData() throws RemoteException;
<br>
<br>
Homehandle getHomeHandle() throws RemoteException;
<br>
<br>
}
<br>
<br>
<br>
這里提供了兩個remove()方法來刪除Enterprise bean的實例。第一個remove方法是通過句柄來刪除一個Enterprise bean的實例。第二個remove方法通過主鍵來刪除一個Enterprise bean的實例。
<br>
<br>
<br>
在眾多的Enterprise bean實例中,句柄唯一的標識一個實例。一個句柄與它引用的Enterprise bean有相同的生命期。考慮一個實體對象,客戶可以通過一個句柄來重新獲得相應的Enterprise bean的實例。一個句柄能夠對應一個Enterprise bean對象的多個實例。例如,即使當Enterprise bean對象所在的主機崩潰了,或者Enterprise bean對象在不同的機器之間移動,句柄仍是有效的。這里的句柄是Serialized句柄,與CORBA中的字符串化的CORBA對象的引用是相似的概念。
<br>
<br>
在EJBHome接口中的第二個remove操作通過其主鍵來決定要刪除的Enterprise bean。主鍵可以是擴展了Java Object類的任何類型,但是,必須要實現Java的Serializable接口。主鍵是標識實體bean的主要的方法。通常,主鍵是數據庫中的一個關鍵字,唯一的定義了由實體bean代表的數據。
<br>
<br>
方法getEJBMetaData()返回了Enterprise bean對象的metadata接口。這個接口允許客戶獲得Enterprise bean的metadata信息。當開發工具來編譯鏈接應用程序的時候,或者配置工具來配置的時候,可能會用到metadata信息。Javax.ejb.EJBMetadata接口提供了獲得javax.ejb.EJBHome接口,home類,remote接口,還有獲得主鍵的方法。也提供了一個isSesson()的方法來確定在放這個home接口的對象是會話bean還是實體bean。IsStatelessSession()方法指示這個會話bean是有狀態還是無狀態的。如下代碼顯示了javax.ejb.EJBMetadata接口的定義部分的代碼。
<br>
<br>
Public javax.ejb;
<br>
<br>
Public interface EJBMetaData{
<br>
<br>
EJBHome getEJBHome();
<br>
<br>
Class getHomeInterfaceClass();
<br>
<br>
Class getRemoteInterfaceClasss();
<br>
<br>
Class getPrimaryKeyClass();
<br>
<br>
Boolean isSession();
<br>
<br>
Boolean isStatelesssSession();
<br>
<br>
}
<br>
<br>
<br>
會話bean的home接口:
<br>
<br>
在前面我們說過,一個會話bean只有一個客戶。這就是說,當一個客戶創建一個會話bean的時候,這個會話bean的實例只是為了這個創建它的客戶而存在(這里,我們指的是有狀態的會話bean。無狀態的會話bean因為并不保持會話的狀態,所以可以多個客戶)。
<br>
<br>
因為home 接口包括了一個或多個的Create()方法的定義,成為會話bean的工廠。對每一個Create()方法,EJB規范定義了如下的命名約定:
<br>
<br>
<br>
它的返回值是會話bean的remote接口的類型。
<br>
<br>
<br>
方法的名字只能是Create()。
<br>
<br>
<br>
對會話bean類中的每一個ejbCreate()方法都必須有一個Create()與之對應。
<br>
<br>
<br>
對于每一個Create()方法的參數的類型和數量都必須與會話bean類中的ejbCreate()方法相對應。
<br>
<br>
<br>
方法必須拋出java.rmi.RemoteException例外。
<br>
<br>
<br>
方法必須拋出javax.rmi.CreateExeption例外。
<br>
<br>
<br>
Create()方法的參數是用來初始化新的會話bean對象的。
<br>
<br>
<br>
如下代碼顯示了一個會話bean對象的不同的Create()方法,其中必須的部分用粗體顯示:
<br>
<br>
public interface AtmHome extends javax.ejb.EJBHome{
<br>
<br>
Atm create() throws java.rmi.RemoteException,javax.ejb.CreateException;
<br>
<br>
Atm create(Profile preferredProfile)
<br>
<br>
Throws java.rmi.RemoteExeption,javax.ehrows java.rmi.RemoteException,RemoveException;
<br>
<br>
EJBMetaData getEJBMetaData() throws RemoteException;
<br>
<br>
Homehandle getHomeHandle() throws RemoteException;
<br>
<br>
}
<br>
<br>
<br>
這里提供了兩個remove()方法來刪除Enterprise bean的實例。第一個remove方法是通過句柄來刪除一個Enterprise bean的實例。第二個remove方法通過主鍵來刪除一個Enterprise bean的實例。
<br>
<br>
<br>
在眾多的Enterprise bean實例中,句柄唯一的標識一個實例。一個句柄與它引用的Enterprise bean有相同的生命期。考慮一個實體對象,客戶可以通過一個句柄來重新獲得相應的Enterprise bean的實例。一個句柄能夠對應一個Enterprise bean對象的多個實例。例如,即使當Enterprise bean對象所在的主機崩潰了,或者Enterprise bean對象在不同的機器之間移動,句柄仍是有效的。這里的句柄是Serialized句柄,與CORBA中的字符串化的CORBA對象的引用是相似的概念。
<br>
<br>
在EJBHome接口中的第二個remove操作通過其主鍵來決定要刪除的Enterprise bean。主鍵可以是擴展了Java Object類的任何類型,但是,必須要實現Java的Serializable接口。主鍵是標識實體bean的主要的方法。通常,主鍵是數據庫中的一個關鍵字,唯一的定義了由實體bean代表的數據。
<br>
<br>
方法getEJBMetaData()返回了Enterprise bean對象的metadata接口。這個接口允許客戶獲得Enterprise bean的metadata信息。當開發工具來編譯鏈接應用程序的時候,或者配置工具來配置的時候,可能會用到metadata信息。Javax.ejb.EJBMetadata接口提供了獲得javax.ejb.EJBHome接口,home類,remote接口,還有獲得主鍵的方法。也提供了一個isSesson()的方法來確定在放這個home接口的對象是會話bean還是實體bean。IsStatelessSession()方法指示這個會話bean是有狀態還是無狀態的。如下代碼顯示了javax.ejb.EJBMetadata接口的定義部分的代碼。
<br>
<br>
Public javax.ejb;
<br>
<br>
Public interface EJBMetaData{
<br>
<br>
EJBHome getEJBHome();
<br>
<br>
Class getHomeInterfaceClass();
<br>
<br>
Class getRemoteInterfaceClasss();
<br>
<br>
Class getPrimaryKeyClass();
<br>
<br>
Boolean isSession();
<br>
<br>
Boolean isStatelesssSession();
<br>
<br>
}
<br>
<br>
<br>
會話bean的home接口:
<br>
<br>
在前面我們說過,一個會話bean只有一個客戶。這就是說,當一個客戶創建一個會話bean的時候,這個會話bean的實例只是為了這個創建它的客戶而存在(這里,我們指的是有狀態的會話bean。無狀態的會話bean因為并不保持會話的狀態,所以可以多個客戶)。
<br>
<br>
因為home 接口包括了一個或多個的Create()方法的定義,成為會話bean的工廠。對每一個Create()方法,EJB規范定義了如下的命名約定:
<br>
<br>
<br>
它的返回值是會話bean的remote接口的類型。
<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -