- すべての実装されたインタフェース:
Serializable
,Remote
- 直系の既知のサブクラス:
ActivationGroup
public class UnicastRemoteObject extends RemoteServer
非推奨: 静的スタブ。 静的に生成されたスタブのサポートは非推奨です。 これには、静的スタブを使用する必要があるこのクラス内のAPI、および静的スタブのロードに対する実行時サポートが含まれます。 次に示すように、オブジェクトをエクスポートする非優先の方法のいずれかを使用して、スタブを動的に生成することをお薦めします。
リモート・オブジェクトをエクスポートするには、8つの方法があります:
UnicastRemoteObject
のサブクラス化およびUnicastRemoteObject()
コンストラクタの呼出し。UnicastRemoteObject
のサブクラス化およびUnicastRemoteObject(port)
コンストラクタの呼出し。UnicastRemoteObject
のサブクラス化およびUnicastRemoteObject(port, csf, ssf)
コンストラクタの呼出し。exportObject(Remote)
メソッドの呼出し。 非推奨。exportObject(Remote, port)
メソッドの呼出し。exportObject(Remote, port, csf, ssf)
メソッドの呼出し。exportObject(Remote, port, filter)
メソッドを呼び出します。exportObject(Remote, port, csf, ssf, filter)
メソッドを呼び出します。
4番目の手法であるexportObject(Remote)
は、静的に生成されたスタブを常に使用するため、非推奨です。
他の手法はすべて次のアプローチを使用: java.rmi.server.ignoreStubClasses
プロパティがtrue
(大文字小文字を区別しません)の場合、または静的スタブが見つからない場合、スタブはProxy
オブジェクトを使用して動的に生成されます。 それ以外の場合は、静的スタブが使用されます。
java.rmi.server.ignoreStubClasses
プロパティのデフォルト値はfalse
です。
静的に生成されたスタブは、通常、リモート・オブジェクト・クラスから事前生成されます。 次に説明するように、静的スタブがロードされ、そのスタブ・クラスのインスタンスが構築されます。
- 「ルート・クラス」が次のようにして決定されます。リモート・オブジェクトのクラスが
Remote
を拡張したインタフェースを直接実装している場合、そのリモート・オブジェクトのクラスがルート・クラスになります。それ以外の場合、リモート・オブジェクトのクラスのスーパー・クラスのうち、Remote
を拡張したインタフェースを直接実装している最上位のクラスが、ルート・クラスになります。 - ロードするスタブ・クラスの名前を決定するために、ルート・クラスのバイナリ名と接尾辞
_Stub
が連結されます。 - 指定した名前のスタブ・クラスがルート・クラスのクラス・ローダーを使ってロードされます。 スタブ・クラスはパブリックでなければならず、
RemoteStub
を拡張する必要があります。少なくともjava.rmi
モジュールにエクスポートされるパッケージに存在し、型RemoteRef
のパラメータを1つ持つパブリック・コンストラクタが必要です。 - 最後に、スタブ・クラスのインスタンスが
RemoteRef
を使って構築されます。 - 適切なスタブ・クラスが見つからなかった場合、スタブ・クラスをロードできなかった場合、あるいはスタブ・インスタンスの作成時に問題が発生した場合は、
StubNotFoundException
がスローされます。
スタブは、次の特性を持つProxy
のインスタンスを構築することによって動的に生成されます。
- プロキシ・クラスは、リモート・オブジェクト・クラスのクラス・ローダーを使用して、
Proxy
クラスの仕様に従って定義されます。 - プロキシは、リモート・オブジェクトのクラスが実装しているリモート・インタフェースのすべてを実装する
- 各リモート・インタフェースは公開され、少なくとも
java.rmi
モジュールからexportedまでのパッケージに存在するか、少なくともjava.rmi
モジュールからopenまでのパッケージに存在する必要があります。 - プロキシの呼出しハンドラは、
RemoteRef
を使って構築されたRemoteObjectInvocationHandler
インスタンスになる。 - プロキシを作成できなかった場合は、
StubNotFoundException
がスローされる。
エクスポートされたリモート・オブジェクトは、RMI仕様で説明されているように、スタブからメソッド呼び出しを受け取ります。 各呼び出し操作とパラメータは、カスタムObjectInputStream
を使用して非整列化されます。 オブジェクトがエクスポートされるときにObjectInputFilter
が提供され、null
でない場合は、ストリームから非マーシャル化されたパラメータをフィルタリングするために使用されます。 フィルタは、呼び出されるメソッドまたはパラメータ値に関係なく、すべての呼び出しおよびすべてのパラメータに使用されます。 フィルタが提供されていない場合、またはエクスポートされたオブジェクトのnull
の場合、ObjectInputStream
デフォルト・フィルタが使用されます。 デフォルトのフィルタはObjectInputFilter.Config.setSerialFilter
で構成されています。 フィルタがパラメータを拒否すると、ObjectInputStream
によってスローされたInvalidClassException
がUnmarshalException
の原因として報告されます。
- 実装上のノート:
- オブジェクトのエクスポートに使用されるコンストラクタまたは静的メソッドに応じて、ソケットの作成に
RMISocketFactory
が使用される場合があります。 デフォルトでは、RMISocketFactory
によって作成されるサーバー・ソケットはすべてのネットワーク・インタフェースで待機します。RMISocketFactory
クラスおよび『Java RMIの仕様』のセクション「RMIソケット・ファクトリ」を参照してください。 - 導入されたバージョン:
- 1.1
- 関連項目:
- 直列化された形式
-
フィールドのサマリー
クラス java.rmi.server.RemoteObjectで宣言されたフィールド
ref
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
UnicastRemoteObject()
匿名ポートを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。protected
UnicastRemoteObject(int port)
指定されたポートを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。protected
UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
指定されたポートとソケット・ファクトリを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。 -
メソッドのサマリー
修飾子と型 メソッド 説明 Object
clone()
元のオブジェクトと明確に区別できるリモート・オブジェクトの複製を返します。static RemoteStub
exportObject(Remote obj)
非推奨。このメソッドは、静的スタブのみをサポートするため、非推奨になりました。static Remote
exportObject(Remote obj, int port)
リモート・オブジェクトをエクスポートして、着信呼出しの受信に使用できるようにします。指定されたポートを使用します。static Remote
exportObject(Remote obj, int port, ObjectInputFilter filter)
リモート・オブジェクトをエクスポートして、指定された特定のポートとfilterを使用して、着信コールを受信できるようにします。static Remote
exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
リモート・オブジェクトをエクスポートして、着信呼出しの受信に使用できるようにします。指定されたソケット・ファクトリによって特定されたトランスポートを使用します。static Remote
exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf, ObjectInputFilter filter)
リモート・オブジェクトをエクスポートして、指定されたソケット・ファクトリとfilterで指定されたトランスポートを使用して、着信コールを受信できるようにします。static boolean
unexportObject(Remote obj, boolean force)
RMIランタイムからリモート・オブジェクトobjを削除します。クラス java.rmi.server.RemoteServerで宣言されたメソッド
getClientHost, getLog, setLog
-
コンストラクタの詳細
-
UnicastRemoteObject
protected UnicastRemoteObject() throws RemoteException匿名ポートを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。オブジェクトは、
RMISocketFactory
クラスを使用して作成されたサーバー・ソケットを使用してエクスポートされます。- 例外:
RemoteException
- オブジェクトのエクスポートが失敗した場合- 導入されたバージョン:
- 1.1
-
UnicastRemoteObject
protected UnicastRemoteObject(int port) throws RemoteException指定されたポートを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。オブジェクトは、
RMISocketFactory
クラスを使用して作成されたサーバー・ソケットを使用してエクスポートされます。- パラメータ:
port
- リモート・オブジェクトが呼出しを受信するポートの番号。port
がゼロの場合は、匿名ポートが選択される- 例外:
RemoteException
- オブジェクトのエクスポートが失敗した場合- 導入されたバージョン:
- 1.2
-
UnicastRemoteObject
protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException指定されたポートとソケット・ファクトリを使用して、新しいUnicastRemoteObjectオブジェクトの作成とエクスポートを行います。いずれかのソケット・ファクトリを
null
にできます。この場合、RMISocketFactory
の対応するクライアントまたはサーバー・ソケット作成メソッドがかわりに使用されます。- パラメータ:
port
- リモート・オブジェクトが呼出しを受信するポートの番号。port
がゼロの場合は、匿名ポートが選択されるcsf
- リモート・オブジェクトの呼出しに使用する、クライアント側ソケット・ファクトリssf
- リモート呼出しを受信する、サーバー側ソケット・ファクトリ- 例外:
RemoteException
- オブジェクトのエクスポートが失敗した場合- 導入されたバージョン:
- 1.2
-
-
メソッドの詳細
-
clone
public Object clone() throws CloneNotSupportedException元のオブジェクトと明確に区別できるリモート・オブジェクトの複製を返します。- オーバーライド:
clone
、クラス:Object
- 戻り値:
- 新しいリモート・オブジェクト
- 例外:
CloneNotSupportedException
- 複製がRemoteExceptionのために失敗した場合。- 導入されたバージョン:
- 1.1
- 関連項目:
Cloneable
-
exportObject
@Deprecatedpublic static RemoteStub exportObject(Remote obj) throws RemoteException非推奨。このメソッドは、静的スタブのみをサポートするため、非推奨になりました。 代わりにexportObject(Remote, port)
またはexportObject(Remote, port, csf, ssf)
を使用してください。リモート・オブジェクトをエクスポートして、着信呼出しの受信に使用できるようにします。匿名ポートを使用します。 このメソッドでは常に、静的に生成されたスタブが返されます。オブジェクトは、
RMISocketFactory
クラスを使用して作成されたサーバー・ソケットを使用してエクスポートされます。- パラメータ:
obj
- エクスポートするリモート・オブジェクト- 戻り値:
- リモート・オブジェクト・スタブ
- 例外:
RemoteException
- エクスポートに失敗した場合- 導入されたバージョン:
- 1.1
-
exportObject
public static Remote exportObject(Remote obj, int port) throws RemoteExceptionリモート・オブジェクトをエクスポートして、着信呼出しの受信に使用できるようにします。指定されたポートを使用します。オブジェクトは、
RMISocketFactory
クラスを使用して作成されたサーバー・ソケットを使用してエクスポートされます。- パラメータ:
obj
- エクスポートするリモート・オブジェクトport
- オブジェクトのエクスポート先のポート- 戻り値:
- リモート・オブジェクト・スタブ
- 例外:
RemoteException
- エクスポートに失敗した場合- 導入されたバージョン:
- 1.2
-
exportObject
public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteExceptionリモート・オブジェクトをエクスポートして、着信呼出しの受信に使用できるようにします。指定されたソケット・ファクトリによって特定されたトランスポートを使用します。いずれかのソケット・ファクトリを
null
にできます。この場合、RMISocketFactory
の対応するクライアントまたはサーバー・ソケット作成メソッドがかわりに使用されます。- パラメータ:
obj
- エクスポートするリモート・オブジェクトport
- オブジェクトのエクスポート先のポートcsf
- リモート・オブジェクトの呼出しに使用する、クライアント側ソケット・ファクトリssf
- リモート呼出しを受信する、サーバー側ソケット・ファクトリ- 戻り値:
- リモート・オブジェクト・スタブ
- 例外:
RemoteException
- エクスポートに失敗した場合- 導入されたバージョン:
- 1.2
-
exportObject
public static Remote exportObject(Remote obj, int port, ObjectInputFilter filter) throws RemoteExceptionリモート・オブジェクトをエクスポートして、指定された特定のポートとfilterを使用して、着信コールを受信できるようにします。オブジェクトは、
RMISocketFactory
クラスを使用して作成されたサーバー・ソケットを使用してエクスポートされます。- パラメータ:
obj
- エクスポートするリモート・オブジェクトport
- オブジェクトのエクスポート先のポートfilter
- 呼び出し引数を直列化解除するときに適用されるObjectInputFilternull
- 戻り値:
- リモート・オブジェクト・スタブ
- 例外:
RemoteException
- エクスポートに失敗した場合- 導入されたバージョン:
- 9
-
exportObject
public static Remote exportObject(Remote obj, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf, ObjectInputFilter filter) throws RemoteExceptionリモート・オブジェクトをエクスポートして、指定されたソケット・ファクトリとfilterで指定されたトランスポートを使用して、着信コールを受信できるようにします。いずれかのソケット・ファクトリを
null
にできます。この場合、RMISocketFactory
の対応するクライアントまたはサーバー・ソケット作成メソッドがかわりに使用されます。- パラメータ:
obj
- エクスポートするリモート・オブジェクトport
- オブジェクトのエクスポート先のポートcsf
- リモート・オブジェクトの呼出しに使用する、クライアント側ソケット・ファクトリssf
- リモート呼出しを受信する、サーバー側ソケット・ファクトリfilter
- 呼び出し引数を直列化解除するときに適用されるObjectInputFilternull
- 戻り値:
- リモート・オブジェクト・スタブ
- 例外:
RemoteException
- エクスポートに失敗した場合- 導入されたバージョン:
- 9
-
unexportObject
public static boolean unexportObject(Remote obj, boolean force) throws NoSuchObjectExceptionRMIランタイムからリモート・オブジェクトobjを削除します。 削除が成功すると、オブジェクトはRMI着信呼出しの受け付けのために使用できなくなります。 パラメータforceがtrueに設定されていると、リモート・オブジェクトへの保留状態の呼出しがある場合や、進行中の呼出しがある場合でも、オブジェクトは強制的にアンエクスポートされます。 forceパラメータにfalseを指定すると、保留状態の呼び出しや実行中の呼出しがない場合に限り、オブジェクトはアンエクスポートされます。- パラメータ:
obj
- アンエクスポートされるリモート・オブジェクトforce
- trueの場合は、保留中または進行中の呼出しがあっても、オブジェクトをアンエクスポートする。falseの場合は、保留中または進行中の呼出しがないときにだけ、オブジェクトをアンエクスポートする- 戻り値:
- オペレーションが成功した場合はtrue、そうでない場合はfalse
- 例外:
NoSuchObjectException
- リモート・オブジェクトが現在エクスポートされていない場合- 導入されたバージョン:
- 1.2
-