public class CodebaseAwareObjectInputStream extends ConfigurableObjectInputStream
JDK の RMIClassLoader を使用して、指定されたコードベースからクラスをロードします。コードベースは、スペースで区切られた複数の URL で構成できます。標準 RMI で動的クラスダウンロードを使用する場合と同様に、RMIClassLoader では SecurityManager を設定する必要があることに注意してください。(詳細については、RMI のドキュメントを参照してください。)
このクラスは RMI パッケージに存在しますが、RmiClientInterceptor では使用されません。代わりに標準の RMI インフラストラクチャが使用されるため、"java.rmi.server.codebase" 経由の RMI の標準動的クラスのダウンロードにのみ依存できます。CodebaseAwareObjectInputStream は HttpInvokerClientInterceptor によって使用されます ( "codebaseUrl" プロパティを参照してください)。
オプションを提案し、プロトタイプを提供してくれた Lionel Mestre に感謝します。
RMIClassLoader, RemoteInvocationSerializingExporter.createObjectInputStream(java.io.InputStream), HttpInvokerClientInterceptor.setCodebaseUrl(java.lang.String)baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING| コンストラクターと説明 |
|---|
CodebaseAwareObjectInputStream(java.io.InputStream in, java.lang.ClassLoader classLoader, boolean acceptProxyClasses) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
CodebaseAwareObjectInputStream(java.io.InputStream in, java.lang.ClassLoader classLoader, java.lang.String codebaseUrl) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
CodebaseAwareObjectInputStream(java.io.InputStream in, java.lang.String codebaseUrl) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected java.lang.ClassLoader | getFallbackClassLoader()ClassLoader が指定されておらず、ObjectInputStream 自身のデフォルトクラスローダーが失敗した場合に使用するフォールバック ClassLoader を返します。 |
protected java.lang.Class<?> | resolveFallbackIfPossible(java.lang.String className, java.lang.ClassNotFoundException ex) フォールバッククラスローダーに対して指定されたクラス名を解決します。 |
resolveClass, resolveProxyClassavailable, close, defaultReadObject, enableResolveObject, read, read, readBoolean, readByte, readChar, readClassDescriptor, readDouble, readFields, readFloat, readFully, readFully, readInt, readLine, readLong, readObject, readObjectOverride, readShort, readStreamHeader, readUnshared, readUnsignedByte, readUnsignedShort, readUTF, registerValidation, resolveObject, skipBytespublic CodebaseAwareObjectInputStream(java.io.InputStream in,
java.lang.String codebaseUrl)
throws java.io.IOExceptionin - 読み込み元の InputStreamcodebaseUrl - ローカルに見つからない場合にクラスをロードするコードベース URL (スペースで区切られた複数の URL で構成できます)java.io.IOExceptionObjectInputStream.ObjectInputStream(java.io.InputStream)public CodebaseAwareObjectInputStream(java.io.InputStream in,
@Nullable
java.lang.ClassLoader classLoader,
java.lang.String codebaseUrl)
throws java.io.IOExceptionin - 読み込み元の InputStreamclassLoader - ローカルクラスのロードに使用する ClassLoader (RMI のデフォルトの ClassLoader を示す null )codebaseUrl - ローカルに見つからない場合にクラスをロードするコードベース URL (スペースで区切られた複数の URL で構成できます)java.io.IOExceptionObjectInputStream.ObjectInputStream(java.io.InputStream)public CodebaseAwareObjectInputStream(java.io.InputStream in,
@Nullable
java.lang.ClassLoader classLoader,
boolean acceptProxyClasses)
throws java.io.IOExceptionin - 読み込み元の InputStreamclassLoader - ローカルクラスのロードに使用する ClassLoader (RMI のデフォルトの ClassLoader を示す null )acceptProxyClasses - プロキシクラスの逆直列化を受け入れるかどうか (セキュリティ対策として無効にすることができます)java.io.IOExceptionObjectInputStream.ObjectInputStream(java.io.InputStream)protected java.lang.Class<?> resolveFallbackIfPossible(java.lang.String className,
java.lang.ClassNotFoundException ex)
throws java.io.IOException,
java.lang.ClassNotFoundExceptionConfigurableObjectInputStreamデフォルトの実装では、利用可能なフォールバックがないため、元の例外が単に再スローされます。
ConfigurableObjectInputStream の resolveFallbackIfPossible className - 解決するクラス名 ex - クラスをロードしようとしたときにスローされた元の例外 null ではない)java.io.IOExceptionjava.lang.ClassNotFoundExceptionprotected java.lang.ClassLoader getFallbackClassLoader()
throws java.io.IOExceptionConfigurableObjectInputStream デフォルトの実装は null を返すだけで、特定のフォールバックが利用できないことを示します。
ConfigurableObjectInputStream の getFallbackClassLoader java.io.IOException