WSIF - 既知の制約事項
WSIF 使用時に適用される既知の制約事項には、スレッド化、SOAP ヘッダーと参照されない添付ファイル、およびデータ型マッピングに関する制約事項が含まれます。
- スレッド化
- WSIF はスレッド・セーフではありません。
- 外部規格
- WSIF は以下をサポートしています。
- SOAP バージョン 1.1 (1.2 以降はサポート対象外)
- WSDL バージョン 1.1 (1.2 以降はサポート対象外)
- 完全なスキーマ解析
- WSIF は、完全なスキーマ解析はサポートしていません。例えば、 スキーマ内の複合タイプの Web サービス記述言語 (WSDL) 参照は処理されず、属性も処理されません。
- XML スキーマの「再定義」エレメントの処理は行われず、無視されます。
- SOAP
- WSIF は、以下はサポートしていません。
- <parts> として渡される SOAP ヘッダー。
- SOAP 応答内の参照されない添付ファイル、またはSOAP 添付ファイル - サポートされていないシナリオで詳細が示されているシナリオ。
- Document Encoded スタイルの SOAP メッセージ。注: これは、 本来 WSIF の制約事項ではありません。WSDL で Document Encoded スタイルを指定することはできますが、 一般に、それは有効なオプションとは見なされず、Web Services Interoperability Organization (WS-I) ではサポートされていません。
- SOAP プロバイダーのインターオペラビリティー
- 現在の WSIF のデフォルト SOAP プロバイダー (IBM® Web サービス SOAP プロバイダー) では、以前の (Apache SOAP) プロバイダー上で実行されているサービスと完全には相互運用できません。 これは、IBM Web サービス SOAP プロバイダーが JAX-RPC 準拠の Web サービスと完全に相互運用できるように設計されているのに対し、Apache SOAP はそのようなサービスを提供できないことが原因です。この制約事項の対処方法について詳しくは、WSIF SOAP プロバイダー: 既存アプリケーションの処理を参照してください。
- SOAP 障害の WSIF サポートは、IBM Web Service SOAP プロバイダーを使用する Web サービスが原因の SOAP 障害に制限されます。注: これは、 本来 WSIF の制約事項ではありません。現在の SOAP 障害仕様では、Java 例外にマッピングする、SOAP 障害のエンコード方法については言及してません。 したがって、現在、各 Web サービスのランタイム環境では、独自の SOAP 障害フォーマットが選択されています。IBM Web Service SOAP プロバイダーは、それ自身の応答 SOAP 障害を認識できますが、他のプロバイダーからの SOAP 障害は理解することができません。
- データ型マッピング
- 現在の WSIF のデフォルト SOAP プロバイダー (IBM Web Service SOAP プロバイダー) は、
以前の (Apache SOAP) プロバイダーの作成後にファイナライズされた JAX-RPC 型マッピング規則に準拠しています。大多数のデータ型は、どちらのプロバイダーでも同じようにマップされます。
例外は、xsd:date、xsd:dateTime、xsd:hexBinary および xsd:QName です。この 4 つのデータ型のいずれかを使用する場合は、
クライアントとサービスの両方が同じマッピング規則を使用する必要があります。
以下の表に、これらの 4 つのデータ型のマッピング規則の詳細を示します。
表 1. Apache SOAP および JAX-RPC により異なる方法でマップされる 4 つのデータ型のマッピング規則. 列 1 は XML データ型、列 2 は Apache SOAP でそれに相当するデータ型、列 3 は JAX-RPC でそれに相当するデータ型を示します。
XML データ型 Apache SOAP Java マッピング JAX-RPC Java マッピング xsd:date java.util.Date 非サポート xsd:dateTime 非サポート java.util.Calendar xsd:hexBinary 16 進数ストリング byte [ ] xsd:QName org.apache.soap.util.xml.QName javax.xml.namespace.QName - 配列と複素数タイプ
- WSIF は、一般的な複素数タイプはサポートしていません。
Java Bean にマップする複素数タイプのみを処理します。スキーマ複素数タイプを使用するには、
独自のカスタム・シリアライザーを作成する必要があります。
Web サービスの WSIF アウトバウンド呼び出しに特有の複素数タイプおよび配列は、次のとおりです。
- WSIF は、WebSphere® Studio Application Developer - Integration Edition (WSAD-IE) メッセージ・ジェネレーターが生成した Java クラスをサポートします (WSDL ファイルを別の場所からダウンロードした通常の場合)。WSAD-IE ベースの生成は、BPEL エディター、 「Enterprise Services」コンテキスト・メニューで選択可能な生成アクション、 または Business Integration ツールバーを使用して、自動的に行われます。
- WSIF は、他のツール (基本 WSAD ツールなど) で生成された Java Bean はサポートしません。
- WSAD-IE で生成された Java Bean の場合、WSDL で定義された属性は機能しません。 つまり、これらの属性は、複素数タイプを示すために生成された Java Bean には表示されますが、 WSIF が生成する SOAP 要求では表示されません。
- WSIF は、配列が Java Bean のフィールドである場合は、配列をサポートしません。つまり、 WSIF は、<part> という名前で渡される配列のみをサポートします。 配列が Java Bean 内部でラップされる場合、 その配列は同じ方法ではシリアライズされません。
- オブジェクト・シリアライゼーション
- WSIF は、異なるリリース間でのオブジェクトのシリアライゼーションはサポートしていません。
- 非同期呼び出し
- WSIF は、すべてのプロバイダーに対する同期呼び出しをサポートしています。 JMS プロバイダーおよび SOAP over JMS プロバイダーの場合には、WSIF は非同期呼び出しもサポートしています。 非同期操作を実行する場合は、その前に、 supportsAsync() メソッドを呼び出す必要があります。
- EJB プロバイダー
- WSIF EJB プロバイダーのターゲット・サービスは、リモート・ホーム・インターフェースでなければなりません。 EJB ローカル・ホーム・インターフェースは使用できません。さらに、 EJB スタブ・クラスがクライアント・クラスパス上で使用できなければなりません。
- WebSphere Application Server 外部での実行
- WSIF は、WebSphere Application Server 外部での使用ではサポートされていません。