Apache CXFはWebサービスフレームワークであり、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。もともとCeltixとXFireという別々のオープンプロジェクトであったが、Apacheソフトウェア財団によってひとつに組み合わされた。
CXFは次に示すWebサービス標準をサポートしている。
CXFでは「WSDL contract first development」、「Java code first development」と呼ばれる2つのアプローチのいずれかを用いてWebサービスを開発することができる。
WSDL contract first developmentとは、まずWebサービスのWSDL文書を作成して、ツールを用いてそのWSDL文書からJavaコードを自動生成する開発手法である。
Java code first developmentとは、まずWebサービスのJavaコードを作成して、ツールを用いてそのJavaコードからWSDL文書を自動生成する開発手法である。
バインディングとは、特定のサービスのメッセージを特定のプロトコルにマッピングすることである。CXFのデフォルトのデータバインディングはJAXBである。Spring構成やAPIを介して他のデータバインディングのいずれかを指定しない場合は、JAXBを取得する。
CXFはXML設定ファイルを検出することができる。クライアントとサーバの両方において、CXFが設定ファイルを探すデフォルトのロケーションは、クラスパスが通った/cxf.xml
である。たとえば、サーブレットコンテナがアプリケーションを実行するときに、このファイルはWebアプリケーションの/WEB-INF/classes
フォルダ内に配置されることが期待されている。もしこのロケーションを上書きしたい場合は、コマンドラインのプロパティに -Dcxf.config.file=mycxf.xml
を指定する。このカスタム設定ファイルもクラスパス上にあると予想される。
設定ファイルのロケーションとしてURLを使用したい場合は、-Dcxf.config.file.url=www.example.com/mycxf.xml
を指定する。
CXF設定ファイルは、実際にはSpringの設定ファイルである。したがって、すべての設定ファイルは次のように始まる。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<!-- configuration goes here! -->
</beans>
Webサービスクライアントのクラスパスにcxf.xml
ファイルを配置すると、クライアント固有の機能を設定するために使用することができる。
CXFは次の表に示すツールを提供している。
ツール | 説明 |
---|---|
idl2wsdl | IDLからWSDLを生成する。 |
java2wsdl | サービスを実装したJavaコードからWSDL文書を生成する。 |
wsdl2java | WSDL文書からサービスを実装したJavaコードを生成する。 |
SOAPメッセージが正しく宛先に到達したかどうかの情報は、下位層プロトコルのHTTPやTCP/IPの情報に依存している。WS-Addressing (Web Services Addressing)は、Webサービスがアドレス指定する際、転送手段に依存しない方法を提供する仕様である。
WS-Security (Web Services Security)はWebサービスにセキュリティを適用するためにSOAPを拡張したものであり、メッセージの暗号化やディジタル署名の付加を可能にするものである。SAML、Kerberos及びX.509などのさまざまなセキュリティトークン形式の通信が行える。
WS-Trustはセキュリティトークンの発行、更新及び取り消しと信頼関係の仲介をサポートする。クライアントはSTS (Security Token Service)という特定タイプのSOAP Webサービスを呼び出すとこで、セキュリティトークンのメッセージを交換することができる。
WS-Trustはセキュリティトークンを発行、更新及び検証できるようにWS-Security仕様を拡張している。
WS-Trustの名前空間はバージョンにより異なる。
Version | Namespace |
---|---|
WS-Trust 1.3 | http://docs.oasis-open.org/ws-sx/ws-trust/200512 |
WS-Trust 1.4 | http://docs.oasis-open.org/ws-sx/ws-trust/200802 |
Element | Description |
---|---|
RequestSecurityToken | セキュリティトークン要求 (RST) |
RequestType | 要求のタイプ |
Lifetime | トークンの有効期間 |
TokenType | トークンのタイプ |
KeySize | 要求する鍵のサイズ(ビット単位) |
Entropy | 秘密鍵を生成するときに使用するエントロピー |
ComputeKeyAlgorithm | 秘密鍵を生成するときに使用するアルゴリズム |
RequestSecurityTokenResponseCollection | セキュリティトークン要求応答のコレクション |
RequestSecurityTokenResponse | セキュリティトークン要求応答 (RSTR) |
RequestProofToken | 証明トークン |
The Apache Software Foundation (2023) Apache CXF