Web サービスの標準を定義する仕様の多くは、業界全体で幅広く使用できるように記述されています。そのため、Oracle による特定の仕様の実装では、その仕様で考慮されているすべての使い方がサポートされていない場合もあります。
Oracle では、Web サービス仕様の考え得るあらゆる使用事例をサポートするよりも、Web サービス プラットフォームの相互運用性の方をより重要視しています。Web Services Interoperability Organization の次の仕様に準拠し、それを Web サービス相互運用性の基準と見なしています。
Basic Profile 1.1 : http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html
Basic Security Profile 1.0 : http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
このガイドでは必ずしも Basic Profile 1.1 および Basic Security Profile 1.0 のすべての要件が説明されているわけではありません。ただし、Basic Profile 1.1 および Basic Security Profile 1.0 の要件を超えた機能が説明されています。
次の表に、Oracle 実装の一部として提供される Web サービス仕様を機能別にまとめます。
表 4-1 Web サービス仕様の Oracle 実装
機能 | 仕様 |
---|---|
メタデータ アノテーションに基づくプログラミング モデルとランタイム アーキテクチャ |
|
プログラミング API |
|
データ バインディング |
|
Web サービスの記述 |
|
Web サービスとリクエストを行ったクライアントの間のデータ交換 |
|
セキュリティ |
|
信頼性のある通信 |
|
公開 (登録と検索) |
|
以降の節では、これらの仕様について詳しく説明します。なお、仕様はアルファベット順に並べてあります。これら以外に WebLogic Web サービスでサポートされる仕様については、「WebLogic Web サービスでサポートされるその他の仕様」を参照してください。
このドキュメントで説明する API のサブセット (https://jax-ws-architecture-document.dev.java.net/nonav/doc/com/sun/xml/ws/developer/package-summary.html
の com.sun.xml.ws.developer
API など) は、Sun Microsystems が提供する JDK 6.0 または JAX-WS 2 1 Reference Implementation (RI) の拡張としてサポートされます。これらの API は JDK 6.0 や WebLogic Server ソフトウェアの一部としては提供されないため、変更される可能性があります。以下にこのような API の例を示します (これらに限定されるものではありません)。
com.sun.xml.ws.api.server.AsyncProvider com.sun.xml.ws.client.BindingProviderProperties com.sun.xml.ws.developer.JAXWSProperties com.sun.xml.ws.developer.SchemaValidation com.sun.xml.ws.developer.SchemaValidationFeature com.sun.xml.ws.developer.StreamingAttachment com.sun.xml.ws.developer.StreamingAttachmentFeature com.sun.xml.ws.developer.StreamingDataHandler
Apache XMLBeans 2.0 (http://xmlbeans.apache.org
) は、XML スキーマを Java 型にバインドし、さまざまな方法で XML データにアクセスするための技術を提供します。XMLBeans では、XML インスタンス データにアクセスして変更するための Java インタフェースおよびクラスを、XML Schema を使用してコンパイルします。XMLBeans は、JAX-RPC Web サービスのデフォルトのバインディング技術です。
Java API for XML Registries (JAXR) 仕様 (http://java.sun.com/webservices/jaxr
) は、さまざまな XML レジストリにアクセスするための共通の標準 Java API を提供します。XML レジストリは、Web サービスの構築、デプロイ、検索を可能にするインフラストラクチャです。
現在、XML レジストリのさまざまな仕様があり、特に知られているのは、OASIS と U.N./CEFACT が開発中の ebXML Registry and Repository 標準と、ベンダのコンソーシアムで開発中の UDDI 仕様です。
JAXR によって、Java ソフトウェア プログラマは、単一の使いやすい抽象 API を使用して、さまざまな XML レジストリにアクセスできるようになります。JAXR では、XML レジストリ内にコンテンツとメタデータを記述する共通の情報モデルによって、容易性と使いやすさを実現しています。
ネームスペース : http://java.sun.com/xml/ns/jax-rpc
Java API for XML-based RPC (JAX-RPC) 仕様 (https://jax-rpc.dev.java.net/
) は、XML ベースのリモート プロシージャ呼び出し (RPC) に使用する Java API を定義した Sun Microsystems の仕様です。特に、これらの API は、SOAP 1.1 (分散型環境で情報を交換するための XML ベースのプロトコル) を使用して、Web サービスを呼び出したり、Web サービスから応答を取得したりするのに使用されます。
WebLogic Server には、JAX-RPC バージョン 1.1 仕様の必要な機能がすべて実装されています。また、『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPC を使用した Web サービス入門』の「データ バインディングについて」で説明するように、WebLogic Server 実装のオプション データ型もサポートされています。WebLogic Server には、この章で説明されていない JAX-RPC 仕様のオプション機能は実装されていません。
ネームスペース : http://java.sun.com/xml/ns/jaxws
Java API for XML-based Web Services (JAX-WS) 仕様 (http://jcp.org/aboutJava/communityprocess/mrel/jsr224/index2.html
) は、Java Web サービスのコーディング、構築、デプロイメントに使用する標準ベースの API です。「統合されたスタック」には、JAX-WS 2.1、Java Architecture for XML Binding (JAXB) 2.1、および SOAP with Attachments API for Java (SAAJ) 1.3 が含まれます。JAX-WS は、Web サービスおよび Web アプリケーション内で JAX-RPC に取って代わるものとして設計されています。
ネームスペース : http://java.sun.com/xml/ns/jaxb
Java Architecture for XML Binding (JAXB) 仕様 (http://jcp.org/en/jsr/detail?id=222
) を使用すると、XML スキーマを Java コードの表現に簡単にバインドできます。これにより、XML 自体に関する知識がそれほどなくても、XML データと処理関数を、Java テクノロジに基づくアプリケーションに、簡単に組み込むことができます。
注意 : JAXB を JAX-RPC と一緒に使用することはできません。 |
ネームスペース :
urn:oasis:names:tc:SAML:2.0:assertion
urn:oasis:names:tc:SAML:2.0:protocol
Security Assertion Markup Language (SAML) 仕様 (http://docs.oasis-open.org/security/saml/v2.0/
) は、セキュリティ ドメイン間で認証および認可データを交換するための XML 標準を提供します。
ネームスペース :
urn:oasis:names:tc:SAML:1.0:assertion
Security Assertion Markup Language (SAML) Token Profile 1.1 仕様には、SOAP メッセージの認証および暗号化を実装する SOAP 拡張機能セットが定義されています。詳細については、http://www.oasis-open.org/committees/download.php/16768/wss-v1.1-spec-os-SAMLTokenProfile.pdf
を参照してください。
ネームスペース : http://schemas.xmlsoap.org/wsdl/soap
Simple Object Access Protocol (SOAP) (http://www.w3.org/TR/SOAP
) は、分散型環境で情報を交換するために使用する軽量 XML ベースのプロトコルです。WebLogic Server には、SOAP 仕様のバージョン 1.1 と 1.2 の独自の実装が含まれています。プロトコルの構成は以下のとおりです。
SOAP メッセージを記述するエンベロープ。メッセージの本文を含むエンベロープは、処理するユーザを識別し、処理方法を記述します。
アプリケーション固有のデータ型のインスタンスを表現するためのエンコーディング ルール セット。
リモート プロシージャ呼び出しおよび応答を表す規則。
この情報は、HTTP や HTTPS などの Web プロトコルで転送可能な Multipurpose Internet Mail Extensions (MIME) エンコード パッケージ内に埋め込まれています。MIME は、非 ASCII メッセージをインターネット上で送信できるようにフォーマットするための仕様です。
次の例は、HTTP リクエスト内に埋め込まれている株取引情報用の SOAP 1.1 リクエストを示しています。
POST /StockQuote HTTP/1.1 Host: www.sample.com:7001 Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastStockQuote xmlns:m="Some-URI"> <symbol>ORCL</symbol> </m:GetLastStockQuote> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
WebLogic Web サービスは、デフォルトでは SOAP のバージョン 1.1 を使用します。バージョン 1.2 を使用する場合は、その Web サービスを実装する JWS ファイルでバインディング タイプを指定する必要があります。
SOAP with Attachments API for Java (SAAJ) 仕様 (https://saaj.dev.java.net
) には、SOAP 1.1 仕様と SOAP with Attachments ノートに準拠するメッセージの作成と消費について記述されています。
API の javax.xml.soap
というパッケージでは、MIME 添付ファイルを持つ SOAP メッセージの主要な抽象概念を提供しています。添付ファイルには、XML ドキュメント全体、XML フラグメント、画像、テキスト ドキュメント、または有効な MIME タイプを持つその他のコンテンツを使用できます。また、このパッケージでは、Web サービスとの要求および応答型の対話に関する単純なクライアントサイドのビューも提供しています。
ネームスペース : http://www.w3.org/2005/08/addressing
注意 : 現在のリリースでは、Web Services Addressing (August 2004 Member Submission) (http://www.w3.org/Submission/2004/SUBM-ws-addressing-20040810 ) もサポートされます。 |
Web Services Addressing (WS-Addressing) 仕様 (http://www.w3.org/TR/ws-addr-core
) は、Web サービスとメッセージのアドレッシングを行うための、転送に依存しないメカニズムを提供します。特に、この仕様では、Web サービスのエンドポイントを識別したり、メッセージ内のエンドポイント ID をエンド ツー エンドで保護したりするのに使用される多数の XML 要素が定義されています。
ネームスペース : http://schemas.xmlsoap.org/wsdl
Web Services Description Language (WSDL) (http://www.w3.org/TR/wsdl
) は、Web サービスを記述するための XML ベースの仕様です。WSDL ドキュメントには、Web サービス オペレーション、入力および出力パラメータ、およびクライアント アプリケーションから Web サービスへの接続方法を記述します。
WebLogic Web サービスの開発者は、WSDL ファイルを作成する必要はありません。これらのファイルは WebLogic Web サービス開発プロセスの一部として自動的に生成されます。
次の例は参照用で GetLastStockQuote メソッドを含む株取引 Web サービス StockQuoteService を記述する WSDL ファイルを示しています。
<?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://sample.com/stockquote.wsdl" xmlns:tns="http://sample.com/stockquote.wsdl" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:xsd1="http://sample.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="GetStockPriceInput"> <part name="symbol" element="xsd:string"/> </message> <message name="GetStockPriceOutput"> <part name="result" type="xsd:float"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastStockQuote"> <input message="tns:GetStockPriceInput"/> <output message="tns:GetStockPriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastStockQuote"> <soap:operation soapAction="http://sample.com/GetLastStockQuote"/> <input> <soap:body use="encoded" namespace="http://sample.com/stockquote" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="encoded" namespace="http://sample.com/stockquote" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation>> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding"> <soap:address location="http://sample.com/stockquote"/> </port> </service> </definitions>
WSDL 仕様には、Web サービスを呼び出すときに使用できるさまざまなタイプのバインディングを指定するための、省略可能な拡張要素があります。WebLogic Web サービス ランタイムでは、次のとおりです。
SOAP バインディングを完全にサポートしている。つまり、WSDL ファイルに SOAP バインディングが含まれている場合、WebLogic Web サービスは、Web サービスの呼び出しに使用するメッセージの形式およびプロトコルとして SOAP を使用します。
HTTP GET および POST バインディングを無視する。つまり、WSDL ファイルにこの拡張機能が含まれている場合、WebLogic Web サービス ランタイムは WSDL の解析時にその要素をスキップします。
MIME バインディングを部分的にサポートする。つまり、WSDL ファイルにこの拡張機能が含まれている場合、WebLogic Web サービス ランタイムはその要素を解析しますが、Web サービス呼び出しのためにメッセージを作成するときに、実際には MIME バインディングを作成しません。
Web Services for Java EE 1.2 (JSR-109) 仕様 (http://www.jcp.org/en/jsr/detail?id=109
) では、WebLogic Server などの Java EE アプリケーション サーバ上で実行される Web サービスを Java で実装するためのプログラミング モデルとランタイム アーキテクチャを定義しています。特に、プログラマが次の 2 つのコンポーネントのいずれかを使用して Java EE Web サービスを実装することを規定しています。
Web コンテナ内で動作する Java クラス
EJB コンテナ内で動作するステートレス セッション EJB
また、標準 Java EE Web サービスのパッケージ化形式、デプロイメント モデル、実行時サービスについても記述されており、そのすべてを WebLogic Web サービスで実装しています。
http://java.sun.com/javase/6/docs/technotes/guides/language/annotations.html
に記載のメタデータ アノテーション機能とプログラミング モデルを利用することをお勧めします。このプログラミング モデルでは、アノテーション付きの Java ファイルを作成し、Ant タスクを使用してそのファイルを EJB または標準の Java クラスの Java ソース コードに変換し、関連するアーティファクトをすべて自動的に生成します。
アノテーション付きの Java Web サービス (JWS) ファイル (簡単に「JWS ファイル」と呼びます) は、Web サービスの中核部分です。このファイルには Web サービスの動作を決定する Java コードが含まれています。JWS ファイルは、JDK 5.0 メタデータ アノテーションを使用して Web サービスの形式や特性を指定した、通常の Java クラス ファイルです。JWS ファイルで使用できる JWS アノテーションには、http://www.jcp.org/en/jsr/detail?id=181
に記載の Web Services Metadata for the Java Platform 仕様 (JSR-181) で定義された標準のアノテーションと、その他の標準または WebLogic 固有のアノテーションがあり、作成する Web サービスのタイプに応じて使い分けます。
注意 : JWS アノテーション ファイルを使用する以外の方法としては、標準の Java クラスまたは EJB をゼロからコーディングし、それに関連するアーティファクト (デプロイメント記述子ファイル、WSDL、ユーザ定義のデータ型のデータ バインディング アーティファクトなど) を手動で生成することで、WebLogic Web サービスを自分でプログラミングする方法があります。ただし、この方法は、難しく時間がかかるためお勧めできません。 |
ネームスペース :
WS-Policy Attachment 1.5 : http://www.w3.org/ns/ws-policy
WS-PolicyAttachment 1.2 : http://schemas.xmlsoap.org/ws/2004/09/policy
Web Services Policy Attachment (WS-Policy Attachment) 仕様では、ポリシーの抽象モデルと XML ベースの式の文法を定義しています。この仕様では、ポリシーとポリシーの適用先のサブジェクトを関連付けるための、2 つの汎用メカニズムが定義されています。また、それらの汎用メカニズムを使用して、WS-Policy を WSDL や UDDI の記述に関連付ける方法も定義しています。
詳細については、以下を参照してください。
WS-Policy Attachment 1.5 (Recommendation) : http://www.w3.org/TR/ws-policy-attach/
WS-PolicyAttachment 1.2 (Member Submission) : http://www.w3.org/Submission/WS-PolicyAttachment
ネームスペース :
WS-Policy Framework 1.5 : http://www.w3.org/ns/ws-policy
WS-Policy 1.2 : http://schemas.xmlsoap.org/ws/2004/09/policy
WS-Policy Framework (WS-Policy) 仕様では、Web サービスのポリシーを記述して通信するための、汎用的なモデルと対応する構文が提供されています。WS-Policy は、幅広いサービスの要件、優先事項、機能を記述するために、他の Web サービス仕様が使用したり拡張したりできる、構成の基本セットを定義しています。
詳細については、以下を参照してください。
WS-Policy 1.5 Framework (Recommendation) : http://www.w3.org/TR/ws-policy
WS-Policy 1.2 Framework (Member Submission) : http://www.w3.org/Submission/WS-Policy
ネームスペース : http://docs.oasis-open.org/ws-rx/wsrm/200702
Web Services Reliable Messaging (WS-ReliableMessaging) 仕様 (http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.1-spec-os-01.pdf
) では、ソフトウェア コンポーネント、システム、またはネットワークに障害が発生した場合に、別々の WebLogic Server インスタンス上で動作する 2 つの Web サービスが確実に通信するための方法が規定されています。特に、ソース エンドポイントから送り先エンドポイントに送信されるメッセージの配信またはエラーの生成を保証する、相互運用性プロトコルを提供しています。
注意 : WS-ReliableMessaging 1.0 仕様は、下位互換性を維持する目的でサポートされています。ただし、WS-ReliableMessaging 1.1 クライアントが WS-ReliableMessaging 1.0 サーバと通信することはできません。 |
ネームスペース : http://docs.oasis-open.org/ws-rx/wsrmp/200702
Web Services Reliable Messaging Policy (WS-ReliableMessaging Policy) 仕様 (http://docs.oasis-open.org/ws-rx/wsrmp/200702/wsrmp-1.1-spec-os-01.pdf
) では、WS-Policy および WS-ReliableMessaging で使用する信頼性のあるメッセージングのためのドメイン固有のポリシー アサーションが定義されています。この仕様を使うことで、RM 送り先と RM ソースの要件を所定の順序で記述できます。
ネームスペース : http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512
Web Services Secure Conversation Language (WS-SecureConversation) 仕様 (http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512/ws-secureconversation-1.3-os.html
) では、Web Services Security (WS-Security) 1.1 および Web Services Trust Language (WS-Trust) 1.3 に基づく拡張が定義されています。これらの拡張により、1 つ以上のメッセージにまたがる通信を保護できます。この仕様では、セキュリティ コンテキストを確立および共有し、そのセキュリティ コンテキスト (または共有秘密) からキーを派生させるためのメカニズムが定義されています。
ネームスペース : http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuritysecext-1.0.xsd
、http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd
、http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd
Web サービス セキュリティについての以下の説明は、2006 年 2 月の「Web Services Security: SOAP Message Security」と題された OASIS 標準 1.1 仕様から直接引用したものです。
この仕様は、整合性と機密性を確保するセキュアな Web サービスを構築する際に使用できる SOAP (SOAP11、SOAP12) の拡張の標準セットを提案するものです。この拡張セットのことを「Web Services Security: SOAP Message Security」または「WSS: SOAP Message Security」と呼びます。
この仕様には柔軟性があり、さまざまなセキュリティ モデル (PKI、Kerberos、SSL など) でセキュアな Web サービスを実現するための土台となるように設計されています。たとえばこの仕様では、複数のセキュリティ トークン フォーマット、複数の信頼ドメイン、複数のシグネチャ フォーマット、および複数の暗号化技術がサポートされています。トークン フォーマットおよびそれらを使用するためのセマンティクスは、関連付けられたプロファイル ドキュメントに定義されています。
この仕様は、主にセキュリティ トークンの伝播、メッセージの整合性、およびメッセージの機密性の 3 つのメカニズムを提供します。これらのメカニズムは、それだけでは Web サービス用の完全なセキュリティ ソリューションとはなりません。この仕様は、他の Web サービス拡張機能やより高いレベルのアプリケーション固有プロトコルと一緒に使用して、さまざまなセキュリティ モデルおよびセキュリティ技術を実現することができるビルディング ブロックです。
前述のメカニズムは、独立して使用することも (たとえばセキュリティ トークンを渡すため)、密接に統合して使用することもできます (たとえば、メッセージ全体やその一部に対して署名や暗号化を行い、署名や暗号化に使用するキーと関連付けられたセキュリティ トークンまたはトークン パスを提供するなど)。
WebLogic Web サービスでは以下のトークン プロファイルも実装しています。
Web サービス セキュリティ : SOAP メッセージ セキュリティ
Web サービス セキュリティ : ユーザ名トークン プロファイル
Web サービス セキュリティ : X.509 証明書トークン プロファイル
Web サービス セキュリティ : SAML トークン プロファイル 1.1
詳細については、OASIS Web Service Security Web ページ (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss
) を参照してください。
ネームスペース : http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702
Web Services Security Policy (WS-SecurityPolicy) 仕様 (http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html
) では、WS-Policy フレームワークで使用するセキュリティ ポリシー アサーションのセットが定義され、WS-Security、WS-Trust、および WS-SecureConversation のコンテキストにおいてメッセージをどのように保護するかについて記述されています。
WebLogic Web サービスのすべての非同期機能 (コールバック、会話、Web サービスの信頼性のあるメッセージング) では、実装でアドレッシングを使用していますが、Web サービス プログラマは、追加のアドレッシング機能が必要な場合に、この仕様に準拠する API を単独で使用することもできます。
ネームスペース : http://schemas.xmlsoap.org/ws/2005/02/trust
Web Services Trust Language (WS-Trust) 仕様 (http://specs.xmlsoap.org/ws/2005/02/trust/WS-Trust.pdf
) では、Web Services Security (WS-Security) 1.1 に基づく拡張を定義します。これらの拡張により、セキュリティ トークンを要求および発行するためのフレームワークを提供し、信頼関係を仲介します。
ネームスペース : urn:uddi-org:api_v2
Universal Description, Discovery, and Integration (UDDI) 仕様 (http://uddi.xml.org
) では、Web サービスの記述、既知のレジストリへの Web サービスの登録、他の登録済み Web サービスの検索などの標準的な方法が定義されています。
XML Schema Part 1: Structures (http://www.w3.org/TR/xmlschema-1
)
XML Schema Part 2: Data Types (http://www.w3.org/TR/xmlschema-2
)