public class CodebaseAwareObjectInputStream extends ConfigurableObjectInputStream
JDK の RMIClassLoader を使用して、指定されたコードベースからクラスをロードします。コードベースは、スペースで区切られた複数の URL で構成できます。標準 RMI で動的クラスダウンロードを使用する場合と同様に、RMIClassLoader では SecurityManager を設定する必要があることに注意してください。(詳細については、RMI のドキュメントを参照してください。)
RMI パッケージに存在しているにもかかわらず、このクラスは RmiClientInterceptor には使用されません。RmiClientInterceptor は代わりに標準の RMI インフラストラクチャを使用するため、"java.rmi.server.codebase" を介した RMI の標準の動的クラスダウンロードにのみ依存できます。CodebaseAwareObjectInputStream は HttpInvokerClientInterceptor によって使用されます(そこにある "codebaseUrl" プロパティを参照してください)。
オプションを提案し、プロトタイプを提供してくれた Lionel Mestre に感謝します。
ObjectInputStream.GetFieldSE
baseWireHandleSE, PROTOCOL_VERSION_1SE, PROTOCOL_VERSION_2SE, SC_BLOCK_DATASE, SC_ENUMSE, SC_EXTERNALIZABLESE, SC_SERIALIZABLESE, SC_WRITE_METHODSE, STREAM_MAGICSE, STREAM_VERSIONSE, SUBCLASS_IMPLEMENTATION_PERMISSIONSE, SUBSTITUTION_PERMISSIONSE, TC_ARRAYSE, TC_BASESE, TC_BLOCKDATASE, TC_BLOCKDATALONGSE, TC_CLASSSE, TC_CLASSDESCSE, TC_ENDBLOCKDATASE, TC_ENUMSE, TC_EXCEPTIONSE, TC_LONGSTRINGSE, TC_MAXSE, TC_NULLSE, TC_OBJECTSE, TC_PROXYCLASSDESCSE, TC_REFERENCESE, TC_RESETSE, TC_STRINGSE
コンストラクターと説明 |
---|
CodebaseAwareObjectInputStream(InputStreamSE in, ClassLoaderSE classLoader, boolean acceptProxyClasses) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
CodebaseAwareObjectInputStream(InputStreamSE in, ClassLoaderSE classLoader, StringSE codebaseUrl) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
CodebaseAwareObjectInputStream(InputStreamSE in, StringSE codebaseUrl) 指定された InputStream とコードベースの新しい CodebaseAwareObjectInputStream を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected ClassLoaderSE | getFallbackClassLoader() ClassLoader が指定されておらず、ObjectInputStream 自身のデフォルトクラスローダーが失敗した場合に使用するフォールバック ClassLoader を返します。 |
protected ClassSE<?> | resolveFallbackIfPossible(StringSE className, ClassNotFoundExceptionSE ex) フォールバッククラスローダーに対して指定されたクラス名を解決します。 |
resolveClass, resolveProxyClass
availableSE, closeSE, defaultReadObjectSE, enableResolveObjectSE, readSE, readSE, readBooleanSE, readByteSE, readCharSE, readClassDescriptorSE, readDoubleSE, readFieldsSE, readFloatSE, readFullySE, readFullySE, readIntSE, readLineSE, readLongSE, readObjectSE, readObjectOverrideSE, readShortSE, readStreamHeaderSE, readUnsharedSE, readUnsignedByteSE, readUnsignedShortSE, readUTFSE, registerValidationSE, resolveObjectSE, skipBytesSE
markSE, markSupportedSE, readSE, resetSE, skipSE
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
readSE, skipSE
public CodebaseAwareObjectInputStream(InputStreamSE in, StringSE codebaseUrl) throws IOExceptionSE
in
- 読み込み元の InputStreamcodebaseUrl
- ローカルに見つからない場合にクラスをロードするコードベース URL (スペースで区切られた複数の URL で構成できます)IOExceptionSE
ObjectInputStream.ObjectInputStream(java.io.InputStream)
SEpublic CodebaseAwareObjectInputStream(InputStreamSE in, @Nullable ClassLoaderSE classLoader, StringSE codebaseUrl) throws IOExceptionSE
in
- 読み込み元の InputStreamclassLoader
- ローカルクラスのロードに使用する ClassLoader (RMI のデフォルトの ClassLoader を示す null
)codebaseUrl
- ローカルに見つからない場合にクラスをロードするコードベース URL (スペースで区切られた複数の URL で構成できます)IOExceptionSE
ObjectInputStream.ObjectInputStream(java.io.InputStream)
SEpublic CodebaseAwareObjectInputStream(InputStreamSE in, @Nullable ClassLoaderSE classLoader, boolean acceptProxyClasses) throws IOExceptionSE
in
- 読み込み元の InputStreamclassLoader
- ローカルクラスのロードに使用する ClassLoader (RMI のデフォルトの ClassLoader を示す null
)acceptProxyClasses
- プロキシクラスの逆直列化を受け入れるかどうか (セキュリティ対策として無効にすることができます)IOExceptionSE
ObjectInputStream.ObjectInputStream(java.io.InputStream)
SEprotected ClassSE<?> resolveFallbackIfPossible(StringSE className, ClassNotFoundExceptionSE ex) throws IOExceptionSE, ClassNotFoundExceptionSE
ConfigurableObjectInputStream
デフォルトの実装では、利用可能なフォールバックがないため、元の例外が単に再スローされます。
ConfigurableObjectInputStream
の resolveFallbackIfPossible
className
- 解決するクラス名 ex
- クラスをロードしようとしたときにスローされた元の例外 null
)IOExceptionSE
ClassNotFoundExceptionSE
protected ClassLoaderSE getFallbackClassLoader() throws IOExceptionSE
ConfigurableObjectInputStream
デフォルトの実装は null
を返すだけで、特定のフォールバックが利用できないことを示します。
ConfigurableObjectInputStream
の getFallbackClassLoader
IOExceptionSE