この規則は、V7.0 より前の WebSphere Application Server のバージョンからマイグレーションする場合に発生する可能性のある Java Architecture for XML Binding (JAXB) 初期設定クラスの変更および矛盾に関連したものです。 利用者アプリケーションに問題を発生させた 2 つの JAXB マイグレーション・シナリオがあります。 最初のシナリオは、WebSphere 6.1 Feature Pack for Web Services からマイグレーションされたアプリケーションに関連しています。 2 番目のシナリオは、JAXB 実装をパッケージ化し、WebSphere V7.0 以降にマイグレーションされる利用者アプリケーションに関連しています。
WebSphere V7.0 では、JAXB 2.1 は Java 6 ランタイムの一部として提供されます。
V7.0 より前では、WebSphere 6.1 Feature Pack for Web Services で JAXB 2.1 または 2.2 (V8.0) で使用されるものと異なる初期設定クラスを使用する JAXB 2.0 が提供されていました。
アプリケーションが古い初期設定クラスを使用することを指定した場合、アプリケーションの実行時に、「クラスが見つからない」という例外が生成されることがあります。
初期設定クラスは、javax.xml.bind.context.factory プロパティーを使用して定義できます。 古い初期化クラスは、com.sun.xml.bindです。コンテキスト・ファクトリー.
もし古いクラス名が javax.xml.bind.context.factory プロパティーに設定されていたら、 java.lang
を取得します。Java 6 で使用可能な JAXB
ライブラリーを使用する場合は、ClassNotFoundException 。
この規則は、javax.xml.bindをスキャンします。 メソッド。 JAXB を使用している場合は、古いコンテキスト・ファクトリーが使用されていないかアプリケーションを確認してください。 この規則は、ストリング・リテラル
" com.sun.xml.bindも検出します。ContextFactory" または "com.sun.xml.bind.Java コードの DefaultJAXBContextImpl は、
これらの値が設定されていることが多いプロパティー・ファイルをスキャンしません。
これらは Java システム・プロパティーでも設定できます。JAXB コンテキストを取得する
ために使用される JAXBContext.newInstance
JAXB プロパティーは一般的に jaxb.properties ファイルからロードされます。 アプリケーションのプロパティー・ファイルを手動でスキャンし、古いコンテキスト・ファクトリーが定義されていないかどうかを判別します。
Eclipse内のプロパティー・ファイルをスキャンするには、 Search > File...を選択します。
Containing text フィールドに、com.sun.xml.bind を入力します。コンテキスト・ファクトリー.
File name patterns フィールドで *.properties と入力します。
ストリング com.sun.xml.bindの検索を繰り返します。DefaultJAXBContextImpl.
WebSphere V7 または V8で JAXB を使用する場合、デフォルトの初期化クラスは
com.ibm.xml.xlxp2.jaxbです。JAXBContextFactory if no
javax.xml.bind.context.factory プロパティーが設定されます。
2 番目のシナリオの場合、JAXB 実装を V7 より前のアプリケーションの一部としてパッケージ化した利用者は、WebSphere V7.0 以降にマイグレーションするときに、今説明した問題または振る舞い変更に直面する可能性もあります。 これは、アプリケーションとともに提供される JAXB 実装ではなく、Java ランタイムの一部として提供される JAXB 2.1 または 2.2 バージョンがロードされる場合に発生します。 「 Enabling a third-party JAX-WS application in WebSphere Application Server V7」という記事では、JAXB 実装を引き続け使用したい場合に、クラス・ローダーの問題に対処する方法について説明しています。
追加情報については、以下を参照してください。