Apache CXF

Apache CXFはWebサービスフレームワークであり、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。もともとCeltixとXFireという別々のオープンプロジェクトであったが、Apacheソフトウェア財団によってひとつに組み合わされた。

Webサービスの開発

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の設定ファイル

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ツール

CXFは次の表に示すツールを提供している。

CXFのツール
ツール説明
idl2wsdlIDLからWSDLを生成する。
java2wsdlサービスを実装したJavaコードからWSDL文書を生成する。
wsdl2javaWSDL文書からサービスを実装したJavaコードを生成する。

WS-Addressing

SOAPメッセージが正しく宛先に到達したかどうかの情報は、下位層プロトコルのHTTPやTCP/IPの情報に依存している。WS-Addressing (Web Services Addressing)は、Webサービスがアドレス指定する際、転送手段に依存しない方法を提供する仕様である。

WS-Security

WS-Security (Web Services Security)はWebサービスにセキュリティを適用するためにSOAPを拡張したものであり、メッセージの暗号化やディジタル署名の付加を可能にするものである。SAML、Kerberos及びX.509などのさまざまなセキュリティトークン形式の通信が行える。

WS-Trust

WS-Trustはセキュリティトークンの発行、更新及び取り消しと信頼関係の仲介をサポートする。クライアントはSTS (Security Token Service)という特定タイプのSOAP Webサービスを呼び出すとこで、セキュリティトークンのメッセージを交換することができる。

WS-Trustはセキュリティトークンを発行、更新及び検証できるようにWS-Security仕様を拡張している。

WS-Trustの名前空間はバージョンにより異なる。

WS-Trustの名前空間
VersionNamespace
WS-Trust 1.3http://docs.oasis-open.org/ws-sx/ws-trust/200512
WS-Trust 1.4http://docs.oasis-open.org/ws-sx/ws-trust/200802
WS-Trustの要素
ElementDescription
RequestSecurityTokenセキュリティトークン要求 (RST)
RequestType要求のタイプ
Lifetimeトークンの有効期間
TokenTypeトークンのタイプ
KeySize要求する鍵のサイズ(ビット単位)
Entropy秘密鍵を生成するときに使用するエントロピー
ComputeKeyAlgorithm秘密鍵を生成するときに使用するアルゴリズム
RequestSecurityTokenResponseCollectionセキュリティトークン要求応答のコレクション
RequestSecurityTokenResponseセキュリティトークン要求応答 (RSTR)
RequestProofToken証明トークン

参考文献

The Apache Software Foundation (2023) Apache CXF