|
|
|
|
|
WebLogic Server では、JAX-RPC 1.1 仕様の要件に従い、Sparse Array および Partially Transmitted Array はサポートされていません。
|
|
|
|
Web サービス記述言語 (Web Services Description Language : WSDL) のコンパイラでシリアライズ可能なデータ型が生成されないため、データがリモートの EJB に渡されない、または JMS 送り先に格納されません。
|
|
|
|
Web サービスのデフォルトの JdkSSLAdapter クラスでは Sun HTTPS プロトコル ハンドラ ( sun.net.www.protocol.https.Handler ) を直接インスタンス化します。IBM JVM にはこのクラスが存在しないため、 JdkSSLAdapter を使用すると noClassDefFoundError が発生します。
WLS 10.3 では、IBM JVM を実行する場合でも JdkSSLAdapter は適切に動作します。
WLS 10.3 では、 Class.forName() を呼び出して Sun のクラス名が存在するかどうかを判断します。クラスが正常にロードされて Class オブジェクトが返された場合は、そのオブジェクトを使用して Sun プロトコル ハンドラがインスタンス化され、これまでと同様に使用されます。クラスがロードされない場合は、対応する IBM クラスの名前 ( com.ibm.net.ssl.ww2.protocol.https.Handler ) を使用して同じ処理が試行されます。万一どちらのクラスもロードできない場合は、 IOException が送出されて処理が失敗します。
|
|
|
|
WebLogic Server では、親 Web サービスの対象ネームスペースに適合しないパッケージを持つカスタム例外を、コールバックで使用することはできません。
コールバックで使用されるカスタム例外は、親 Web サービスの対象ネームスペースに適合するパッケージに入れるようにしてください。
|
|
|
|
プロキシ サーバを使用している環境では、JMS 転送を使用できません。これは、JMS 転送の場合は Web サービス クライアントが常に t3 プロトコルを使用して Web サービスに接続するのに対し、プロキシ サーバでは HTTP/HTTPS しか受け付けられないためです。
|
|
|
|
Web サービス パラメータとして複合型 http://www.w3.org/2001/XMLSchema{schema} を使用する WSDL の処理中に clientgen が失敗します。
|
|
|
|
大文字/小文字が混在するパッケージ名を使用してコールバック インタフェースを定義している Web サービスは、 jwsc によるコンパイルに失敗します。
名前が小文字のパッケージでコールバック インタフェースを作成します。
|
|
|
|
WebLogic Server 9.2 以降では、コールバック Web サービスでの JAX RPC ハンドラはサポートされません。
WebLogic Workshop 8.1 で作成された Web サービスで JAX RPC ハンドラが使用されていた場合、そのアプリケーションは、コールバック ハンドラ機能を使用しないように再設計する必要があります。
|
|
|
|
WebLogic Server 9.2 以降では、コールバック Web サービスでのメッセージ レベルのセキュリティはサポートされません。
WebLogic Workshop 8.1 で作成された Web サービスで WS-Security を使用している場合は、コールバックでメッセージ レベルのセキュリティを使用しないように Web サービスを再設計する必要があります。
|
|
|
|
WebLogic Server では、Java メソッドの引数または戻り値のパラメータが XmlBean プロパティを含む JAX-RPC 形式の JavaBean である場合、その処理をサポートしていません。たとえば、アプリケーションは次のようなシグネチャのメソッドを持つことはできません。 void myMethod(myJavaBean bean);
public class MyJavaBean { private String stringProperty; private XmlObject xmlObjectProperty;
String getStringProperty() { return stringProperty; } void setStringProperty(String s) { stringProperty = s; }
XmlObject getXmlObjectProperty() { return xmlObjectProperty; } void getXmlObjectProperty(XmlObject x) { xmlObjectProperty = x; }
|
|
|
|
WebLogic Server 9.2 以降では、Web サービスの URL での 2 バイト文字の使用はサポートされません。
WebLogic Workshop 8.1 で作成された Web サービスが URL で 2 バイト文字を使用している場合は、URL から 2 バイト文字をすべて削除するように Web サービスを再設計する必要があります。
|
|
|
|
JWS コールバックで 2 次元の XmlObject パラメータ ( XmlObject [][]) を使用すると、 IllegalArgumentException が発生します。
|
|
|
|
@WildcardBinding(className="javax.xml.soap.SOAPElement[]", binding=WildcardParticle.ANYTYPE) のように Web サービス パラメータとして SoapElement[] を使用すると、クライアントでは常に空の配列が生成されます。
SOAPElement[] のデフォルト バインディングを WildcardParticle.ANYTYPE に変更する際に、 @WildcardBinding アノテーションを使用しないようにしてください。 SOAPElement[] のデフォルト バインディングが WildcardParticle.ANY に設定されます。
|
|
|
|
特定の状況において、信頼性のあるメッセージング用にコンフィグレーションされた WebLogic Web サービスを呼び出すと、次のような PersistentStoreRuntimeException エラーが送出されます。
weblogic.store.PersistentStoreRuntimeException: [Store:280051]The persistent store was not able to create a new record.
信頼性のある Web サービスをデプロイする WebLogic Server インスタンスを起動する際に、次のプロパティを設定してください。
-Dweblogic.wsee.exclude.properties=weblogic.wsee.ejb.target
|
|
|
|
Google wsdl から生成された WLS Web サービス クライアントが Google サービスを呼び出せません。呼び出しから SOAP Fault が返されます。
Google サービスでは、リクエスト SOAP の要素で xsi:type 属性を定義している必要があります。クライアント スタブの WLStub.MARSHAL_FORCE_INCLUDE_XSI_TYPE プロパティを true に設定できます。以下にサンプル コードの抜粋を示します。
import weblogic.wsee.jaxrpc.WLStub; import javax.xml.rpc.Stub; ...
GoogleSearchService service = new GoogleSearchService_Impl(); GoogleSearchPort port = service.getGoogleSearchPort();
//** プロパティを設定 **// ((Stub)port)._setProperty(WLStub.MARSHAL_ FORCE_INCLUDE_XSI_TYPE,'true');
googlesearch.GoogleSearchResult result = port.doGoogleSearch( 'CyaccPpQFHKPBgXIqSuExba5IyHTMBT/', 'spanish empire',0,1,true,'', true,'lang_en','UTF-8','UTF-8');
|
|
|
|
Web サービス A から Web サービス B を呼び出す場合には、Web サービス A で @ServiceClient アノテーションを使用して呼び出す必要があります。Web サービス B において Web サービス B に添付されていないカスタム ポリシー ファイルが必要になる場合、Web サービス A の実行は失敗します。Web サービス A は、ポリシー ファイルを /Web-Inf/classes/policies/xxx.xml で検索します。しかし、その場所にはポリシー ファイルが存在しないため、ファイルが見つからないことを示す例外が送出されます。
Web サービス B にカスタム ポリシー ファイルを添付してください。次に例を示します。
@Policy(uri="CustomPolicy.xml", attachToWsdl=true) public class B { ... }
|
|
|
|
以前のリリースの WLS で、WLS クライアントが .NET サービスとやり取りするときに WS-SecureConversation を使用してメッセージを保護する場合、WLS クライアントの呼び出しが .NET Server で失敗し、一般的なエラー メッセージが生成されることがありました。この問題は WLS 10.3 では発生しません。
|
|
|
|
JAX-WS Web サービスの WebMethod 名に、非 ASCII 文字やマルチバイト文字を使用することはできません。これは、 com.sun.tools.javac.main.JavaCompiler クラスの国際化 (i18n) のバグによるものです。
WebMethod 名には、ASCII 文字のみを使用してください。
|
|
|
|
以前のリリースでは、WS-SecureConversation を使用してメッセージ交換を保護する WLS クライアントがメッセージを拒否されて、データ フォーマットの問題が原因の以下のメッセージが表示されることがありました。
System.FormatException: String was not recognized as a valid DateTime.
WLS 10.3 では、クライアント アプリケーションでこの .NET 例外は発生しなくなりました。
|
|
|
|
WebLogic Server で XMLRegistry サービスが有効になっている場合、キャッシュ サービスが有効になり、XML ファイルが検証された後で DTD/スキーマ ファイルの内容がキャッシュされる可能性があります。同じ DTD/スキーマを使用する XML ファイルが検証される場合は、DTD/スキーマ ファイルの内容がキャッシュ サービスから取得されます。
キャッシュされた内容の期限が切れる前に実際の DTD/スキーマ ファイルの内容が変更された場合、キャッシュ サービスにはキャッシュ内容の更新が認識されません。
config.xml で <handle-entity-invalidation> を設定すると、XML ファイルの検証に失敗した場合にキャッシュされている DTD/スキーマの内容が無効になることを指定できます。その場合、キャッシュ サービスはキャッシュされた内容を更新し、XML ファイルは自動的に再び検証されます。それでも検証が失敗する場合は、検証エラーが送出されます。 <handle-entity-invalidation> を設定するには、 config.xml を手動でコンフィグレーションする必要があります。
以下の例では、1 つのエンティティまたは複数のエンティティに対する設定方法を示します。
例 1。1 つのエンティティに対してキャッシュの検証処理を有効にする場合 (SAX パーサにも適用されます)
<xml-registry> <name>dtdCache</name> <document-builder-factory> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl </document-builder-factory> <xml-entity-spec-registry-entry> <name>deliveryResponse</name> <public-id>DELIVERY</public-id> <system-id>http://jasemulator:7011/Emulator/dtd/delivery.dtd </system-id> <entity-uri>http://jasemulator:7011/Emulator/dtd/delivery.dtd </entity-uri> <when-to-cache>cache-on-reference</when-to-cache> <cache-timeout-interval>60000</cache-timeout-interval> <handle-entity-invalidation>true</handle-entity-invalidation> </xml-entity-spec-registry-entry> </xml-registry>
|
|
|
|
例 2。複数のエンティティに対してキャッシュの検証処理を有効にする場合 (SAX パーサにも適用されます)
<xml-registry> <name>dtdCache</name> <document-builder-factory> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</document-builder-factory> <handle-entity-invalidation>true</handle-entity-invalidation> <xml-entity-spec-registry-entry> <name>deliveryResponse</name> <public-id>DELIVERY</public-id> <system-id>http://jasemulator:7011/Emulator/dtd/delivery.dtd </system-id> <entity-uri>http://jasemulator:7011/Emulator/dtd/delivery.dtd </entity-uri> </xml-entity-spec-registry-entry> <xml-entity-spec-registry-entry> <name>purchaseOrder</name> <public-id>PO</public-id> <system-id>http://jasemulator:7001/Emulator/dtd/purchase.dtd </system-id> <entity-uri>http://jasemulator:7001/Emulator/dtd/purchase.dtd </entity-uri> </xml-entity-spec-registry-entry> </xml-registry>
|
|
|
|
JAX-WS の wsdlc では、適切なサービス実装テンプレート ファイルを生成するために外部バインディングのカスタマイズは使用しません。
WLS 10.3 では、実装テンプレート ファイルの名前が変更されました。また、wsdlc タスクの srcServiceName および srcPortName オプションも変更されました。詳細については、『 WebLogic Web サービス リファレンス』で wsdlc Ant タスクのドキュメントを参照してください。
|
|
|
|
WLS Web サービスの XML スキーマから生成される XMLBeans クラスを生成または使用するときに、XML スキーマの「パーティクルの有効制限」ルールは強制されなくなりました。業界固有の組織 (http://www.hl7.org の Heath Level Seven など) によって定義された Web サービスの多くでは、XML スキーマのパーティクルの有効制限に対応したメタデータを指定していません。
以前の WLS では、(たとえば、 wsdlc タスクの実行中やデプロイメント時に)、そのようなスキーマはコンパイルに失敗し、次のようなエラーが発生していました。
error: rcase-Recurse.2: Invalid Restriction. The following particles of the derived <sequence> cannot be mapped to the base <sequence>'s particles:
<element name='thumbnail@urn:hl7-org:v3'>
WLS 10.3 では、この制限が緩和された結果、XMLBeans クラスはスキーマから完全に正しく生成されるようになりました。
注意 : |
これらのスキーマとそのスキーマから生成された Java クラスは常に正しくなり、Web サービスに含まれた場合に適切な結果を生成します。 |
|
|
|
|
WLS 10.3 に付属している JDK6/JRockit6 を使用していない場合、ソース ファイルを調べるために JavaDoc を呼び出すときにエラーが発生する場合があります。これはシステム クラスローダに $JAVA_HOME/lib/tools.jar がないことが原因である可能性があります。この問題が起きる共通のケースとしては、Ant ツールを使用するときに、特殊なコンテキストを使用して tools.jar のクラスをロードする場合があります。
または、Java -classpath パラメータに $JAVA_HOME/lib/tools.jar を追加すると、この問題を回避できます。Ant を実行する場合は、 -classpath に tools.jar を追加するように、標準の Ant スクリプトを変更する必要があります。
|
|
|
|
セキュリティ ポリシーに以下のいずれかのトークン アサーションが含まれている場合、クライアント サイドでサーバの応答メッセージの署名の検証に失敗する可能性があります。
<sp:WssX509PkiPathV1Token11/> <sp:WssX509Pkcs7Token11/> <sp:WssX509PkiPathV1Token10/> <sp:WssX509Pkcs7Token10/>
また、 <sp:WssX509Pkcs7Token11/> または <sp:WssX509Pkcs7Token10/> トークン アサーションの場合に、X509 のチェーン内に 3 つ以上の証明書があると、サーバ サイドで受信するメッセージの署名の検証に失敗する可能性があります。
証明書チェーン全体がクライアント サイドに保持されない限り、次のようなポリシーはサポートされません。
<sp:AsymmetricBinding> <wsp:Policy> <sp:InitiatorToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/AlwaysToRecipient'>
<wsp:Policy> <sp:WssX509Pkcs7Token11/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:InitiatorToken> <sp:RecipientToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/Never'> <wsp:Policy> <sp:WssX509Pkcs7Token11/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:RecipientToken> . . . </wsp:Policy> </sp:AsymmetricBinding>
|
|
|
|
以下の 2 つの解決策のいずれかを使用してください。
WssX509PkiPathV1Token11/> の代わりに <sp:WssX509V3Token10/> トークン アサーションを使用して応答をコンフィグレーションします。ポリシーは次のようになります。
<sp:AsymmetricBinding> <wsp:Policy> <sp:InitiatorToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/AlwaysToRecipient'> <wsp:Policy> WssX509PkiPathV1Token11/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:InitiatorToken> <sp:RecipientToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/Never'> <wsp:Policy> <sp:WssX509V3Token10/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:RecipientToken> . . . </wsp:Policy> </sp:AsymmetricBinding>
|
|
|
|
WssX509PkiPathV1Token11/> トークン アサーションを使用して応答をコンフィグレーションしますが、それをメッセージ内に含めてください。ポリシーは次のようになります。
<sp:AsymmetricBinding> <wsp:Policy> <sp:InitiatorToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/AlwaysToRecipient'> <wsp:Policy> WssX509PkiPathV1Token11/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:InitiatorToken> <sp:RecipientToken> <wsp:Policy> <sp:X509Token sp:IncludeToken='. . ./IncludeToken/AlwaysToInitiator'> <wsp:Policy> WssX509PkiPathV1Token11/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:RecipientToken> . . . </wsp:Policy> </sp:AsymmetricBinding>
X509 証明書チェーンに複数の証明書がある場合は、 <sp:WssX509Pkcs7Token11/> または <sp:WssX509Pkcs7Token10/> の代わりに、 WssX509PkiPathV1Token11/> または <sp:WssX509PkiPathV1Token10/> を使用してください。
|
|
|
|
WebLogic Web サービスでは、各 WebLogic Server ドメインに Web サービスのサポートに必要な特定のリソースが含まれていることを想定しています。しかし、一部のドメインではこれらのリソースが作成されていません。
たとえば、コンフィグレーション ウィザードで (他のテンプレートを適用せずに) デフォルトの WebLogic Server ドメインを作成すると、必要な Web リソースが作成されません。
Web サービス リソースを含まないドメインは、Web サービスと関連のないシナリオや、非同期のリクエスト/応答を呼び出さない Web サービスのシナリオであれば、適切に起動して実行されます。ただし、サーバ ログには、非同期リソースがコンフィグレーションされていないことと、Web サービス用の非同期応答サービスが完全にデプロイされていないことを示す INFO メッセージが表示されます。
Web サービス リソースがコンフィグレーションされていないドメインでは、非同期のリクエスト/応答を使用する Web サービスは適切に動作しません。 これらのリソースをコンフィグレーションするには、2 つの方法があります。
コンフィグレーション ウィザードを使用し、ドメインに wls_webservice.jar テンプレートを適用する。
Web サービスのドメイン コンフィグレーションに関するオンライン ドキュメントに記載されたルールに従って、これらのリソースを手動でコンフィグレーションする。
注意 : |
ドメインですでに JMS サーバがコンフィグレーションされていて、送り先などの JMS リソースで「デフォルトの対象指定」が有効になっている場合、上記のコンフィグレーション ウィザードの方法はお勧めしません。ウィザードは自動的に追加の JMS サーバを作成し、デフォルトで対象指定されたリソースが、新しく作成された JMS サーバ上に自動的に現れる可能性があります。たとえば、分散送り先が作成されて、突然、想定よりも多数の JMS サーバの対象になる可能性があります。 |
|
|
|
|
信頼性のあるメッセージングでは、クライアント証明書を使用した非同期応答と確認応答の送信をサポートできません。
非同期の、または信頼性のあるメッセージングを使用する Web サービスでは、非同期の応答や確認応答を送信する目的で (受信側サービスから送信側サービスに向けて) 新しい接続を確立するときに、サーバの SSL 証明書を自動的に使用します。
|
|
|
|
build.xml の xmlcatalog 要素では、エンティティの場所はローカル ファイル システム上のファイルでなければなりません。リモート ファイル ( http: など) やアーカイブ内のファイル ( jar: など) は使用できません。
必要な場合は、代わりに、カタログ ファイル内のエンティティとしてリモート要素を定義してください。
|
|
|
|
XML カタログ機能を使用する場合、カタログ ファイルでは public 要素がサポートされません。JAX-WS EntityResolver 実装との整合性を保つためにサポートされていません。WLS はカタログ ファイルで system 要素の定義のみをサポートしています。
|
|
|
|
WLS 10.3 で WLS 9.x のクライアント アーティファクトを生成しようとする場合、組み込みのタスク clientgen を直接使用できません。
WLS 10.3 では、Ant の組み込みの clientgen タスクの typedef クラスは weblogic.wsee.tools.anttasks.ClientGenTask です。WLS 10.3 で WLS 9.x のクライアント アーティファクトを生成する場合は、以下のいずれかが必要です。
|
|
|
|
ローカルの xmlcatalog 要素が Ant の制限のために正しく機能しません。
Ant build.xml ファイルで、同じターゲット内の場合は clientgen(wsdlc) タスクより上にローカルの要素を定義する必要があります。または、その要素を別のターゲットで定義してください。
|
|
|
|
以前のリリースでは、WSSC のキー長に関してはアルゴリズム スイート ポリシーが使用されないため、WLS から .NET への WSSC+RM の相互運用性が信頼ハンドシェーク中に失敗しました。WLS は対称鍵の最大キー長に関しては WS-SecurityPolicy 仕様を適切に解釈します。しかし、Microsoft やその他の実装では、ポリシーのアルゴリズム スイートで最小として指定されたキー長を「正しい」キー長として扱い、最大長を (正しいとしても) 受け付けない場合があります。
WLS 10.3 では、キーを派生する場合、最大キー長が正しく、より安全だとしても、アルゴリズムで指定された最小のキー長を常に使用するように、クライアント サイドの動作が変更されました。これで、Microsoft の場合にも WLS は適切に解釈できるようになります。そのため、WLS 10.3 では以前のリリースよりも短い (したがって安全性の低い) キー長を使用することになります。ただし、派生されるすべてのキーは、少なくとも、ポリシーのアルゴリズム スイートで指定された最小のキー長を持っています。
|
|
|
|
WLS 10.3 では、 SecureConversationToken ポリシー要素で includeToken 属性設定を使用できます。以前のリリースではトークンが常に含まれていましたが、これは不適切でした。
|
|
|
|
JWS で webmethod のパラメータとして内部クラスの内部クラスを使用すると、JWSC タスクで警告が発生します。
JWS の webmethod のパラメータとして内部クラスの内部クラスを使用することは避けてください。
|
|
|
|
以前のリリースとは異なり、WSL 10.3 では「暗号化前の署名」ポリシーが使用可能になりました。
|
|
|
|
WLS 10.0 では、 UseX509ForIdentity フラグが設定されている場合でも、X509 証明書が認証に使用されませんでした。この問題は WLS 10.3 で修正されました。
ドメインのコンフィグレーションに Python スクリプトを使用し、デフォルトの x509 ハンドラを作成する場合は、 UseX509ForIdentity を false に設定してください。
wsm = cmo.lookupWebserviceSecurity ('default_wss') wtm = wsm.createWebserviceTokenHandler ('default_x509_handler') wtm.setClassName('weblogic.xml.crypto.wss. BinarySecurityTokenHandler') wtm.setTokenType('x509') wtm.setHandlingOrder(2) cpm = wtm.createConfigurationProperty ('UseX509ForIdentity') cpm.setValue('false')
上記のコードを起動スクリプトに追加しない場合は、WLS 10.0 で動作していた安全な Web サービスの一部が WLS 10.3 で動作しない可能性があります。
|
|
|
|
JMS 転送を使用する Web サービスは、障害が発生したクラスタ化サーバが再起動した後や、クラスタ内の他のサーバが起動してしばらくたってからサーバが起動した場合に、リクエストをロード バランシングしません。これは、新しく起動したクラスタ化サーバにメッセージを受信して処理する機会がないためです。
この問題はロード バランシングのパフォーマンスに影響を与える可能性がありますが、フェイルオーバ機能には影響はありません。
|
|
|
|
WLS Web サービス JAXRPC クライアントはマルチバイト文字を含む HTTP SOAPAction ヘッダをエンコードしません。WLS サーバは HTTP ヘッダで ASCII のみをサポートします。
wsdl で SOAP アクションを ASCII に変更してください。
|
|
|
|
WLS 10.0 で、JAX-WS を使用するときに、応答ラッパー Bean の名前が重複していない場合に、以下のメッセージが発生することがありました。
Response wrapper bean names must be unique and must not clash
WLS 10.3 では、この問題は発生しなくなりました。
|
|
|
|
clientgen タスクの xmlcatalog 要素で外部カタログ ファイルを使用できません。たとえば、次のような Ant ビルド ファイルは機能しません。
<clientgen ... <xmlcatalog> <catalogpath> <pathelement location='wsdlcatalog.xml'/> </catalogpath> </xmlcatalog>
リソースの場所は、インラインか外部カタログ ファイルで、または両方で指定できます。外部カタログ ファイルを使用するには、 xml-commons リゾルバ ライブラリ ( resolver.jar ) をクラスパスに含める必要があります。外部カタログ ファイルの形式はプレーン テキストまたは XML です。 xml-commons リゾルバ ライブラリがクラスパスで見つからない場合、 <catalogpath> パスで指定された外部カタログ ファイルは無視されて、警告がログに記録されます。ただし、この場合でも、インライン エントリの処理は正常に続行されます。
現在、インラインで指定できるのは <dtd> 要素と <entity> 要素のみです。これらの要素はそれぞれ、OASIS カタログ エントリ タイプの PUBLIC と URI に対応します。
|
|
|