JavaTM 2 Platform
Standard Ed. 6

java.rmi.activation
類別 Activatable

java.lang.Object
  繼承者 java.rmi.server.RemoteObject
      繼承者 java.rmi.server.RemoteServer
          繼承者 java.rmi.activation.Activatable
所有已實作的介面:
Serializable, Remote

public abstract class Activatable
extends RemoteServer

Activatable 類別為那些需要進行持久存取並能由系統啟動的遠端物件提供支持。

對於建構子和靜態 exportObject 方法,可以像 UnicastRemoteObject 中所描述的那樣獲得將被導出的遠端物件的 stub。

試圖顯式序列化此類別的實例將失敗。

從以下版本開始:
1.2

欄位摘要
 
從類別 java.rmi.server.RemoteObject 繼承的欄位
ref
 
建構子摘要
protected Activatable(ActivationID id, int port)
          建構子用於在指定埠號上啟動/導出物件。
protected Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          建構子用於在指定埠號上啟動/導出物件。
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port)
          建構一個可啟動的遠端物件:註冊此物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號輸出該物件。
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          建構一個可啟動遠端物件:註冊此物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號、指定的客戶端和伺服器Socket處理器輸出該物件。
 
方法摘要
static Remote exportObject(Remote obj, ActivationID id, int port)
          將可啟動遠端物件導出到 RMI 運行資源庫中,使該物件能接收傳入的調用。
static Remote exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          將可啟動遠端物件導出到 RMI 運行資源庫中,使該物件能接收傳入的調用。
static ActivationID exportObject(Remote obj, String location, MarshalledObject<?> data, boolean restart, int port)
          註冊指定物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號輸出該物件。
static ActivationID exportObject(Remote obj, String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          註冊指定物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號、指定的客戶端和伺服器Socket處理器輸出該物件。
protected  ActivationID getID()
          返回物件的啟動標識符。
static boolean inactive(ActivationID id)
          通知系統具有相應啟動 id 的物件目前沒有處於活動狀態的。
static Remote register(ActivationDesc desc)
          為可啟動遠端物件註冊一個物件描述符,以便可以根據需要啟動它。
static boolean unexportObject(Remote obj, boolean force)
          從 RMI 運行資源庫中移除遠端物件 obj。
static void unregister(ActivationID id)
          為與 id 關聯的啟動描述符撤消前面的註冊。
 
從類別 java.rmi.server.RemoteServer 繼承的方法
getClientHost, getLog, setLog
 
從類別 java.rmi.server.RemoteObject 繼承的方法
equals, getRef, hashCode, toString, toStub
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

Activatable

protected Activatable(String location,
                      MarshalledObject<?> data,
                      boolean restart,
                      int port)
               throws ActivationException,
                      RemoteException
建構一個可啟動的遠端物件:註冊此物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號輸出該物件。

註:建議最好使用同時註冊和輸出可啟動遠端物件的 Activatable 建構子,因為 保證註冊和輸出遠端物件操作是原子操作。相反,應用程序應該分開註冊啟動描述符和輸出遠端物件操作,這樣才能正確地處理異常。

此方法使用該物件、指定位置、資料、重啟網要和埠號調用 exportObject 方法。getID() 的後續調用將返回從 exportObject 調用中返回的啟動標識符。

參數:
location - 此物件的類別的位置
data - 物件的初始化資料
port - 導出物件的埠號(如果 port=0,則使用匿名埠號)
restart - 如果該參數為 true,那麼在一次意外崩潰之後,如果重啟啟動器或者重啟物件啟動組,則該物件也會被重啟(啟動);如果參數為 false,則只能根據需要啟動該物件。指定 restarttrue,不強制對新註冊的物件立即進行初始啟動操作;初始啟動是延後進行的。
拋出:
ActivationException - 如果物件註冊失敗。
RemoteException - 如果下列操作之一失敗:a) 通過啟動系統註冊物件 b) 將物件導出到 RMI 運行資源庫。
從以下版本開始:
1.2

Activatable

protected Activatable(String location,
                      MarshalledObject<?> data,
                      boolean restart,
                      int port,
                      RMIClientSocketFactory csf,
                      RMIServerSocketFactory ssf)
               throws ActivationException,
                      RemoteException
建構一個可啟動遠端物件:註冊此物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號、指定的客戶端和伺服器Socket處理器輸出該物件。

註:建議最好使用同時註冊和輸出可啟動遠端物件的 Activatable 建構子,因為 保證註冊和輸出遠端物件操作是原子操作。相反,應用程序應該分開註冊啟動描述符和輸出遠端物件操作,這樣才能正確地處理異常。

此方法使用該物件、指定位置、資料、重啟網要、埠號、客戶端和伺服器Socket處理器調用 exportObject 方法。getID() 的後續調用將返回從 exportObject 調用中返回的啟動標識符。

參數:
location - 此物件的類別的位置
data - 物件的初始化資料
restart - 如果該參數為 true,那麼在一次意外崩潰之後,如果重啟啟動器或者重啟物件啟動組,則該物件也會被重啟(啟動);如果該參數為 false,則只能根據需要啟動該物件。指定 restarttrue,不強制對新註冊的物件立即進行初始啟動操作;初始啟動是延後進行的。
port - param port 導出物件的埠號(如果 port=0,則使用匿名埠號)
csf - 進行遠端物件調用的客戶端Socket處理器
ssf - 接收遠端調用的伺服器端Socket處理器
拋出:
ActivationException - 如果註冊失敗。
RemoteException - 如果下列操作之一失敗:a) 通過啟動系統註冊物件 b) 將物件導出到 RMI 運行資源庫。
從以下版本開始:
1.2

Activatable

protected Activatable(ActivationID id,
                      int port)
               throws RemoteException
建構子用於在指定埠號上啟動/導出物件。一個“可啟動的”遠端物件必須具有帶兩個參數的建構子:

當此類別的具體子類別通過上述帶兩個參數的建構子啟動 時,它必須調用此建構子。作為建構的副作用,遠端物件被“導出”到 RMI 運行資源庫中(在指定 port 上),並且可用於接受從客戶端傳入的調用。

參數:
id - 物件的啟動標識符
port - 導出物件的埠號的埠號號
拋出:
RemoteException - 如果將物件導出到 RMI 運行資源庫中失敗
從以下版本開始:
1.2

Activatable

protected Activatable(ActivationID id,
                      int port,
                      RMIClientSocketFactory csf,
                      RMIServerSocketFactory ssf)
               throws RemoteException
建構子用於在指定埠號上啟動/導出物件。一個“可啟動的”遠端物件必須具有帶兩個參數的建構子:

當此類別的具體子類別通過上述帶兩個參數的建構子啟動 時,它必須調用此建構子。作為建構的副作用,遠端物件被“導出”到 RMI 運行資源庫中(在指定 port 上),並且可用於接受從客戶端傳入的調用。

參數:
id - 物件的啟動標識符
port - 導出物件的埠號的埠號號
csf - 進行遠端物件調用的客戶端Socket處理器
ssf - 接收遠端調用的伺服器端Socket處理器
拋出:
RemoteException - 如果將物件導出到 RMI 運行資源庫中失敗
從以下版本開始:
1.2
方法詳細資訊

getID

protected ActivationID getID()
返回物件的啟動標識符。此方法是受保護的,因此只有子類別能獲取物件的標識符。

返回:
物件的啟動標識符
從以下版本開始:
1.2

register

public static Remote register(ActivationDesc desc)
                       throws UnknownGroupException,
                              ActivationException,
                              RemoteException
為可啟動遠端物件註冊一個物件描述符,以便可以根據需要啟動它。

參數:
desc - 物件的描述符
返回:
可啟動遠端物件的 stub
拋出:
UnknownGroupException - 如果 desc 中的組 id 未使用啟動系統註冊
ActivationException - 如果啟動系統未運行
RemoteException - 如果遠端調用失敗
從以下版本開始:
1.2

inactive

public static boolean inactive(ActivationID id)
                        throws UnknownObjectException,
                               ActivationException,
                               RemoteException
通知系統具有相應啟動 id 的物件目前沒有處於活動狀態的。如果物件當前處於活動狀態的,則該物件從 RMI 運行資源庫“取消導出”(僅在沒有任何掛起或者進程內調用時),使其無法再接收傳入的調用。此調用通知此 VM 的 ActivationGroup,告訴它物件處於不活動狀態,並依次通知其 ActivationMonitor。如果成功完成此調用,則對啟動器的後續啟動請求將導致物件被重新啟動。如果物件被認為是活動的,但是其自身已經取消導出,此操作仍能獲得成功。

參數:
id - 物件的啟動標識符
返回:
如果操作成功(如果已知物件目前處於活動狀態並且已經取消導出,或者物件目前已被導出並且沒有任何正在掛起/執行的調用,則此操作能夠獲得成功),則返回 true;否則,如果物件具有正在掛起/執行的調用,無法對其取消啟動,則返回 false
拋出:
UnknownObjectException - 如果物件未知(可能已經處於不活動狀態)
ActivationException - 如果組處於不活動狀態
RemoteException - 如果調用通知監視器失敗
從以下版本開始:
1.2

unregister

public static void unregister(ActivationID id)
                       throws UnknownObjectException,
                              ActivationException,
                              RemoteException
為與 id 關聯的啟動描述符撤消前面的註冊。無法再通過該 id 啟動物件。

參數:
id - 物件的啟動標識符
拋出:
UnknownObjectException - 如果物件(id)未知
ActivationException - 如果啟動系統未運行
RemoteException - 如果對啟動系統的遠端調用失敗
從以下版本開始:
1.2

exportObject

public static ActivationID exportObject(Remote obj,
                                        String location,
                                        MarshalledObject<?> data,
                                        boolean restart,
                                        int port)
                                 throws ActivationException,
                                        RemoteException
註冊指定物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號輸出該物件。

註:建議最好使用此方法(以及同時註冊和輸出可啟動遠端物件的 Activatable 建構子),因為 保證註冊和輸出遠端物件操作是原子操作。相反,應用程序應該分開註冊啟動描述符和輸出遠端物件操作,這樣才能正確地處理異常。

此方法使用指定物件、位置、資料、重啟網要、埠號、客戶端和伺服器Socket處理器(為 null)調用 exportObject 方法,然後返回得到的啟動標識符。

參數:
obj - 將被導出的物件
location - 物件的程式碼基
data - 物件的引導資料
restart - 如果該參數為 true,那麼在一次意外崩潰之後,如果重啟啟動器或者重啟物件啟動組,則該物件也會被重啟(啟動);如果該參數為 false,則只能根據需要啟動該物件。指定 restarttrue,不強制對新註冊的物件立即進行初始啟動操作;初始啟動是延後進行的。
port - 導出物件的埠號的埠號號(如果 port=0,則使用匿名埠號)
返回:
通過啟動系統註冊描述符 desc 所獲得的啟動標識符
拋出:
ActivationException - 如果啟動組處於不活動狀態
RemoteException - 如果物件註冊或者導出失敗
從以下版本開始:
1.2

exportObject

public static ActivationID exportObject(Remote obj,
                                        String location,
                                        MarshalledObject<?> data,
                                        boolean restart,
                                        int port,
                                        RMIClientSocketFactory csf,
                                        RMIServerSocketFactory ssf)
                                 throws ActivationException,
                                        RemoteException
註冊指定物件的啟動描述符(使用指定的位置、資料和重啟網要),並使用指定的埠號、指定的客戶端和伺服器Socket處理器輸出該物件。

註:建議最好使用此方法(以及同時註冊和輸出可啟動遠端物件的 Activatable 建構子),因為 保證註冊和輸出遠端物件操作是原子操作。相反,應用程序應該分開註冊啟動描述符和輸出遠端物件操作,這樣才能正確地處理異常。

此方法首先按以下步驟註冊指定物件的啟動描述符。它通過調用 ActivationGroup.getSystem 方法來獲取啟動系統。然後,此方法通過使用 ActivationDesc 調用啟動系統的 registerObject 方法來獲取 ActivationID,其中,ActivationDesc 是使用指定物件的類別名稱、指定位置、資料和重啟網要建構的。如果在獲取啟動系統或註冊啟動描述符時發生異常,則將向調用者拋出該異常。

然後,此方法使用指定的遠端物件、通過註冊獲取的啟動標識符、指定的埠號、指定的客戶端和伺服器Socket處理器調用 exportObject 方法輸出物件。如果輸出物件時發生異常,那麼此方法將嘗試使用啟動標識符調用啟動系統的 unregisterObject 方法來註銷啟動標識符(通過註冊獲得)。如果註銷標識符時發生異常,則忽略該異常,並向調用者拋出輸出物件時發生的原異常。

最後,此方法使用啟動標識符和指定遠端物件對此 VM 中的啟動組調用 activeObject 方法,並向調用者返回啟動標識符。

參數:
obj - 將被導出的物件
location - 物件的程式碼基
data - 物件的引導資料
restart - 如果該參數為 true,那麼在一次意外崩潰之後,如果重啟啟動器或者重啟物件啟動組,則該物件也會被重啟(啟動);如果該參數為 false,則只能根據需要啟動該物件。指定 restarttrue,不強制對新註冊的物件立即進行初始啟動操作;初始啟動是延後進行的。
port - 導出物件的埠號的埠號號(如果 port=0,則使用匿名埠號)
csf - 進行遠端物件調用的客戶端Socket處理器
ssf - 接收遠端調用的伺服器端Socket處理器
返回:
通過向啟動系統註冊描述符所獲得的啟動標識符
拋出:
ActivationException - 如果啟動組處於不活動狀態
RemoteException - 如果物件註冊或者導出失敗
從以下版本開始:
1.2

exportObject

public static Remote exportObject(Remote obj,
                                  ActivationID id,
                                  int port)
                           throws RemoteException
將可啟動遠端物件導出到 RMI 運行資源庫中,使該物件能接收傳入的調用。如果 port 為零,則在匿名埠號上導出物件。

在啟動過程中,此 exportObject 方法應當由一個未擴展 Activatable 類別的“可啟動”物件顯式調用。對於確實擴展了 Activatable 類別的物件,無需直接調用此方法,因為該物件是在建構期間輸出的。

參數:
obj - 遠端物件實作
id - 物件的啟動標識符
port - 導出物件的埠號的埠號號(如果 port=0,則使用匿名埠號)
返回:
可啟動遠端物件的 stub
拋出:
RemoteException - 如果物件導出失敗
從以下版本開始:
1.2

exportObject

public static Remote exportObject(Remote obj,
                                  ActivationID id,
                                  int port,
                                  RMIClientSocketFactory csf,
                                  RMIServerSocketFactory ssf)
                           throws RemoteException
將可啟動遠端物件導出到 RMI 運行資源庫中,使該物件能接收傳入的調用。如果 port 為零,則在匿名埠號上導出物件。

在啟動過程中,此 exportObject 方法應當由一個未擴展 Activatable 類別的“可啟動”物件顯式調用。對於確實擴展了 Activatable 類別的物件,無需直接調用此方法,因為該物件是在建構期間輸出的。

參數:
obj - 遠端物件實作
id - 物件的啟動標識符
port - 導出物件的埠號的埠號號(如果 port=0,則使用匿名埠號)
csf - 進行遠端物件調用的客戶端Socket處理器
ssf - 接收遠端調用的伺服器端Socket處理器
返回:
可啟動遠端物件的 stub
拋出:
RemoteException - 如果物件導出失敗
從以下版本開始:
1.2

unexportObject

public static boolean unexportObject(Remote obj,
                                     boolean force)
                              throws NoSuchObjectException
從 RMI 運行資源庫中移除遠端物件 obj。如果成功,該物件無法再接受傳入的 RMI 調用。如果 force 參數為 true,那麼即使存在掛起的遠端物件調用,或者遠端物件在進程中仍有調用,對象也會被強制取消導出。如果 force 為 false,則僅當不存在掛起或者進程內調用時,才取消導出物件。

參數:
obj - 要取消導出的遠端物件
force - 如果該參數為 true,則即使存在掛起或者進程內調用,仍取消導出物件;如果該參數為 false,則僅當不存在掛起或者進程內調用時,才取消導出物件
返回:
如果操作成功,則返回 true;否則返回 false
拋出:
NoSuchObjectException - 如果遠端物件目前沒有被導出
從以下版本開始:
1.2

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only