Oracle® Fusion Middleware Oracle WebCenter Content: Imagingの開発 11g リリース1 (11.1.1) B72422-02 |
|
前 |
次 |
この章の内容は次のとおりです。
Imagingサービスの活用に最も便利な方法はネイティブのJava APIですが、ほとんどがImaging Webサービス・セットにコールを折返すプロキシ・クラスとユーティリティ・クラスのセットです。ネイティブJava APIにより公開されている機能はすべて、ダイレクトWebサービス・コールから利用できます。ダイレクトWebサービスを経由してAPIを使用するには、WSDLドキュメントとWebサービスを呼び出す環境固有のテクニックを深く理解する必要があります。
Imaging Webサービスの起動方法を理解するには、まず、WSDLドキュメントがどこにあるかを知らなければなりません。次のリストは、ImagingサービスのWSDLの場所をまとめたものです。ホスト名およびポート番号は、インストールによって異なります。
http://<ipmhost>:<port>/imaging/ws/ApplicationService?wsdl
http://<ipmhost>:<port>/imaging/ws/ConnectionService?wsdl
http://<ipmhost>:<port>/imaging/ws/DocumentContentService?wsdl
http://<ipmhost>:<port>/imaging/ws/DocumentService?wsdl
http://<ipmhost>:<port>/imaging/ws/ImportExportService?wsdl
http://<ipmhost>:<port>/imaging/ws/LoginService?wsdl
http://<ipmhost>:<port>/imaging/ws/PreferenceService?wsdl
http://<ipmhost>:<port>/imaging/ws/SearchService?wsdl
http://<ipmhost>:<port>/imaging/ws/SecurityService?wsdl
http://<ipmhost>:<port>/imaging/ws/TicketService?wsdl
Imaging Webサービスの大半は、ステートレス・モード、ステートフル・モードのどちらでも動作します。ステートレス・モードでは、それぞれのサービス・リクエストで渡された認証資格証明書を使用して、ユーザーのログイン、リクエストされた操作の実行、ログアウトが透過的に行われ、その後、戻ります。
ステートフル操作では、まず、LoginService.login操作がコールされ、Imagingとのユーザー・セッションが確立されます。ログイン・メソッドへの資格証明は、そのときに有効なセキュリティ・ポリシーにより、ポリシーが適用されていない場合はHTTP Basic認証経由で提供されます。
ログイン操作により返されたjsessionid cookieは、その後、他のサービスを呼び出すために渡されます。こうすることにより、コールからコールへのセッション状態が維持されます。Webサービス・セキュリティは、OWSMセキュリティのポリシー強制に適合するために各コールがユーザー資格証明を渡すことを要求します。LoginService.logoutへのコールにより、ユーザー・セッションは終了します。
前述のとおり、ほとんどのImagingサービスはどちらかのモードで動作します。ただし、DocumentContentServiceは例外です。DocumentContentService操作は、ストリームMessage Transmission Optimization Mechanism (MTOM) 機能を使用できますが、この機能にはOWSMセキュリティ・ポリシーとの互換性がありません。したがって、DocumentContentService操作に適切なセキュリティを提供するには、ステートフル・モードが必要です。
AXF Serverサービスとの接続のためにWSDLファイルを生成できます。WSDLファイルは、AXFサーバー・サービスが理解できるデータを渡す能力を提供します。これにより、WebCenter Content内の様々なコマンドにアクセスできるようになります。
AXF Webサービス・ファイルは、次の場所にあります。ホスト名およびポート番号は、インストールによって異なります。
http://<host>:<port>/axf-ws2/AxfSolutionMediatorService?wsdl
注意: 上のURLは、IPMサーバーでのみ有効です。 |
WSDLファイルは、正式には、Webサービスに渡されるデータの説明を含む要素を使って構造化されています。この構造により、送信側アプリケーションと受信側アプリケーションの両方が、交換されているデータを解析できるようになります。
WSDL要素には、データに対して実行される操作の説明とプロトコルまたはトランスポートへのバインディングが含まれます。これにより、受信側アプリケーションは、データを処理しながら、データに応答するまたはデータを戻す方法を解析できるようになります。各WSDL要素に追加のサブ要素が含まれることもあります。
WSDLファイル構造に含まれる要素を大別すると次のようになります。
データ型: 一般に、メッセージで使用されるXMLスキーマの形式を取ります。
メッセージ: 完全なドキュメント、またはメソッド起動にマップされる引数として、メッセージの形式をとるデータの定義。
ポート・タイプ: アドレスにマップされる操作のセット。バインディングに使用される操作のコレクションを定義します。
バインディング: 特定のポート・タイプにおける操作とメッセージで実際に使用されるプロトコルとデータ形式。
サービスとポート: サービスは、ポートにバインディングをマップします。また、ポートは通信交換に使用されるバインディングとネットワーク・アドレスの組合せです。
データ型<types>は複合型および関連する要素を定義します。Webサービスは、単純データ型(文字列、整数、ブールなど)と複合データ型の両方をサポートします。複合型は、いくつかの単純型、またはサブ要素の配列を含む構造化XML文書です。
次のAxfRequestセットのコード部分では、要素CommandNamesapce、solutionNamespace、requestParameters、UserContext、およびusernameを定義し、これらを文字列に指定しています。
<xs:complexType name="axfRequest"> <xs:sequence> <xs:element name="commandNamespace" type="xs:string" minOccurs="0" /> <xs:element name="conversationId" type="xs:string" minOccurs="0" /> <xs:element name="requestParameters"> <xs:complexType> <xs:sequence> <xs:element name="entry" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="key" minOccurs="0" type="xs:string" /> <xs:element name="value" minOccurs="0" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="role" type="xs:string" minOccurs="0" /> <xs:element name="solutionNamespace" type="xs:string" minOccurs="0" /> <xs:element name="systemName" type="xs:string" minOccurs="0" /> <xs:element name="userContext"> <xs:complexType> <xs:sequence> <xs:element name="entry" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="key" minOccurs="0" type="xs:string" /> <xs:element name="value" minOccurs="0" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="username" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType>
同様に、次のAxfResponseセットのコード部分では、要素ConversationId、Errorcode、ErrorMessage、およびresponseCommandsを定義し、これらを文字列に指定しています。
<xs:complexType name="executeResponse"> <xs:sequence> <xs:element name="response" type="tns:axfResponse" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="axfResponse"> <xs:sequence> <xs:element name="conversationId" type="xs:string" minOccurs="0" /> <xs:element name="errorCode" type="xs:string" minOccurs="0" /> <xs:element name="errorMessage" type="xs:string" minOccurs="0" /> <xs:element name="pid" type="xs:string" minOccurs="0" /> <xs:element name="responseCommands" type="tns:responseCommand" nillable="true" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> <xs:complexType name="responseCommand"> <xs:sequence> <xs:element name="command" type="xs:string" minOccurs="0" /> <xs:element name="value" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType>
メッセージ<message>は、メソッド起動にマップされる引数としてデータを定義します。
<message name="execute"> <part name="parameters" element="tns:execute" /> </message> <message name="executeResponse"> <part name="parameters" element="tns:executeResponse" /> </message>
ポート・タイプ<portType>は、バインディングに使用される操作のコレクションを定義します。DocInfo.wsdlファイルは、DocInfoSoapとDocInfo操作名(メソッド名)を、メッセージを処理するためのI/O情報とともに提供します。
<portType name="AxfSolutionMediatorWS"> <operation name="execute"> <input message="tns:execute" /> <output message="tns:executeResponse" /> </operation> </portType>
バインディング<binding>は、特定のポート・タイプにおける操作とメッセージで実際に使用されるプロトコルとデータ形式を定義します。
<binding name="AxfSolutionMediatorPortBinding" type="tns:AxfSolutionMediatorWS"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="execute"> <soap:operation soapAction="execute" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding>
サービス<service>はポートにバインディングをマップします。ポートは、バインディングと、通信交換に使用されるネットワーク・アドレスの組合せです。ポートは、定義済トランスポート上でポート・タイプ(操作)のセットを公開するために使用されます。
<service name="AxfSolutionMediatorService"> <port name="AxfSolutionMediatorPort" binding="tns:AxfSolutionMediatorPortBinding"> <soap:address location="http://<MachineName>:<Port>/axf-ws2/AxfSolutionMediatorService" /> </port> </service>