|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjava.rmi.server.RemoteObject
java.rmi.server.RemoteServer
java.rmi.server.UnicastRemoteObject
java.rmi.activation.ActivationGroup
public abstract class ActivationGroup
ActivationGroup 負責創建組中“可啟動”物件的新實例,在以下情況通知其 ActivationMonitor:它的物件變成活動的或者不活動的,或者整個組變成不活動的。
ActivationGroup 通過以下方式之一被初始 創建:
ActivationGroupID 的 ActivationDesc,或者
ActivationGroup.createGroup 方法
ActivationGroupDesc 被註冊的組中的第一個物件。
只有啟動器能重建 一個 ActivationGroup。啟動器根據需要為每個已註冊的啟動組產生一個單獨的 VM(例如,作為一個子進程),並且將啟動請求導向適當的組。它是如何產生 VM 的特定實作。一個啟動組通過 ActivationGroup.createGroup 靜態方法創建。createGroup 方法在創建組方面有兩個需求:1) 組必須是 ActivationGroup 的一個具體子類別,以及 2) 組必須具有帶兩個參數的建構子:
ActivationGroupID ,以及
java.rmi.MarshalledObject 中)
組被創建後,ActivationGroup 的預設實作將在創建 ActivationGroupDesc 時用請求的屬性覆寫系統屬性,並且將設置一個 java.rmi.RMISecurityManager 作為預設的系統安全管理器。如果應用程序需要物件在組中被啟動時設置特定的屬性,則應用程序應當創建一個特殊的套件含這些屬性的 Properties 物件,然後使用此 Properties 物件創建一個 ActivationGroupDesc,並且在創建任何 ActivationDesc 之前使用 ActivationGroup.createGroup(在預設的 ActivationGroupDesc 被創建之前)。如果應用程序需要使用安全管理器而不是 java.rmi.RMISecurityManager,則在 ActivativationGroupDescriptor 屬性列表中可以將 java.security.manager 屬性設置為想要安裝的安全管理器的名稱。
ActivationInstantiator,
ActivationGroupDesc,
ActivationGroupID,
序列化表格| 欄位摘要 |
|---|
| 從類別 java.rmi.server.RemoteObject 繼承的欄位 |
|---|
ref |
| 建構子摘要 | |
|---|---|
protected |
ActivationGroup(ActivationGroupID groupID)
用給定的啟動組標識符創建一個啟動組。 |
| 方法摘要 | |
|---|---|
protected void |
activeObject(ActivationID id,
MarshalledObject<? extends Remote> mobj)
如果子類別要進行對組監視器的 activeObject 回調,則此 protected 方法是必要的。 |
abstract void |
activeObject(ActivationID id,
Remote obj)
當物件被導出時(通過 Activatable 物件的建構或者通過顯式調用 Activatable.exportObject),組的 activeObject 方法被調用。 |
static ActivationGroup |
createGroup(ActivationGroupID id,
ActivationGroupDesc desc,
long incarnation)
為當前 VM 創建並設置啟動組。 |
static ActivationGroupID |
currentGroupID()
返回當前啟動組的標識符。 |
static ActivationSystem |
getSystem()
返回該 VM 的啟動系統。 |
protected void |
inactiveGroup()
如果子類別要進行對組監視器的 inactiveGroup 回調,則此 protected 方法是必要的。 |
boolean |
inactiveObject(ActivationID id)
通過調用 Activatable.inactive 方法間接地調用組的 inactiveObject 方法。 |
static void |
setSystem(ActivationSystem system)
設置該 VM 的啟動系統。 |
| 從類別 java.rmi.server.UnicastRemoteObject 繼承的方法 |
|---|
clone, exportObject, exportObject, exportObject, unexportObject |
| 從類別 java.rmi.server.RemoteServer 繼承的方法 |
|---|
getClientHost, getLog, setLog |
| 從類別 java.rmi.server.RemoteObject 繼承的方法 |
|---|
equals, getRef, hashCode, toString, toStub |
| 從類別 java.lang.Object 繼承的方法 |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| 從介面 java.rmi.activation.ActivationInstantiator 繼承的方法 |
|---|
newInstance |
| 建構子詳細資訊 |
|---|
protected ActivationGroup(ActivationGroupID groupID)
throws RemoteException
java.rmi.server.UnicastRemoteObject 被導出。
groupID - 組標識符
RemoteException - 如要組不能被導出| 方法詳細資訊 |
|---|
public boolean inactiveObject(ActivationID id)
throws ActivationException,
UnknownObjectException,
RemoteException
Activatable.inactive 方法間接地調用組的 inactiveObject 方法。當該物件不活動(物件認為它不再活動)時,遠端物件實作必須調用 Activatable 的 inactive 方法。當物件不活動時,如果物件未調用 Activatable.inactive,則該物件永遠不被垃圾回收,因為組保持對它創建的物件的強參考。
組的 inactiveObject 方法從 RMI 運行時取消導出遠端物件,因此該物件無法再接收傳入的 RMI 調用。如果物件沒有任何掛起或者執行的調用,則該物件將僅僅被取消導出。ActivationGroup 的子類別必須覆寫此方法並且取消導出該物件。
從 RMI 運行時移除該物件之後,組必須通知其 ActivationMonitor(通過 inactiveObject 方法),該遠端物件當前不是活動的,因此遠端物件將在後續啟動請求上由啟動器重新啟動。
此方法簡單地通知組的監視器,該物件是不活動的。由 ActivationGroup 的具體子類別來實作取消導出該物件的附加需求。
id - 物件的啟動標識符
UnknownObjectException - 如果物件未知(可能已經是不活動的)
RemoteException - 如果調用通知監視器失敗
ActivationException - 如果組是不活動的
public abstract void activeObject(ActivationID id,
Remote obj)
throws ActivationException,
UnknownObjectException,
RemoteException
Activatable 物件的建構或者通過顯式調用 Activatable.exportObject),組的 activeObject 方法被調用。組必須通知其 ActivationMonitor 物件是不活動的(通過監視器的 activeObject 方法),如果該組還沒有這麼做的話。
id - 物件的標識符obj - 遠端物件實作
UnknownObjectException - 如果物件未註冊
RemoteException - 如果調用通知監視器失敗
ActivationException - 如果組是不活動的
public static ActivationGroup createGroup(ActivationGroupID id,
ActivationGroupDesc desc,
long incarnation)
throws ActivationException
Activator 初始化啟動組的重建以執行傳入的 activate 請求時,啟動組使用 createGroup 方法來設置。在組可以通過此方法創建之前,該組必須首先通過 ActivationSystem 註冊。
由 ActivationGroupDesc 指定的組類別必須是 ActivationGroup 的具體子類別,並且具有一個公共的帶兩個參數的建構子:組的 ActivationGroupID 和包含組的初始化資料的 MarshalledObject(從 ActivationGroupDesc 獲得)。
如果 ActivationGroupDesc 中指定的組類別名為 null,則此方法將像組描述符包含預設啟動組實作類別的名稱一樣執行。
注意,如果應用程序創建其自己的自定義啟動組,則必須為該組設置安全管理器。否則,該組中的物件不能被啟動,預設設置為 java.rmi.RMISecurityManager。
如果在該組的 VM 中已經設置安全管理器,此方法首先調用該安全管理器的 checkSetFactory 方法。這可能會導致拋出 SecurityException。如果應用程序需要設置不同的安全管理器,則必須確保由組的 ActivationGroupDesc 所指定的策略檔案授予該組必要的權限來設置一個新的安全管理器。(註:如果組下載並設置一個安全管理器,這將是必要的)。
在組被創建之後,通過調用 activeGroup 方法通知 ActivationSystem 該組是活動的,返回該組的 ActivationMonitor。應用程序無需獨立調用 activeGroup,因為它通過此方法來維護。
一旦組被創建,對 currentGroupID 方法的後續調用將返回此組的標識符,直到組變為不活動的。
id - 啟動組的標識符desc - 啟動組的描述符incarnation - 組的代號(在組初始化創建時為零)
ActivationException - 如果組已經存在或者如果在組創建過程中發生錯誤
SecurityException - 如果創建組的權限被拒絕。(註:安全管理器 checkSetFactory 方法的預設實作需要 RuntimePermission 的 "setFactory")SecurityManager.checkSetFactory()public static ActivationGroupID currentGroupID()
public static void setSystem(ActivationSystem system)
throws ActivationException
getSystem 方法嘗試通過在 Activator 註冊表中尋找名稱 "java.rmi.activation.ActivationSystem" 來獲取對 ActivationSystem 的參考。預設情況下,用於尋找該啟動系統的埠號號由 ActivationSystem.SYSTEM_PORT 定義。此埠號可通過設置屬性 java.rmi.activation.port 而被覆寫。
如果存在安全管理器,則此方法首先調用安全管理器的 checkSetFactory 方法。這可能會導致拋出 SecurityException 異常。
system - 對 ActivationSystem 的遠端參考
ActivationException - 如果已經設置啟動系統
SecurityException - 如果設置啟動系統的權限被拒絕。(註:安全管理器 checkSetFactory 方法的預設實作需要 RuntimePermission 的 "setFactory")getSystem(),
SecurityManager.checkSetFactory()
public static ActivationSystem getSystem()
throws ActivationException
setSystem 方法設置。如果啟動系統未通過 setSystem 方法設置,則 getSystem 方法嘗試通過在 Activator 註冊表中尋找名稱 "java.rmi.activation.ActivationSystem" 來獲取對 ActivationSystem 的參考。預設情況下,用於尋找該啟動系統的埠號號由 ActivationSystem.SYSTEM_PORT 定義。此埠號可通過設置屬性 java.rmi.activation.port 而被覆寫。
ActivationException - 如果啟動系統無法獲得或者未綁定(意味著它沒有運行)setSystem(java.rmi.activation.ActivationSystem)
protected void activeObject(ActivationID id,
MarshalledObject<? extends Remote> mobj)
throws ActivationException,
UnknownObjectException,
RemoteException
activeObject 回調,則此 protected 方法是必要的。此調用簡單地轉發到組的 ActivationMonitor。
id - 物件的標識符mobj - 套件含遠端物件的 stub 的編組物件
UnknownObjectException - 如果物件未註冊
RemoteException - 如果調用通知監視器失敗
ActivationException - 如果發生啟動錯誤
protected void inactiveGroup()
throws UnknownGroupException,
RemoteException
inactiveGroup 回調,則此 protected 方法是必要的。此調用簡單地轉發到組的 ActivationMonitor。同時,該 VM 的當前組被設置為 null。
UnknownGroupException - 如果組未註冊
RemoteException - 如果調用通知監視器失敗
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。