1.0 概要
2.0 サポートするソフトウェアと仕様
3.0 従来のリリースからの変更点
4.0 既知の問題
4.1 Web サービス・
エクスプローラー
4.2 TCP/IP モニター・サーバーは Linux 上で動作しない
4.3 プライベート UDDI レジストリー
4.4 IBM SOAP ランタイムとのインターオペラビリティー
4.5 DADX ファイルからの WSDL 文書の生成
4.6 Web ツールの JSP ジェネレーター
4.7 病院のシナリオ
4.8 Universal Test Client の使用
4.9 特定の場合に、DADX Web サービスでの複数出力が可能となる
4.10 JDBC ドライバー設定は Linux 専用である
4.11 XML エクステンダーがデフォルト・ディレクトリーにインストールされていない場合、
DAD 実例ファイルの更新が必要
4.12 DADX Web サービスに関する問題
4.13 エクスプローラーのポップアップ・ダイアログは、Mozilla および Netscape が共に
実行中の場合には、正しく表示されない場合がある
4.14 DADX 生成サポート
4.15 4.0.x からの Web サービス・ファイルのインポート後の WSDL エラー
4.16 GTK がインストールされている Linux を使用する際の問題
4.17 AXIS ランタイムで Tomcat サーバーを使用
4.18 Web サービス・コマンド行を使用する際の問題
4.19 既存のサーバーを使用せずに Web サービスを作成する
4.20 Web サービスのサンプル・アプリケーションの生成
4.21 HTTP 基本認証での WSDL ファイルのインポート
4.22 WebSphere v5.0.2 ランタイムを使用する際の問題
4.23 データ・ソース情報を使用した DADX グループのセットアップ
4.24 Universal Test Client を使用したクライアント・ロケーターのロード
4.25 監視されないリソース設定
4.26 Apache Axis 1.0 ランタイムを使用する際の問題
4.27 Web サービスのサンプル JSP がコンパイルできない
4.28 定義されていないローカル・ホストのエラー
4.29 IBM SOAP ランタイムを使用する場合の永続的な制限
4.30 別のランタイムを使用する Web サービスとクライアント
4.31 Web サービス・クライアント・ウィザードで「完了 (Finish)」をクリックする
4.32 Web サービスの参考文献
Web サービス・ツール・フィーチャーを使用すると、Java Bean、DADX、Enterprise Bean、および URL Web サービスの検出、作成、およびパブリッシュを行うことができます。 この README ファイルでは、次の Web サービス・ツール機能に関係する既知の問題、制限、 およびそれらの回避策について説明します。
- Java Bean、DADX 文書、Enterprise Bean、ISD ファイル、および URL からの WSDL 文書の生成
- WSDL 文書からの、Java プロキシー、またはスケルトンの生成
- Java Bean、DADX 、Enterprise Bean、または URL からの Web サービスの作成とデプロイ
- Web サービスの検出とパブリッシュ
- Java プロキシーからのサンプル Web アプリケーションの生成
- インターオペラビリティーの問題
このリリースの Web サービス・ツールは、次の仕様に合致するコードを生成します。
- Simple Object Access Protocol (SOAP) バージョン 1.1
- Universal Description, Discovery, and Integration (UDDI) バージョン 2.0
- Web Services Definition Language (WSDL) バージョン 1.1
- Web Services Inspection Language (WSIL) バージョン 1.0
このリリースの Web サービス・ツールは次をサポートします。
- IBM WebSphere v5.0.2 Web サービス・ランタイム
- IBM SOAP バージョン 2.2 およびバージョン 2.3 ランタイム環境
- Apache Axis 1.0 ランタイム
Mozilla を使用してワークベンチの外部から WORF テスト環境を起動している場合には、 少なくともバージョン 1.3.1 の Mozilla が推奨されています。Mozilla ブラウザーの以前のバージョンの Web サービスの起動による出力と記述ファイルは、適切ではありません。
DADX ランタイムには、DB2 7.2 修正パッケージ 6 以降、または DB2 8.1 以降が必要です。
以下は、v5.1 の Web サービス・ツールにおける新しいフィーチャーです。
- IBM WebSphere v5.0.2 Web サービス・ランタイムのサポート。これは、 JSR-109 および JAX-RPC をサポートする戦略的な IBM Web サービス・ランタイムです。
- Apache Axis 1.0 ランタイムのサポート。このランタイムは JAX-RPC をサポートし、 オープン Apache Axis プラットフォームの開発を選ぶユーザーを対象としています。
- Java Bean、EJB、または WSDL ファイルからの Web サービスの作成を可能にし、UDDI レジス トリーへのビジネスとサービスの公開と非公開を可能にする、Web サービス・ コマンド行ツールの提供。
- Web サービス・エクスプローラーに完全に 統合された WSDL エクスプローラー。
- Web サービス・アプリケーション ・アセンブリー・ツールは、以下を提供します。
- JSR-109 および IBM WebSphere v5.0.2 デプロイメント記述子を編集するための Web サービス・エディター および Web サービス・クライアント・エディター。
- EndpointEnabler 関数を呼び出すポップアップ・アクション。
- WebServiceDeploy 関数を呼び出すポップアップ・アクション。
- 設定から WS-I 準拠の Web サービスを作成中のユーザーに対するヘルプ・ガイド。 Web サービスの作成時に、Web サービス・ウィザードで WS-I 準拠を要求するか 、提案するか、または無視するかを選択できます。
- プロキシーごとに WSIL Web サービス参照文書を生成し、使用します。
- サンプルの セキュリティー構成で WebSphere v5.0.2 デプロイメント記述子を更新可能。
- EJB から Web サービスを作成する場合に、SOAP メッセージのトランスポートとして SOAP over JMS がサポートされます。
- ユーザー定義の UDDI カテゴリーの サポート。
- Web サービスの妥当性検査のサポート。設定が行われると 、ツールは、エンタープライズ・アプリケーションおよび/またはその中のモジュールが JSR-109 に準拠した一連の規則に従っていることを検証します。
- 専用 UDDI レジストリーを持つ Web サービス・エクスプローラーを使用すると、ビジネス・ノードの Manage Publisher Assertion Form は、以下の状況ではロードを行いません。
- ユーザーは、ビジネス・ノードを含むレジストリー・ノードにログインしていない。
- ユーザーは、ビジネス・ノードを含むレジストリー・ノードにログインしている。しかし、そのビジネス・ノードは収容されているレジストリーに従来からログインしているユーザー ID/パスワードの所有ではない。
- 基本認証対応の UDDI レジストリーでは、Web サービス・エクスプローラーを使用して照会または公開することはできません。 この種類のレジストリーの例としては、サーバー上にデプロイして基本認証をオンにした専用レジストリーがあります。 この問題では、共通レジストリー (IBM、Microsoft、SAP、NTT、および XMethods) はすべて影響を受けないことに注意してください。
- Web サービス・エクスプローラーで拡張検索を使用して、Cloudscape バックエンドで構成されている WAS 専用 UDDI レジストリー中のビジネスを検索する際、1 つ以上のサービス・インターフェースがパラメーターとして指定されていると、検索が失敗して、状況ウィンドウに次のように表示されます。
com.ibm.uddi4j.wsdl.client.UDDIWSDLProxyException: Could not list all service providers. ------------------------------------------------------------------------------ Nested exception is:E_fatalError (10500) Serious technical error has occurred while processing the request. : Fault code=Client Fault string=Client Error Fault actor=null Detail=null DispositionReport: ErrCode=E_fatalError ErrInfoText=E_fatalError (10500) Serious technical error has occurred while processing the request.
- XMethods レジストリーには、公開済み Web サービスを検証するための手順が用意されて おり、アクセス不能な Web サービスや動作していない Web サービスを削除します。 公開済み Web サービスが削除されないようにするには、WSDL ファイル内のすべての URL 参照先がインターネット上でアクセス可能になっていることを確認してください。
SAP UDDI Business Registry は、カテゴリー別ビジネス検索要求で findQualifier が「combineCategoryBags」の場合に (tModelKey が UUID:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2 と同じ)、E_fatalError を戻します。 以下のメッセージが状況ウィンドウに表示されます。これは、SAP UDDI Business Registry に固有の問題です。
com.ibm.uddi4j.wsdl.client.UDDIWSDLProxyException: Could not list all service providers. ------------------------------------------------------------------------------ Nested exception is:A serious technical error has occurred while processing the request. : Fault code=Client Fault string=UDDI Error Fault actor=null Detail=null DispositionReport: ErrCode=E_fatalError ErrInfoText=A serious technical error has occurred while processing the request. at com.ibm.uddi4j.wsdl.client.UDDIWSDLProxy.findAllServiceProviders(UDDIWSDLProxy.java:1626) at FindBusWithQualifier.main(FindBusWithQualifier.java:35)
- SAP UDDI Business Registry が戻すパブリッシャー表明レポートには、状況が含まれません。 このため、Web サービス・エクスプローラーの Manage Publisher Assertion Form のパブリッシャー表明状況列は、SAP が戻したレポートでは空白になります。 これは、SAP UDDI Business Registry に固有の問題です。
- ビジネス、サービス、またはサービス・インターフェースを XMethods UDDI レジストリーに公開しようとすると、「SSL ハンドシェーク障害 (SSL Handshake Failure)」に関するエラー・メッセージが表示されます。これは、IBM および XMethods が調査中の既知の問題です。
TCP/IP モニター・サーバーは、Linux 上で動作しません。Web サービスおよび Web サービス・クライアント (例えば、Web サービス・サンプル JSP、Web ツール Java Bean JSP、および Universal Test Client) 間にモニター・サーバーを挿入しようとすると、 クライアントおよびサービス間の通信を妨げます。 特に、クライアントは、サービスからの最初の応答で永久にハングします。 サンプル JSP または UTC でこの状態からリカバリーするには、すべてのブラウザーを閉じて、WebSphere Studio の外部から新規ブラウザーを起動して、生成されたサンプル JSP または Universal Test Client に適切な URL を入力します。
Linux の SOAP トラフィックをモニターするには、Apache SOAP ランタイムに含まれている TCP/IP トンネルなどの他のモニター・ツールを使用してください。Apache SOAP ランタイムは、http://ws.apache.org/soap/index.html.tool でダウンロードできます。 トンネルを開始して、Web サービス・クライアント操作を起動します。 要求および応答トラフィックがトンネルに表示されますが、クライアントは中断されて表示されます。 トンネルを停止してください。 これによって、クライアントはブロックが解除され、その操作は完了します。 次の呼び出しを行う前に、トンネルを再始動します。
- プライベート UDDI レジストリーのパブリッシャー表明がレジストリー内のすべてのビジネスに対して 可視である場合があります。 あるビジネスが、そのビジネス自身に関連しているパブリッシャー表明を見る場合があります。例えば、ビジネスのキーが、パブリッシャー表明のキーからのものでもキーへのものでもない場合などです。
- 単体テスト UDDI レジストリーを Cloudscape データベース・バックエンドで構成すると、UDDI の名前別検索メソッドは、 デフォルトでケース・センシティブ検索を実行します。 このことは UDDI 仕様に反し、制限項目です。
- プライベート UDDI レジストリーは、ごく基本的なテスト 目的の Cloudscape バックエンドで構成してください (つまり、複合照会などのアクション では現在問題があるので、このバックエンドは実動作業には使用しないでください)。 プライベート UDDI レジストリーについて詳しくは、WAS V5 InfoCenter に記載の「ネットワーク・デプロイメント」に関する説明を参照してください。
- Linux で Cloudscape ベースの単体テスト UDDI レジストリーを作成または更新した後、 サーバー・コンソールで以下の内容の赤色の警告が表示されることがあります。
Cloudscape (instance <uuid>) is attempting to boot the database <UDDI DB location> even though Cloudscape (instance <uuid>) may still be active. Only one instance of Cloudscape should boot a database at a time. Severe and non-recoverable corruption can result and may have already occurred.
この警告は偽のアラームです。詳細については、以下を参照してください。
http://www-1.ibm.com/support/docview.wss?rs=636&context=SSCVRP&q=&uid=swg21051601&loc=en_US&cs=utf-8&lang=en+en
- IBM SOAP ランタイムの使用時に、複合パラメーターを 使用して WSDL を生成すると、WSDL を使用する Microsoft ツールで問題が発生する場合が あります。 Microsoft ツールは、XSD の include ステートメントを正しく処理できないため、XSD スキーマを生成した WSDL にインラインで組み込む 必要が生じます。 これは、以下を選択することによって行うことができます。
「ウィンドウ」>「設定」>「Web Services」>「コード生成」>「インライン・スキーマの使用」IBM SOAP ランタイムの使用時に、Web サービス・ ウィザードでは、「エレメント・ベースのマッピングを使用可能にする (Enable element-based mapping)」チェック・ボックスをチェックすると、通常の型ベースのマッピングの他に、エレメント・ベースのマッピングの生成を完全に行えるようになりました。 このチェック・ボックスは、WSAD メインメニューの中の以下の設定ページにあります。
「ウィンドウ (Windows)」 > 「設定 (Preferences)」 > 「Web サービス (Web Services)」 > 「コード生成 (Code Generation)」。この設定をデフォルトの「使用可能」にしていない場合は、他のベンダーの Web サービス・ランタイムが「xsi:type」プロパティーのないメッセージを送信する場合に、Apache/IBM SOAP ランタイムが相互協調処理を行いません。 他のベンダーの Web サービス・ランタイムは、xsi:type プロパティーの組み込みについてそれぞれ異なるポリシーを使用します。 このプロパティーを必ず組み込む場合もあります。 まったく組み込まない場合もあります。 構成を選択できる場合もあります。 配列などの特定の型については、xsi:types を省略する場合もあります。
IBM/Apache SOAP ランタイムでは、次のエラーが代表的なエラーです。
targetException=java.lang.IllegalArgumentException: No Deserializer found to deserialize a ':MyElement' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'
使用可能にすると、エレメントを使用したマッピングは次のものに生成されます。
- ボトムアップ Java Bean/EJB シナリオおよび WSDL スケルトン・シナリオの デプロイメント記述子ファイル。
- クライアント・シナリオ内のプロキシー。
エレメント・ベースのマッピング書式は、以下のとおりです。
<isd:map
encodingStyle="encoding style"
xmlns:x="some-namespace"
qname="x:some-local-name"
xml2JavaClassName="some-deserializer-class-name"/>エレメント・ベースのマッピングの生成は以下のものに対して行われます。
- wsdl:message 入力のそれぞれに対して定義されているそれぞれのパーツ。
- スケルトンおよびプロキシーのシナリオの場合は、wsdl:message 出力のそれぞれに対して定義されているそれぞれのパート。
- WSDL ファイル内のパーツが参照するそれぞれの複合型にあるそれぞれのルート・エレメントまたはローカル・エレメント。
WSAD Web サービス・ウィザードは SOAP および XSD 仕様に従って、 エレメント・ベースのマッピング内のエレメント名が修飾される (つまり、ネーム・スペース を持つ) べきかどうかを決定します。
WSAD Web サービス・ウィザードはこれらの規則に従って修飾されるエレメント名 か、修飾されないエレメント名かを決めます。
- WSDL のパート名は非修飾名になります。
- XSD のルート・エレメントは修飾名になります。
- スキーマに elementFormDefault="unqualified" が指定されている場合は (スキーマに elementFormDefault 属性がない場合はこれがデフォルト)、XSD 生成非修飾名内のローカル・エレメント。
- スキーマに elementFormDefault="qualified" が指定されている場合は、XSD 生成修飾名内のローカル・エレメント。
一部のランタイムでは、XSD スキーマの「elementFormDefault」属性を介して修飾エレメントの使用を指定するスキーマ があっても、SOAP メッセージ内で非修飾エレメントが生成されることが分かっています。 この場合は、サービスの WSDL または XSD を手動で編集して、elementFormDefault を「unqualified」に変更する必要があります。
非ネーム・スペース修飾のエレメント使用マッピングの例を示します。
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x=""
qname="x:name"
xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>ネーム・スペース修飾のエレメント使用マッピングの例を示します。
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x="http://www.ibm.com/"
qname="x:name"
xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>エレメントを使用したマッピングは、1 つのエレメント名に対して 1 つだけしか生成されないことに注意してください。つまり、名前が同じでタイプが異なる複数のエレメントをスキーマに使用すると、エレメント使用のマッピングは 1 つだけという基本により、エレメントは効果的に無作為で 1 つだけ選択されます。 名前が同じで型が異なる他のエレメントは、デシリアライズができません。 スキーマがエレメントおよび WSDL パーツに同じ名前を使用した場合も同様です。
- マップの配列または Hashtable の配列を返すサービス Bean を開始するとき、「エレメント・ベースのマッピング」オプションが使用可能になっていると、生成される SOAP プロキシーは戻りの型を誤って java.lang.String[] にマップします。 ランタイム中に ClassCastException が発生します。 この問題を回避するには、Web サービス・クライアント・ウィザードを新規に作成した WSDL で実行し、そして SOAP プロキシーをクライアント・プロジェクトに再生成します。
- Microsoft Web サービスとのインターオペラビリティー を向上するために、DADX ランタイムが更新されています。これでこれらのサービスは、 文書スタイルの Web サービスを生成できます。 このフィーチャーを使用可能にするには、DADX 構成ウィザードを使用して、使用する DADX グループのプロパティー・ページを開きます。 プロパティー・ページの下端にある「文書スタイルを使用する (Use document style)」入力フィールドを「true」に設定してください。
- 複数の出力パラメーターを使用した DADX 呼び出し操作のための Java プロキシーの生成は、サポートされていません。
- DADX Web サービスを作成する際、「IWAB0177E DADX ファイルからの WSDL 生成時にエラー」というエラー・メッセージが表示されることがあります 。ほとんどの場合、このメッセージは何かのデータベース関連の問題を示すもので、サーバー・コンソール・ログを点検して問題の詳細を調べてください。次のチェックも行なってください。
- DAD (*.dad) ファイルは、DADX グループ・ディレクトリー内になければなりません。 これが、WORF ランタイムが DAD ファイルを配置する方法です。
- DAD ファイルを RDB から XML マッピング・ファイル (.rmx) へ生成する場合、 DAD ファイルが DADX ファイルと同じフォルダーにあることを確認してください。
- DADX スキーマでは、文書で WSDL の document タグを使用しなくなりました。 このタグは、DADX スキーマの一部となりました。 更新されたスキーマを使用して古い DADX ファイルがマイグレーションされていない場合は、検証で問題が発生する可能性があります。 例えば、古い DADX ファイルに次の XML が含まれているとします。
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Provides queries for part order information at myco.com.
</wsdl:documentation>新規の文書項目は以下のようになります。
<documentation>
Provides queries for part order information at myco.com.
</documentation>
生成 Web ツール Java bean JSP は、特別なタイプの BigDecimal、Date、GregorianCalendar、 BigInteger および URL をサポートしません。 また、マップ、コレクション、配列、および複合タイプもサポートしません。 これらのタイプをサポートするように JSP を手動で編集するか、あるいは代わりにこれらのタイプをサポートする Web サービスのサンプル JSP を作成します。 「ウィンドウ (Windows)」>「設定 (Preferences)」>「Web サービス (Web Services)」>「ダイアログ (Dialogs)」を選択し、希望のスタイルの生成サンプル JSP を選択します。
DB2 ドライバー db2java.zip は、WebSphere ws.ext.dirs クラス・パスに追加されている必要があります。db2java.zip を追加するには、以下を行なってください。
- Server パースペクティブに切り替える (「ウィンドウ (Window)」>「パースペクティブのオープン (Open Perspective) 」> 「サーバー (Server))」。
- 「サーバー構成 (Server Configuration)」ペインで、「サーバー (Server)」を拡張する。
- 「WebSphere v4.0 テスト環境 (WebSphere v4.0 Test Environment)」をダブルクリックする。「インスタンス (Instance) エディターが開きます。
- 「インスタンス (Instance) エディターで、「パス (Paths)」タブをクリックし、 次に「WebSphere 特定クラス・パス (ws.ext.dirs) (WebSphere specific class path (ws.ext.dirs))」セクションの「外部 JAR の追加 (Add External JARs)」をクリックして、/home/db2inst1/sqllib/java12/db2java.zip を WebSphere パスに追加する。
- 「ファイル (File)」>「保管 (ファイル名) (Save (name of file))」と選択して変更を保管し、次に「インスタンス (Instance) エディターを終了する。
病院のシナリオ文書の更新のために、 WebSphere Developer Domain へ移動し、「ライブラリー (Library)」をクリックします。
Universal Test Client を Web サービス・ウィザードから起動すると、JNDI プロバイダー URL が WebSphere v5 のデフォルト・ポート 2809 に設定されます。 WebSphere v4 サーバーを使用している場合、またはポート番号を変更した場合は、JNDI ディレクトリーを検索することができません。 JNDIディレクトリーへのアクセスを試行すると、以下のエラーを受け取ります。
IWAD0403E Could not construct the JNDI tree: Caught CORBA.COMM_FAILURE when resolving initial reference=WsnNameService次の対策を実行してください。
- 使用しているサーバーをダブルクリック する。 これにより、サーバー・プロパティーが表示されます。
- ポートのタブを選択する。
- Orb ブートストラップ・ポートをコピーする。
- Universal Test Client の「JNDI のプロパティー (JNDI properties)」ウィンドウをオープンする。
- ブートストラップ・ポートを「プロバイダー URL (Provider URL)」テキスト入力ボックスに貼り付ける。
通常は、Web サービス内の複数出力は弊社のツールではサポートされません。 しかし、DADX Web サービスの場合には、「文書スタイル・グループ・プロパティーの使用」が「true」にセットされていれば、複数出力が許可されます。 この場合、「文書スタイル」が「true」 であれば、複数出力は 1 つの XML 文書に結合されます。
「JDBC ドライバー」という新規の Web サービス設定 (「ウィンドウ (Windows) 」> 「設定 (Preferences)」>「Web サービス」) カテゴリーが追加されました。この設定は全プラットフォームで使用できますが、Linux での使用のみを目的としています。 Linux では JDBC ドライバーのある JAR ファイルの場所を判断するのが困難な場合があります。 したがって、この設定ページが追加され、ユーザーが使用する JAR ファイルを指定することができます。 現在、DADX 検証コードのみがこの JAR ファイル情報を使用します。
WSinstall_dir\wstools\eclipse\plugins\com.ibm.etools.webservice_<version>\samples\DADX_examples ディレクトリーにある DAD ファイルは、特定のシステム構成を反映するよう変更を加える 必要がある場合があります。
ファイルの先頭付近にある以下のような行です。
<!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd">
XML エクステンダーが c:\dxx とは別のロケーションにロードされている場合は、この ストリングを実際のロケーションを反映するように更新する必要があります。 これは Linux マシンにも同様に適用されますが、そのロケーションは通常 /usr/IBMdb2xml になります。
- Web サービス・ウィザードの「Web サービスの DADX グループ・プロパティー (Web service DADX group property)」ページでは、 変更が即時に反映されない場合があります。 したがって、DADX グループ・プロパティーへの変更は、DADX グループ構成ウィザードを使用して行うことが推奨されていました。
- DADX ファイルの編集および妥当性検査後、プロジェクトを再ビルドする必要があるということを示すメッセージが「タスク (Tasks)」ビューに表示される場合があります。 そうなった場合には、適切なプロジェクトを右マウス・ボタン・クリックし、「プロジェクトの再ビルド (Rebuild project)」をクリックします。 「タスク (Tasks)」ビューからメッセージを除去するには、これを 2 回行う必要があります。
Web サービス・エクスプローラーのポップアップ・ダイアログは、Mozilla および Netscape が同時に実行中の場合には、正しく表示されない場合があります。 ポップアップ・ダイアログには、「WSDL のブラウズ (Browse WSDL)」ダイアログ、および「カテゴリーのブラウズ (Browse Category)」ダイアログがあります。 この問題を回避するには、Mozilla か Netscape のいずれかを使用するようにしてください。両方を同時に使用しないでください。
ユーザー定義機能は、DADX の生成ウィザードにリストされますが、 現在ユーザー定義機能からの DADX の生成はサポートされていません。DADX の生成は、DAD ファイル、ストアード・プロシージャー、および SQL ステートメントからのみサポートされています。UDF を選択すると、単純な DADX スケルトン・ファイルが生成されます。
4.0.x から Web サービス・ファイルをインポートした場合、次のエラー・メッセージが表示されることがあります。
Error The part 'result' has an invalid value 'anyElement' defined for its type. Type declarations must refer to valid values defined in a schema.
Error The part 'return' has an invalid value 'findPatientResult' defined for its element. Element declarations must refer to valid values defined in a schema.
Error The part 'response' has an invalid value 'findPatientResponse' defined for its element. Element declarations must refer to valid values defined in a schema.次の対策を実行してください。
- WSDL ファイルを削除します。
- Web サービス・ウィザードを再実行して、Web サービスを再生成します。
- GTK がインストールされている Linux で WebSphere Studio を実行すると、Web サービスの作成ウィザードでは、ワークベンチでの選択内容に 関係なく、常に Web サービス・タイプがデフォルトで「スケルトン Java Bean Web サービス (Skeleton Java Bean Web Service)」に設定されます。デフォルトをオーバーライドし、 必要な Web サービス・タイプを選ぶ必要があります。
- 問題は、Axis がインストールされた webapp を備えた Tomcat 4.1 および 4.0 サーバーが稼動する Linux で発生します。サーバーが開始済みで、 WebService ウィザードのある時点で再始動が必要な場合は、Axis によって Tomcat サーバー の停止が妨害されるため、ウィザードがハングすることがあります。
これは、Web サービス・ウィザードを開始する前にサーバーを停止し、テストの Web サービス・アプリ ケーションを生成するウィザードのページで「サーバーで実行 (Run on Server)」のチェック・ マークを外すことで回避できます。
- FileNStoPkg オプション: コマンド行にある WSDL2WebService の -fileNStoPkg オプションは、現在作動していません。コマンド行で -NStoPkg を使用し、各マッピングを入力してください。他に、パッケージ・マッピングへ のネーム・スペースが必要な場合は、Web サービス・ウィザードを使用するオプションが あります。
- スペースのあるディレクトリー: ディレクトリー名にスペースを含むディレクトリーから WSDL2WebService を実行しないよう にしてください。実行すると、生成される compile.bat (または Linux では compile.sh) はコンパイルしません。
- クライアントのデプロイメント 記述子および WSDL ファイル: Bean2WebService、EJB2WebService、WSDL2WebService、 クライアント・サイドのデプロイメント記述子 (webservicesclient.xml、ibm-webservicesclient-bnd.xmi、 ibm-webservicesclient-ext.xmi、および _mapping.xml) は、クライアント・サイド/META-INF の下にあります。管理対象クライアント・アプリケーションを作成する場合は、以下の手順 に従う必要があります。
- EJB または J2EE アプリケーション・クライアントの形 式で管理対象クライアントを実行するには、アーカイブの META-INF の下にあるすべての デプロイメント記述子をパッケージし、(サービスが Web コンテナーにある場合は WEB-INF/wsdl、サービスが EJB コンテナーにある場合は META-INF/wsdl の下にある) サービス・サイドから wsdl を、クライアント・プロジェクトの META-INF/wsdl にコピー する必要があります。
- Web コンテナー内で管理対象クライアントを実行する には、(WebSphere Studio では通常、WAR または Web プロジェクトの形式で) クライアント ・アーカイブの WEB-INF にすべてのデプロイメント記述子をパッケージする必要があります。 また、WSDL ファイルをサーバー・サイドから WEB-INF/wsdl にコピーする必要があります。 さらに、META-INF をすべて WEB-INF に置き換えて、(テキスト・エディター、 または WebSphere Studio では xml エディターを使用して) 手動で webservicesclient.xml を編集する必要もあります。
アンダースコ アーを持つクラス名: Java Bean または EJB から Web サービスを作成するとき、サー ビス Bean のクラス名にアンダースコアーがあり、次の文字が小文字 (例えば test.Simple_bean) である場合は、WebSphere Application Server でサービスを 開始できません。回避策は、アンダースコアーのないサービス Bean 名を使用するか、 アンダースコアーの次の文字に大文字 (例えば test.Simple_Bean) を使用すること です。
- ワークスペースで既存の Web サーバーを使用せずに Web サービスを作成するシナリオの途中に、3 ページ目で「戻る (Back)」をクリックすると、 「次へ (Next)」ボタンが使用不可になります。回避策は、ウィザードを取り消し、 再始動することです。この問題を避けるには、Web サービスのシナリオを開始する前に サーバーと構成を作成するか、既存の Web サーバーがない場合には 3 ページ目で「戻る (Back)」ボタンをクリックしないようにします。
- ワークベンチの Java ファイル上で右マウス・ボタン・ クリックすると、Web サービス・メニューの下にある「サンプル・アプリケーションの 生成 (Generate Sample Application)」ポップアップ・アクションによって、IBM SOAP プロキシーの Web サービス・サンプル JSP が生成されます。その他の Web サービス・ ランタイム (IBM WebSphere 5.0.2 および Apache Axis 1.0) の Web サービス・サンプル JSP を生成するには、WSDL ファイル上で右マウス・ボタン・クリックし、Web サービスの メニューの下にある「クライアントの生成 (Generate Client)」ポップアップ・ アクションを選択します。ウィザードの途中で、「生成されたプロキシーのテスト (Test the generated proxy)」を選択します。
相対インポートを持ち、HTTP 基本認証が保護されている WSDL からスケルトンまたはクライアントを生成すると、正しいユーザー ID とパスワードを入力 した場合でも、WSDL ファイルを解決できないことを示すエラー・メッセージが表示されます。 問題は、インポートするファイルではなくオリジナルの WSDL ファイルを取得するためだけ にユーザー ID とパスワードが使用される点にあります。
この問題を解決するには、 まずワークベンチにインポートする WSDL ファイルとすべてのファイルをダウンロードして、 ダウンロードした WSDL ファイルからスケルトンまたはクライアントを生成します。
- WSDL はサポートされない: デプロイ済みの Web サービスの WSDL ファイルを取得するために、テスト環境またはリモート・サーバー環境 で稼動している WebSphere v5.0.2 にデプロイされている Web サービスのエンドポイント URL に WSDL を追加することはできません。生成された WSDL ファイルは、Java Bean Web サービス用 Web プロジェクトの WebContent/WEB-INF/wsdl の下、および EJB Web サービス 用 EJB プロジェクトの ejbModule/META-INF/wsdl の下にあります。Web プロジェクトから WSDL サービスを提供する必要がある場合は、Web プロジェクトの WebContent/wsdl の下にある WSDL ファイルのコピーを参照するか、WebContent の下に自身のロケーションを作成して Web プロジェクトから WSDL のサービスを提供することができます。
- ユーティリティー JAR または複数のソース・フォルダーの保有: Java Bean または EJB から Web サービスを作成するときは、Web プロジェクトに複数のソース・ フォルダーがあるか、EAR ファイル内のユーティリティー JAR に Bean がある場合、不要な ファイルがモジュールで生成されることがあります。生成されたこれらのファイルは既に (ユーティリティー JAR または別のソース・フォルダーのいずれかの) モジュールに存在する ため、プロジェクトをコンパイルして Web サービスが正しく機能するようにこれらの ファイルを削除する必要があります。他の回避策としては、ソース・フォルダーを 1 つに マージするか、ユーティリティー JAR の Bean をソース・フォルダーにコピーします。
- RPC/リテラルでは配列はサポートされない: RPC/リテラル・サービスを作成する 場合は、メソッド・シグニチャーに配列を含めることはできません。含まれている場合は、 生成したクライアント・コードでサービスを起動できません。この問題に対する回避策 は現在ありません。可能な場合は、文書/リテラルまたは RPC/エンコードを使用してくだ さい。
- 文書/リテラルではメソッドの多重定義は サポートされない: 文書/リテラル・サービスの作成時には、メソッドの多重定義 (同 じメソッド名、異なる入力パラメーター) はサポートされません。この問題に対する回避策 は現在ありません。可能な場合は、RPC/リテラルまたは RPC/エンコードを使用してくだ さい。
- WSDL のインポート: WSDL のインポート・ステートメントは、同一ディレクトリーで絶対 URL または相対 URL のみを持つことができます。例えば、以下の形式の相対インポートはサポートされません。
<import namespace="http://someNamespace/" location="../someFile.wsdl"/>- portType エレメントの前にあるバインディング・エレメント portType エレメントの前にバインディング・エレメントがある WSDL ファイルからクライアント・ プロキシーまたはスケルトンを生成すると、「Error in generating Java files and deployment descriptors from WSDL file (detail: duplicate operation name)」と表示されます。
- 抽象エレメント: 抽象エレメントまたはタイプを使用する演算を使用して WSDL ファイルからスケルトンを生成すると、生成された JavaBeans はコンパイルしません。
- デフォルト JAX-RPC マッピングのない型: デフォルトの JAX-RPC マッピングを 持たない出入力パラメーター型の演算を使用して WSDL ファイルからスケルトンを生成すると 、生成されたインプリメンテーション Bean はコンパイルしません。問題は、 javax.xml.soap.SOAPFactory から javax.xml.soap.SOAPElement を作成すると、 javax.xml.soap.SOAPException がスローされる点にあります。インプリメンテーション Bean はこの例外を catch したり再スローしないため、コンパイルしません。
- 入力と出力での同じスキーマ型: 入出力メッセージと障害メッセージで同じ XML スキーマ型を使用する WSDL ファイルからスケルトンを生成すると、生成された成果物 がランタイムで動作しません。この問題を解決するには、入出力メッセージと障害 メッセージの間で XML スキーマ型定義を共有しないようにします。
- minOccurs および maxOccurs を持つ XSD エレメント参照: WSDL ファイルから スケルトンを生成する場合は、ユーザー指定の minOccurs および maxOccurs 値 (<element ref="..." minOccurs="0" maxOccurs="unbounded"/>) を持つ XSD エレメント参照を使用しないでください。そのようなエレメントを使用すると、 サーバーの始動中に java.util.MissingResourceException が発生します。
- サービス Bean と異なる API を持つ Bean が出力される: Java Bean または EJB から Web サービスを作成する際に、エミッターが生成した Bean がサービス Bean と 異なる API を持っている場合は、以下のようなランタイム・エラーが発生することが あります。
The method is undefined.
Couldn't find a matching Java operation.
生成された Bean と異なる API を持つサービス Bean の例:
- public フィール ドを持つ Bean
- isBooleanValue ではなく getBooleanValue とい う getter を持つブール値フィールド
- 大文字のメソッド名を持つメソッド名
ラップのある文書リテラル: 文書リテラルを使用してボトムアップ Web サービスを作成すると、デフォルトではラップ・オプションがオンになります。別のタイプ の複数の入力があるか、入力がまったくない場合、インターオペラビリティーの問題が発生 することがあります。回避策は、RPC/リテラルを使用することです。 小文字の名前またはアンダースコアーがある Java Bean: 小文字のファイル名 または小文字の前がアンダースコアーになっている Java Bean から Web サービスを作成すると、 エラーが発生します。
Error in generating Java files and deployment descriptors from WSDL file with details of getOutputStream() IOException.異なるセキュリティー構成: 異なるセキュリティー構成の Web サービスを 同じモジュール/プロジェクトに生成しないでください。Web サービスごとに別のプロジェ クトを使用してください。
WebSphere Application Server V5.0 を使用して DADX Web サービスをホスティングする場合は、DADX グループの group.properties ファイルで以下の initialContextFactory プロパティーを使用する必要があります。
initialContextFactory=com.ibm.websphere.naming.WsnInitialContextFactoryまた、DADX グループを含むプロジェクトの web.xml ファイルに、以下を追加する必要 があります。(データ・ソース JNDI 名が jdbc/hospital である場合)
<resource-ref id="ResourceRef_1058550453092">
<res-ref-name>jdbc/hospital</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>CONTAINER</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
サービス Web プロジェクトの Java Bean クラス名がクライアン ト Web プロジェクトの SEI クラス名と同じ場合は、WebSphere v5.0.2 または Axis ランタ イムで生成したクライアント・ロケーター・クラスを Universal Test Client で プリロードできません。この問題を回避するには、次のようにします。
- ワーク スペースからクライアント Web プロジェクトを除去する。
- クライアント Web プロジェクト上で右マウス・ボタン・クリックし、「削除 (Delete)」をクリックする。
- EAR プロジェクトで application.xml を見付け、ファイルをダブルクリックしてアプリケーション・デプロイメン ト記述子エディターを開く。クライアント Web プロジェクトのモジュールを選択し、 「除去 (Remove)」をクリックする。エディターをクローズし、変更を保管する。
- 別の EAR の下にクライアント Web プロジェクトを作成する。ここで、EAR プロジェクト 名は、アルファベット順でサービス EAR プロジェクト名より前の文字にする必要があります。 例えば、「DefaultEAR」というサービス EAR プロジェクト名の場合は、 「ClientEAR」という名前の新しい EAR プロジェクトを作成します。
- Web サービス ・ウィザードを再実行する。
ファイルの上書き、フォルダーの作成、および自動ファイル・チェックアウト の設定は、WebSphere v5.0.2 および Axis ランタイムを使用した Web サービスの作成時に 監視されません。フォルダーの作成は常時可能ですが、自動ファイル・チェックアウト が使用可能になることはありません。
WebSphere v5.0.2 ランタイム の使用時には、WSDL ファイル、SEI、およびデプロイメント成果物 (シリアライザーおよび デシリアライザー) は常時上書きされます。開発の成果物 (サービス Bean、複合タイプ Bean、holder および helper クラス) が上書きされることはありません。ただし、 デプロイメント記述子が存在する場合は、上書きに関する警告が表示されます。「OK」を 選択してデプロイメント記述子を上書きしてシナリオを続行するか、「取消 (Cancel)」 を選択して記述子が上書きされないようにすることができます。
Apache Axis 1.0 ランタイムの使用時には、Axis エミッターによって毎回すべてのサーバ ー/クライアント Java ファイル、deploy.wsdd、および undeploy.wsdd が再生成されます。 サービス生成のシナリオでは、スケルトン実装ファイルが存在しない場合、WSDL2Java は このファイルのみを生成します。この実装が既に存在する場合は、上書きされません。
Apache Axis 1.0 ランタイムを使用して Web サービス を作成する場合は、Axis 1.0 に付属の Java2WSDL および WSDL2Java エミッターを使用 します。文書/リテラルおよび文書/リテラル (ラップ済み) のサポートは Axis 1.0 では問題があるため、Apache Axis 1.0 ランタイムを使用して Web サービスを作成 する場合は RPC/エンコードを使用する必要があります。
パッケージとネーム・スペース間のカスタム・マッピングを定義すると、「追加 (Add)」ボタンをクリックした後で、誤ったデフォルト・パッケージとネーム・スペース がテーブルに表示されます。これらのデフォルトを上書きし、所有するパッケージとネーム ・スペース・マッピングを入力する必要があります。
<サービス> エレメントと <ポート> エレメントのいずれかで同じ名前を使用する WSDL から Web サービス・スケルトンまたはプロキシーを生成する場合 は、サンプル JSP をテスト・クライアントとして使用しないでください。生成したサンプル JSP にはエラーが含まれており、コンパイルしません。サーバーでサンプル JSP を実行し ようとすると、サンプル JSP をロードできないことを示す ERROR 500 がブラウザーで表示さ れ、サーブレット・コンテナーでサンプル JSP をコンパイルできなかったことを示す例外が サーバー・コンソールで発生します。
Web サービス作成ウィザードは、 ホスト名「localhost」がコンピューターに定義されていない場合には、WSDL の生成中に失敗することがあります。UTC も、「localhost」が定義されていない場合には、正常に起動しないことがあります。
Windows では、次の記入項目が、[INSTALL-DRIVE]\WINNT\system32\drivers\etc\hosts ファイルに存在していなければなりません。
127.0.0.1 localhost
Linux では、次の記入項目が /etc/hosts ファイルに存在していなければなりません。
127.0.0.1 localhost
後方互換性を確保するには、IBM SOAP ランタイムを主に使用する必要があります。 あらゆる場面で稼動させるために、IBM WebSphere 5.0.2 ランタイムで Web サービス・ウィザードを使用することを強くお勧めします。IBM SOAP ランタイムで Web サービス・ウィザード を使用すると、以下の永続的な制限が発生することがあります。
- Java Bean からの WSDL 文書の生成
- char または java.lang.Character から WSDL XSD へのデフォルトのマッピングは存在しないため、char および java.lang.Character に対しては、 カスタム・マッピングを入力する必要があります。
- プリミティブ・ラッパー型である、 java.lang.Boolean、java.lang.Byte、java.lang.Short、 java.lang.Integer、java.lang.Long、java.lang.Float、および java.lang.Double は、それらに対応する個々のプリミティブ型、boolean、byte、short、 int、long、float および double とは、サービス Bean のすべての入力パラメーターにおいて共存できません。 例えば、入力パラメーター型として java.lang.Integer および int の両方を持つサービス Bean を、完全な Web サービスに変えることはできません。 Web サービス・ウィザードを使用してこの型のサービス Bean から Web サービスを作成 する場合、プリミティブ型またはラッパー型を含むメソッドがウィザードの Web サービス Java Bean メソッド・ページで選択されると警告メッセージが出されます。 しかし、最初に「Web サービス Java Bean メソッド (Web Service Java Bean Methods)」ページが表示されたときに、 これらのメソッドが選択されていないようにする必要があります。 警告が表示された後で、このページに戻って問題のメソッドを 消去すると、Web サービスが不完全になることがあります。この場合、 ウィザードを再始動して、最初に「Web サービス Java Bean メソッド (Web Service Java Bean Methods)」ページが表示されたときに、 適切なメソッドを選択するようにする必要があります。
- 多次元配列はサポートされていません。Java での代わりの方法は、Java Bean をディメンションの間に挿入することです。 例えば、MyType[][] の代わりに、パターン MyArray[] (MyArray は MyType[] 型のプロパティーを持つ) を使用することで動作します。
- DOM エレメントと単純な Bean 型の混在した入力引き数リストを持つメソッドに対しては、1 つ以上の カスタム・マッピングの項目が必要です。 Web Services Definition Language (WSDL) バージョン 1.1 仕様は、 すべての入力パーツ (パラメーター) に対して 1 つのエンコード・スタイルをサポートしています。 Simple Object Access Protocol (SOAP) バージョン 2.2 のランタイムは、 プリミティブ型について SOAP エンコード方式を使用する DOM エレメントおよび、 Literal XML エンコード方式を使用する Bean に対して、デフォルトのマッピングをサポート していません。
- カスタム・マッピングの構成時に、SOAP ランタイム (すなわち、パッケージ org.apache.soap.encoding.soapenc のクラス) からシリアライザー・クラスまたはデシリアライザー・クラスを使用する際に、 「選択されたシリアライザー/デシリアライザー・クラスはこのプロジェクトからロードできません」のエラーを受け取った場合、soap.jar はおそらく Web プロジェクトのビルド・パスにはないと考えられます。 この問題を修正するには、ウィザードを取り消し、Web プロジェクト・プロパティー・ダイアログを使用して WS_installdir\wstools\eclipse\plugins\com.ibm.etools.webservice\runtime\soap.jar を Web プロジェクトの ビルド・パスに追加してから、Web サービス・ウィザードを再試行します。
- カスタム・マッピングはネストされた複雑な型ではサポートされません。 ウィザードのマッピング・ページにはネストされた型が表示されますが、この型のカスタム・マッピングは無視されます。
- インターフェースに抽象 Java 型を含む Java クラスから Web サービスを作成するとき、Web サービス Java から XML へのマッピング・ページは、 抽象型のデシリアライザー・フィールドを org.apache.soap.encoding.soapenc.BeanSerializer に間違って設定する場合があります。 これは、BeanSerializer クラスのデシリアライザー・コードが抽象タイプのインスタンスを構成できないのでランタイムに失敗します。これを回避するためには、必要に応じて、型にカスタム・マッピング・オプションを選び、 デシリアライザー・フィールドを抽象型をデシリアライズするために作成されたクラス名に変えてください。
- 現在、Web サービス・ツールでは、ネストされた内部クラス (トップレベル・クラスに 定義された内部クラス) が含まれている Java Beans を使用して Web サービスを作成する ことはサポートされていません。 この問題を回避するためには、 内部クラスを別の Java ファイルのトップレベル・クラスに移動してください。
- Vector、Hashtable、または Map のプロパティーで他の Java Bean を使用する Java Bean から Web サービスを作成する場合、XSD は、「Vector」および 「Map」タイプを含む complexTypes を使用してネーム・スペース 「http://xml.apache.org/xml-soap」から生成されます。 このネーム・スペースには現在スキーマが存在しないため、XSD バリデーターは次のようなエラーおよび警告を生成します。
これらのエラーおよび警告は、Web サービス・ウィザードによる WSDL および XSD の現行の処理を妨害しません。 「Map」および「Vector」タイプは、それぞれ Java の対応する部分に正しくマップされています。 他のベンダーは、これらのタイプを含む WSDL または XSD を処理できない場合があることに注意してください。 これは、http://xml.apache.org/xml-soap が、WSDL 1.1 または SOAP 1.1 の仕様によって認識されるネーム・スペースではないためです。 インターオペラビリティーを向上させるには、Java コレクション・クラスを配列および Bean に適用後、そのアダプターから Web サービスをビルドすることを検討してください。
- Error src-resolve: Cannot resolve the name 'xsd2:Vector' to a(n) type definition component.
- Warning src-import.0: Failed to read imported schema document 'null'.
- WSDL 文書からの Java ART ファイルの生成
- サポートは、input エレメントまたは output エレメントにつき 1 つの part に制限されています。 入力メッセージまたは出力メッセージ内の複数の論理 part はサポートされません。 そのような最初の part は処理され、残りは無視されます。
- Web サービス・スケルトンまたはプロキシーを、xsd (http://www.w3.org/2001/XMLSchema) ネーム・スペースの base64Binary 型を使う WSDL から生成するとき、Web サービス・ランタイムは実際には soapenc (http://schemas.xmlsoap.org/soap/encoding/) ネーム・スペースの xsi:type base64 を 使用します。 通常、2 つのタイプは自由に交換可能です。 ただし、メッセージの型とスキーマの型の違いにより、いくつかの SOAP プロトコル・ランタイムがメッセージをリジェクトする原因となります。 この場合、シリアライザーを Apache SOAP の Base64Serializer のように手加工できますが、soapenc:base64 の代わりに xsd:base64binary が書き込まれます。
- Java Bean スケルトンは、有効な Java ID でないオペレーションやパート名を 含む WSDL 文書から作成されている場合、コンパイルしません。 Java Bean スケルトンが正常に作成されるためには、WSDL オペレーションとパート名は有効な Java ID でなければなりません。
- Web サービス・ウィザードは、WSDL を生成するときにデフォルトでは「HTTP」の URI を使用しますが、他のツールの WSDL 文書では、 Web サービス、SOAP Action、または Target Namespace の URI により、「HTTP」以外の「urn」などの方式を使用する場合があります。 HTTP 以外の URI を含む WSDL からプロキシーまたはスケルトンを生成するとき、Web サービス・ウィザードは URI をより意味のあるパッケージよりも Java パッケージ「com.example」にマップする可能性があります。 場合によっては、Web サービス・ウィザードがそのような URI を完全に処理できず、 「IWAB0234E 内部エラーが発生しました」というエラーになることがあります。
- WSDL を使用して Java プロキシーおよび Java スケルトンを生成する場合は、XSD 組み込み型の boolean、byte、short、int、long、float、および double を Java プリミティブ (int) ではなく、「java.lang」ラッパー型 (java.lang.Integer) にマップするオプションが利用できるようになりました。 Web サービス・ウィザードは、デフォルトでは Java プリミティブにマップします。 ウィザードで「java.lang」ラッパー・クラスにマップするには、「ウィンドウ (Windows)」->「設定 (Preferences)」-> 「Web サービス (Web Services)」->「コード生成 (Code Generation)」を開いて、「簡単な XML データ型を java.lang ラッパー・クラスにマップする (Map simple XML data types to java.lang wrapper classes)」にマークを付けます。
- Java Bean または EJB から Web サービスを作成するときに Java タイプから XSD タイプへのカスタム・マッピングを指定する場合には、Bean クラス・ フィールドは、Java タイプの絶対パス名に自動的に設定され、編集できません。Java 配列をカスタム・マッピングしている場合には、Bean クラス名は配列フォームの形式、 例えば「java.lang.String[]」になっていて、「.isd」および「dds.xml」デプロイメント記述子ファイルとして出力されます。 このクラス名のフォームは、SOAP ランタイムによって正しく処理されず、次のようなエラーが発生します。
Deployment error in SOAP service http://tempuri.org/webservice.AddressBook: class name java.lang.String[] could not be resolved: java.lang.String[]
このため、サービス側で Java 配列用にシリアライザーをカスタム・マッピングすることはできません。 部分的な回避方法は、「シリアライザー・クラス (Serializer class)」フィールドをカスタム・マッピング用に空にしておくことです。 これによって、デプロイメント記述子への配列クラス名の生成が抑制され、サービスが稼動します。 デシリアライザー・クラス、およびデシリアライザーをカスタム・マッピングする機能は、 この問題および回避方法による影響は受けません。
- ランタイムに関する考慮事項
- Web サービス・コード生成設定「エレメントを使用したマッピングを使用可能にする (Enable element-based mapping)」を選択して、WebSphere Application Server V4 への デプロイを選択すると、ISD ファイルと dds.xml に次のエントリーが作成されます。
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:x=""
qname="x:some-name"
xml2JavaClassName="some-serializer"/>XML エディターは、次のエラーにフラグを立てることができます。
The value of the attribute "xmlns:x" is invalid. Prefixed namespace bindings may not be empty.
これは WebSphere Application Server V4 では問題になりません。ただし、 Xerces 2.x (XML4J 4.x) 以降 (WebSphere Application Server V5 など) を使用する他の サーバーにこの dds.xml をデプロイしないでください。 そうでないと、サーバーが dds.xml ファイルをロードするときに同様の Xerces 構文解析エラーが発生します。Web サーバーのシナリオに従って正しいサーバー・タイプを選択して、dds.xml を再び生成してください。 これにより、そのサーバー・タイプに対して正しい dds.xml が生成されます。
また、ISD ファイルから Web サービスをデプロイしようとすると、同様の Xerces 構文解析エラーが発生します。 回避策は、ファイルを手動で以下のフォーマットに編集することです。
<isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
qname="some-name"
xml2JavaClassName="some-serializer"/>
- Java Bean または EJB で作成された Web サービスを呼び出すときに、次のような targetException のある SOAPException を受け取る場合があります。
"java.lang.IllegalArgumentException: Unable to instantiate ..."
問題の原因としては、Web サービスとして公開しているメソッドに Java Bean が含まれており、これにパラメーターまたは戻りの型 (あるいはその両方) としての共通デフォルト・コンストラクターがないことが考えられます。 デシリアライゼーション・プロセスの一部として SOAP ランタイムがオブジェクトを構築するためには、共通デフォルト・コンストラクターが必要です。- Web プロジェクトに現在デプロイされているセキュリティー・ファイルの cl-ver-config.xml および sv-ver-config.xml は、WebSphere バージョン 4.0 のファイルであり、DTD に正確に一致するとは限りません。 しかし、ファイルは、「xmlns:ds」または「xmlns:SOAP-SEC」が宣言されるべきであるとの検証エラーがあっても WebSphere バージョン 4.0 と WebSphere バージョン 5.0 の両方で作動します。
- サーバー構成をエディターでオープンすると、Web サービス Web プロジェクトがサーバー構成に追加されないために、Web サービス・ウィザードがサーバーを開始できないことがあります。 サーバー構成エディターをクローズすると問題は解決されます。
- ISD Web サービス
- Java または EJB Web サービスを作成するときにカスタム・マッピングを入力した後、 XSD ロケーション URL 以外のカスタム・マッピング情報は ISD ファイルに保管されます。 Web サービスを作成するときに、その ISD ファイルから情報を検索します。したがって、ISD ファイルから Web サービスを作成するときに、ウィザードの「Web サービスの Java から XML へのマッピング」ページに XSD ロケーション URL を手作業で入力する必要があります。
Java Bean または EJB から Web サービスを作成する場合は、 サービス・ランタイムに IBM SOAP を選択し、クライアント・ランタイムとして Apache Axis 1.0 を選択すると、以下のエラーが発生します。
WSDL Not found
この問題を避けるには、プロキシーの生成を選択せずに最初に Web サービスを作成して ください。次に、生成された WSDL ファイルから Web サービス・クライアントを作成します。
Web サービス・クライアント・ウィザードの途中で、「クライ アント環境の構成 (Client Environment Configuration)」ページで「完了 (Finish)」を クリックすると、以下のエラーが発生します。
"null" is not resolvable
これを回避するには、そのページと次のページで「次へ (Next)」をクリックし、「完了 (Finish)」をクリックします。
wsad_install/wstools/eclipse/plugins/com.ibm.etools.cs.wsdl.content_5.1/examples の HelloService.wsdl を使用している場合は、WS-I 準拠の Web サービスの参考資料および WSDL ファイルから Web サービスを作成する場合の参考資料の作成、テストおよび検証を行う ときに、下記のようにランタイムに応じて、サービス・ポートのロケーションを変更して ください。
IBM Soap の場合:
location="http://localhost:9080/HelloWorldSample/servlet/rpcrouter"
Apache Axis または WebSphere 5.0.2 ランタイムの場合:
location="http://localhost:9080/HelloWorldSample/services/Hello_Port"
所有する wsdl ファイルのインポート中には、上記のとおりに選択したランタイムに合わせ てロケーションが正しく設定されていることを確認してください。
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.