1.0 概要
2.0 サポートされるソフトウェアと仕様
3.0 前のリリースからの変更点
4.0 制限
4.1 Supply Chain Management サンプルを実行できない
5.0 既知の問題
5.1 Web サービス・エクスプローラー
5.2 TCP/IP モニター・サーバーが Linux で機能しない
5.3 IBM SOAP ランタイムとのインターオペラビリティー
5.4 DADX ファイルからの WSDL 文書の生成
5.5 Web ツールの JSP ジェネレーター
5.6 Hospital シナリオ
5.7 Universal Test Client の使用
5.8 特定の場合には、DADX Web サービスでの複数出力が許可される
5.9 JDBC ドライバー設定は Linux 専用である
5.10 XML エクステンダーがデフォルト・ディレクトリーにインストールされていない場合、DAD 実例ファイルの更新が必要
5.11 DADX Web サービスの問題
5.12 Mozilla と Netscape が両方とも稼働している場合は、エクスプローラーのポップアップ・ダイアログが正しく表示されない
5.13 DADX 生成サポート
5.14 Web サービスを 4.0.x からインポートした後での WSDL エラー
5.15 GTK を持つ Linux を使用するときの問題
5.16 AXIS ランタイムでの Tomcat サーバーの使用
5.17 Web サービス・コマンド行を使用するときの問題
5.18 既存のサーバーを持たない Web サービスの作成
5.19 Web サービス・サンプル・アプリケーションの生成
5.20 HTTP 基本認証による WSDL ファイルのインポート
5.21 WebSphere v5.0.2 ランタイムの使用に関する問題
5.22 データ・ソース情報を持つ DADX グループのセットアップ
5.23 Universal Test Client を使用したクライアント・ロケーターのロード
5.24 リソース設定が監視されない
5.25 Apache Axis 1.0 ランタイムの使用に関する問題
5.26 Web サービス・サンプル JSP のコンパイルが失敗した
5.27 未定義のローカル・ホストに関するエラー
5.28 IBM SOAP ランタイムを使用するときの永続的な制限
5.29 異なるランタイムを使用する Web サービスおよびクライアント
5.30 Web サービス・クライアント・ウィザードでの「完了 (Finish)」のクリック
5.31 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 テスト環境を起動する場合は、Mozilla バージョンの少なくとも 1.3.1 をお勧めします。 Web サービスと記述ファイルを起動して作成した出力は、早期バージョンの Mozilla ブラウザーでは正しく表示されないことがあります。
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 プラットフォーム用の開発を行うユーザーが使用するものです。
- Web サービス・コマンド行ツールを提供します。このツールを使用すれば、Java Bean、EJB、または WSDL ファイルから Web サービスを作成し、ビジネスおよびサービスを UDDI レジストリーにパブリッシュ/アンパブリッシュできます。
- WSDL エクスプローラーが Web サービス・エクスプローラーに完全に統合されています。
- 以下のものを含む Web サービス・アプリケーション・アセンブリー・ツールを提供します。
- JSR-109 および IBM WebSphere v5.0.2 デプロイメント記述子を編集する Web Services Editor および Web Services Client Editor。
- EndpointEnabler 関数を呼び出すポップアップ・アクション。
- WebServiceDeploy 関数を呼び出すポップアップ・アクション。
- ユーザーが設定を介して WS-I 準拠の Web サービスを作成する際のヘルプ・ガイド。 ユーザーは、Web サービスを作成するときに、Web サービス・ウィザードに WS-I 準拠を要求、提案、または無視させるように選択できます。
- プロクシーごとの WSIL Web サービス参照文書を生成および使用します。
- サンプル・セキュリティー構成を使用して WebSphere v5.0.2 デプロイメント記述子を更新できるようにします。
- EJB から Web サービスを作成するときに、JMS を介した SOAP を SOAP メッセージ用のトランスポートとしてサポートします。
- ユーザー定義の UDDI カテゴリーをサポートします。
- Web サービス妥当性検査をサポートします。 その設定が決まると、ツールは、その設定内のエンタープライズ・アプリケーションまたはモジュール (または両方) が、JSR-109 への準拠を証明する一連の規則に適合していることを確認します。
Supply Chain Management サンプルが WAS Express で稼働しません。
- 専用 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 ハンドシェーク失敗」に関するエラー・メッセージが出ます。 これは既知の問題であり、IBM と XMethods が調査中です。
The 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 トンネル。 これは、http://ws.apache.org/soap/index.html.tool からダウンロード可能)。 トンネルを開始し、Web サービス・クライアント・オペレーションを起動します。 要求および応答トラフィックはトンネルに現れなければなりませんが、クライアントは中断しているように見えます。 トンネルを停止してください。これでクライアントが非ブロック化され、オペレーションが完了します。 次の呼び出しを行う前に、トンネルを再始動してください。
- IBM SOAP ランタイムを使用しているときに、複雑なパラメーターを持つ WSDL を生成すると、WSDL を消費する Microsoft ツールで問題が発生します。Microsoft ツールは、XSD の include ステートメントを正しく処理できないため、XSD スキーマを生成した WSDL にインラインで組み込む 必要が生じます。 これは、以下を選択することによって行うことができます。
「Windows」>「設定」>「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>
DB2 ドライバー db2java.zip を WebSphere ws.ext.dirs クラス・パスに追加する必要があります。 db2java.zip を追加するには、次のようにします。
- サーバー・パースペクティブに切り替える (「ウィンドウ (Window)」>「パースペクティブのオープン (Open Perspective)」>「サーバー (Server)」).
- 「サーバー構成 (Server Configuration)」ペインで「サーバー (Server)」を展開する。
- 「WebSphere バージョン 4.0 テスト環境 (WebSphere v.4.0 Test Environment)」をダブルクリックする。 インスタンス・エディターがオープンします。
- インスタンス・エディターで、「パス (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))」と選択して変更内容を保管してから、インスタンス・エディターを終了します。
Hospital シナリオに関する文書の更新については、WebSphere 開発者ドメイン へ進み、「ライブラリー (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 ブートストラップ・ポートをコピーする。
- 汎用テスト・クライアントの「JNDI のプロパティー (JNDI properties)」ウィンドウをオープンする。
- ブートストラップ・ポートを「プロバイダー URL (Provider URL)」テキスト入力ボックスに貼り付ける。
通常は、Web サービス内の複数出力は弊社のツールではサポートされません。 しかし、DADX Web サービスの場合には、「文書スタイル・グループ・プロパティーの使用」が true にセットされていれば、複数出力は許されます。 この場合、「文書スタイル」が「true」 であれば、複数出力は 1 つの XML 文書に結合されます。
「JDBC ドライバー」という新規の Web サービス設定 (「Windows」> 「設定」>「Web サービス」) カテゴリーが追加されました。この設定は全プラットフォームで使用できますが、Linux での使用のみを目的としています。 Linux では JDBC ドライバーのある JAR ファイルの場所を判断するのが困難な場合があります。 したがって、この設定ページが追加され、ユーザーが使用する JAR ファイルを指定することができます。 現在、DADX 検証コードのみがこの JAR ファイル情報を使用します。
WSinstall_dir\wstools\eclipse\plugins\com.ibm.etools.webservice_<version>\samples\DADX_examples ディレクトリーにある DAD ファイルは 2 か所の変更を加えてユーザー固有のシステム構成を反映させる必要があります。
ファイルの先頭付近にある以下のような行です。
<!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 回行う必要があります。
Mozilla と Netscape が同時に実行されていると、Web サービス・エクスプローラーのポップアップ・ダイアログが正しく表示されないことがあります。 ポップアップ・ダイアログには、Browse WSDL ダイアログと Browse Category ダイアログがあります。 これに対処するには、Mozilla または Netscape のいずれかを使用しますが、これを両方同時に実行することはできません。
ユーザー定義機能が「DADX の生成 (Generate DADX)」ウィザードにリストされていますが、現在、ユーザー定義機能から DADX を生成するためのサポートはありません。 DAD ファイル、ストアード・プロシージャー、および SQL ステートメントからの DADX 生成のみがサポートされます。 UDF を選択すると、単純な DADX スケルトン・ファイルが生成されます。
Web サービス・ファイルを 4.0.x からインポートした場合は、次のエラー・メッセージを受け取ることがあります。
エラー 「結果」部分に、無効な値 'anyElement' がその型として定義されています。 型宣言は、スキーマに定義された有効な値を参照していなければなりません。 (Error The part 'result' has an invalid value 'anyElement' defined for its type. Type declarations must refer to valid values defined in a schema.)
エラー 「戻り」部分に、無効な値 'findPatientResult' がその型として定義されています。エレメント宣言は、スキーマに定義された有効な値を参照していなければなりません。 (Error The part 'return' has an invalid value 'findPatientResult' defined for its element. Element declarations must refer to valid values defined in a schema.)
エラー 「応答」部分に、無効な値 'findPatientResponse' がその型として定義されています。エレメント宣言は、スキーマに定義された有効な値を参照していなければなりません。 (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 Services ウィザードを再実行して Web サービスを再生成します。
- GTK を持つ Linux で WebSphere Studio を実行する場合、Web サービス作成ウィザードは、ワークベンチで何を選択するかに関係なく、常に、Web サービス・タイプをデフォルトの「Skeleton Java Bean Web Service」に設定します。 ユーザーはこのデフォルトを指定変更して、希望の Web サービス・タイプを選出する必要があります。
- この問題は、Axis の Web アプリケーションがインストールされている Linux の Tomcat 4.1 および 4.0 サーバー で発生します。 サーバーが開始され、Web サービス・ウィザードのいずれかの個所で再始動が必要になった場合、Axis が Tomcat サーバーの停止を妨害するので、ウィザードがハングすることがあります。
この問題に対処するには、サーバーを停止してから Web サービス・ウィザードを開始し、Web サービス・アプリケーションを生成し、テストするウィザード・ページの「サーバーでの実行 (Run on Server)」のチェックマークを外します。
- FileNStoPkg オプション: コマンド行の WSDL2WebService 用の -fileNStoPkg オプションは、現在機能していません。 -NStoPkg を使用し、各マッピングをコマンド行にタイプ入力してください。 もう 1 つのオプションは、マッピングをパッケージするためにネーム・スペースが必要な場合に 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 の下にあるすべてのデプロイメント記述子をパッケージし、かつ WSDL をサービス・サイド (サービスが Web コンテナーに入っている場合は WEB-INF/wsdl の下、サービスが EJB コンテナーに入っている場合は META-INF/wsdl) からクライアント・プロジェクトの META-INF/wsdl にコピーする必要があります。
- Web コンテナーの内部で管理対象クライアントを実行するには、クライアント・アーカイブの WEB-INF に対するすべてのデプロイメント記述子をパッケージする必要があります (通常は、WebSphere Studio の WAR または Web プロジェクトの形式で)。 WSDL ファイルもサービス・サイドから WEB-INF/wsdl にコピーする必要があります。 また、META-INF のすべてのオカレンスを WEB-INF に置き換えて webservicesclient.xml を手動で編集する必要があります (テキスト・エディターを使用するか、または、WebSphere Studio の場合は、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 サービス (Web Services)」メニューの下の「サンプル・アプリケーションの生成 (Generate Sample Application)」ポップアップ・アクションにより、IBM SOAP プロキシー用の JSP が生成されます。 その他の Web サービス・ランタイム (IBM WebSphere 5.0.2 および Apache Axis 1.0) 用の Web サービス・サンプル JSP を生成するには、WSDL ファイルを右クリックし、「Web サービス (Web Services)」メニューから「クライアントの生成 (Generate Client)」ポップアップ・アクションを選択します。 そのウィザードを使用する際には、「生成したプロキシーのテスト (Test the generated proxy)」を選択します。
相対インポートを持ち、HTTP 基本認証によって保護されている WSDL ファイルからスケルトンまたはクライアントを生成する場合、正しいユーザー ID とパスワードを入力しても、WSDL ファイルを解決できないというエラー・メッセージが出ます。 この問題は、ユーザー ID とパスワードが元の WSDL ファイルの検索のみに使用され、インポートするファイルの検索には使用されていないことを示します。
この問題を解決するには、まず、WSDL ファイルと、ワークベンチにインポートするすべてのファイルをダウンロードし、次に、ダウンロードした WSDL ファイルからスケルトンとクライアントを生成します。
- 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 つの対応策は、ソース・フォルダーを 1 つにマージするか、または Bean をユーティリティー JAR からソース・フォルダーにコピーすることです。
- RPC/リテラルでサポートされない配列: RPC/literal サービスを作成する場合、メソッド・シグニチャーに配列を含めることはできません。 配列が含まれていると、生成されたクライアント・コードでそのサービスを起動することはできません。 現在は、この問題の対応策はありません。可能であれば、文書/リテラルまたは RPC/エンコードを使用してください。
- 文書/リテラルではメソッドの多重定義はサポートされない: 文書/リテラル・サービスを作成する場合、メソッド多重定義 (同じメソッド名、異なる入力パラメーター) はサポートされません。 現在は、この問題の対応策はありません。可能であれば、RPC/リテラルまたは RPC/エンコードを使用してください。
- WSDL インポート: 同一ディレクトリーでは、WSDL インポート・ステートメントは絶対 URL または相対 URL しか持つことができません。 たとえば、次の形式の相対インポートはサポートされません。
<import namespace="http://someNamespace/" location="../someFile.wsdl"/>- portType エレメントの前のバインディング・エレメント: portType エレメントの前にバインディング・エレメントが入っている WSDL からクライアント・プロキシーまたはスケルトンを生成するとき、「Java ファイルとデプロイメント記述子を 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 または再 throw しません。 したがって、コンパイルも行いません。
- 入出力に対する同一のスキーマ・タイプ: 入出力メッセージと障害メッセージに同一の 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 を持っていると、次のようなランタイム・エラーが発生することがあります。
メソッドが未定義です。一致する Java オペレーションが見つかりません。 (The method is undefined.
Couldn't find a matching Java operation.)
生成された Bean と異なる API を持つサービス Bean の例は、次のとおりです。
- パブリック・フィールドを持つ Bean、
- isBooleanValue ではなく、getBooleanValue という getter を持つブール・フィールド、
- 大文字のメソッド名を持つメソッド
循環がオンになっている文書リテラル: 文書リテラルを使用してボトムアップ・サービスを作成する場合は、デフォルトにより、循環オプションがオンになります。 異なるタイプの複数の入力がある場合や、入力がまったくない場合は、インターオペラビリティーの問題が発生することがあります。 これの対応策は RPC/リテラルを使用することです。 小文字の名前または下線を持つ Java Bean: 小文字のファイル名を持っているか、または下線の後に小文字の付いた Java Bean から Web サービスを作成すると、次のようなエラーになります。
getOutputStream() IOException の詳細を含む WSDL ファイルから Java ファイルおよびデプロイメント記述子を生成中のエラー。 (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>
Universal Test Client が、WebSphere v5.0.2 または Axis ランタイムによって生成されたクライアント・ロケーター・クラスをプリロードできない場合、その理由は、サービス Web プロジェクト内の Java Bean クラスの名前が、クライアント Web プロジェクト内の SEI クラスの名前と同じであることです。 この問題の対応策は次のとおりです。
- ワークスペースからクライアント Web プロジェクトを除去します。
- クライアント Web プロジェクトを右クリックし、「削除 (Delete)」をクリックします。
- EAR プロジェクトで application.xml を見つけ、そのファイルをダブルクリックして Application Deployment Descriptor エディターを開きます。 クライアント Web プロジェクト・モジュールを選択し、「除去 (Remove)」をクリックします。 エディターを閉じ、変更内容を保管します。
- クライアント Web プロジェクトを別の EAR に作成します。 その場合、EAR プロジェクト名が、アルファベット順でサービス EAR プロジェクト名の前に来ていなければなりません。 たとえば、サービス EAR プロジェクト名が "DefaultEAR" であれば、新規の EAR プロジェクト名 "ClientEAR" を作成します。
- 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/エンコードを使用する必要があります。
パッケージとネーム・スペース間のカスタム・マッピングを定義する場合、「追加」ボタンをクリックすると、間違ったデフォルトのパッケージとネーム・スペースがテーブルに現れるため、ユーザーは、これらのデフォルトを上書きし、独自のパッケージおよびネーム・スペース・マッピングを入力する必要があります。
WSDL から Web サービスのスケルトンまたはプロキシーを生成する場合、WSDL がその <service> エレメントおよび <port> エレメントのいずれかに同じ名前を使用しているときは、サンプル JSP をテスト・クライアントとして使用しないでください。 生成されるサンプル JSP にはエラーが含まれているためコンパイルされません。 サンプル JSP をサーバーで実行しようとすると、サンプル JSP をロードできないことを示す ERROR 500 がブラウザーに表示され、サーブレット・コンテナーがサンプル JSP をコンパイルできなかったことを示す例外がサーバー・コンソールに表示されます。
ホスト名「localhost」がコンピューターに定義されていないと、WSDL の生成中に Web サービス作成ウィザードが失敗することがあります。 「localhost」が定義されていないと、UTC も正常に起動できなくなる可能性があります。
Windows の場合は、次の項目が [INSTALL-DRIVE]\WINNT\system32\drivers\etc\hosts ファイルに入っていなければなりません。
127.0.0.1 localhost
Linux の場合は、次の項目が /etc/hosts ファイルに入っていなければなりません。
127.0.0.1 localhost
IBM SOAP ランタイムは、主として後方互換性のために使用する必要があります。 実動を目的としたすべての場合に、Web サービス・ウィザードを IBM WebSphere 5.0.2 ランタイムで使用することを強くお勧めします。 Web サービス・ウィザードを IBM SOAP ランタイムで使用する場合、ユーザーは、次のような永続制限に陥ることがあります。
- 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 が生成され、complexTypes にはネーム・スペース http://xml.apache.org/xml-soap からの「Vector」および「Map」型が含まれています。現在このネーム・スペースにはスキーマがないので、XSD バリデーターは次のようなエラーと警告を出します。
これらのエラーと警告は、Web サービス・ウィザードによるによる WSDL および XSD の正しい処理を妨げません。 「Map」および「Vector」型は、それぞれの Java 対応先に正しくマップされます。 他のベンダーでは、これらの型が含まれている WSDL または XSD の処理に困難が伴うことがあります。 それは、http://xml.apache.org/xml-soap が、WSDL 1.1 または SOAP 1.1 仕様によって認識されたネーム・スペースでないからです。 インターオペラビリティーを改善するには、Java コレクション・クラスを配列と Bean に適応させ、次に、アダプターから Web サービスをビルドすることを考慮してください。
- エラー src-resolve: 名前 'xsd2:Vector' を a(n) 型定義コンポーネントに解決できません。 (Error src-resolve: Cannot resolve the name 'xsd2:Vector' to a(n) type definition component.)
- 警告 src-import.0: インポート済みスキーマ文書 'null' の読み取りに失敗しました。 (Warning src-import.0: Failed to read imported schema document 'null'.)
- WSDL 文書からの Java 作成物の生成
- サポートは、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 ランタイムでは正しく処理されず、次のようなエラーになります。
SOAP サービス http://tempuri.org/webservice.AddressBook でのデプロイメント・エラー: クラス名 java.lang.String[] を解決できませんでした (Deployment error in SOAP service http://tempuri.org/webservice.AddressBook: class name java.lang.String[] could not be resolved: java.lang.String[])
その結果、サービス・サイドの Java 配列に対してシリアライザーをカスタム・マップすることができません。 部分的な対応策は、カスタム・マッピング用のシリアライザー・クラス・フィールドを空にしておくことです。 こうすれば、配列クラス名がデプロイメント記述子に作成されなくなり、サービスを機能させることができます。 ただし、デシリアライザー・クラスと、デシリアライザーをカスタム・マップする機能は、この問題と対応処置による影響を受けません。
- ランタイムについての考慮事項
- 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 を手作業で入力する必要があります。
Web サービスを Java Bean または EJB から作成する場合、IBM SOAP をサービス・ランタイムとして、また Apache Axis 1.0 をクライアント・ランタイムとして選択すると、次のエラーが発生します。
WSDL が見つかりません (WSDL Not found)
この問題を回避するには、まず、プロキシーの生成を選択せずに Web サービスを作成します。 次に、生成された WSDL ファイルから Web サービス・クライアントを作成します。
Web サービス・クライアント・ウィザードを使用する場合、「クライアント環境構成 (Client Environment Configuration)」ページで「完了 (Finish)」をクリックすると、次のエラーになります。
「ヌル」は解決できません ("null" is not resolvable)
これの対応策は、そのページで「次へ (Next)」をヒットし、次のページで「完了 (Finish)」をヒットします。
「WS-I 準拠 Web サービス説明書の作成、テスト、および妥当性検査 (Create,test and validate a WS-I compliant Web Service Cheatsheet)」および「WSDL ファイル説明書からの Web サービスの作成 (Create a Web Service from a WSDL file CheatSheet)」で、wsad_install/wstools/eclipse/plugins/com.ibm.etools.cs.wsdl.content_5.1/examples からの HelloService.wsdl ファイルを使用している場合は、以下のようにして、別のランタイムに従ってサービス・ポート・ロケーションを変更してください。
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.