|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.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。