8 Imaging APIをPure Webサービスとして使用

この章の内容は、次のとおりです。

8.1 Imaging APIのPure Webサービスとしての使用について

Imagingサービスの活用に最も便利な方法はネイティブのJava APIですが、ほとんどがImaging Webサービス・セットにコールを折返すプロキシ・クラスとユーティリティ・クラスのセットです。ネイティブJava APIにより公開されている機能はすべて、ダイレクトWebサービス・コールから利用できます。ダイレクトWebサービスを経由してAPIを使用するには、WSDLドキュメントとWebサービスを呼び出す環境固有のテクニックを深く理解する必要があります。

8.1.1 WebサービスWSDLの検索

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

8.2 ステートレス・セッションでのWebサービスの使用

Imaging Webサービスの大半は、ステートレス・モード、ステートフル・モードのどちらでも動作します。ステートレス・モードでは、それぞれのサービス・リクエストで渡された認証資格証明書を使用して、ユーザーのログイン、リクエストされた操作の実行、ログアウトが透過的に行われ、その後、戻ります。

8.3 ステートフル・セッションでのWebサービスの使用

ステートフル操作では、まず、LoginService.login操作がコールされ、Imagingとのユーザー・セッションが確立されます。ログイン・メソッドへの資格証明は、そのときに有効なセキュリティ・ポリシーにより、ポリシーが適用されていない場合はHTTP Basic認証経由で提供されます。

ログイン操作により返されたjsessionid cookieは、その後、他のサービスを呼び出すために渡されます。こうすることにより、コールからコールへのセッション状態が維持されます。Webサービス・セキュリティは、OWSMセキュリティのポリシー強制に適合するために各コールがユーザー資格証明を渡すことを要求します。LoginService.logoutへのコールにより、ユーザー・セッションは終了します。

前述のとおり、ほとんどのImagingサービスはどちらかのモードで動作します。ただし、DocumentContentServiceは例外です。DocumentContentService操作は、ストリームMessage Transmission Optimization Mechanism (MTOM) 機能を使用できますが、この機能にはOWSMセキュリティ・ポリシーとの互換性がありません。したがって、DocumentContentService操作に適切なセキュリティを提供するには、ステートフル・モードが必要です。

8.4 AXF Webサービスの使用

AXF Serverサービスとの接続のためにWSDLファイルを生成できます。WSDLファイルは、AXFサーバー・サービスが理解できるデータを渡す能力を提供します。これにより、WebCenter Content内の様々なコマンドにアクセスできるようになります。

8.4.1 AXF WebサービスのWSDLファイルのロケーティング

AXF Webサービス・ファイルは、次の場所にあります。ホスト名およびポート番号は、インストールによって異なります。

http://<host>:<port>/axf-ws2/AxfSolutionMediatorService?wsdl

注意:

上のURLは、IPMサーバーでのみ有効です。

8.4.2 WSDLファイル構造

WSDLファイルは、形式上、Webサービスに渡されるデータの説明を含む要素で構造化されます。この構造は、交換されるデータを解析するために、アプリケーションの送信とアプリケーションの受信を可能にします。

WSDL要素には、データ上で実行される操作の説明およびプロトコルまたはトランスポートへのバインディングが含まれます。これにより、データの処理と、応答する方法やデータを返す方法の解釈の両方のために、アプリケーションを受信できるようになります。各WSDL要素に追加のサブ要素が含まれることもあります。

WSDLファイル構造には、次の主要素が含まれます。

  • データ型: 一般に、メッセージで使用されるXMLスキーマの形式を取ります。

  • メッセージ: 完全なドキュメント、またはメソッド起動にマップされる引数として、メッセージの形式をとるデータの定義。

  • ポート・タイプ: アドレスにマップされる操作のセット。これは、バインディングのための操作のコレクションを定義します。

  • バインディング: 特定のポート・タイプにおける操作とメッセージで実際に使用されるプロトコルとデータ形式。

  • サービスとポート: サービスは、ポートにバインディングをマップします。また、ポートは通信交換に使用されるバインディングとネットワーク・アドレスの組合せです。

8.4.3 データ型

データ型<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>

8.4.4 メッセージ

メッセージ<message>は、メソッドの起動にマップされるデータを引数として定義します。

<message name="execute">
  <part name="parameters" element="tns:execute" /> 
</message>
<message name="executeResponse">
  <part name="parameters" element="tns:executeResponse" /> 
</message>

8.4.5 ポート・タイプ

ポート・タイプ<portType>は、バインディングのための操作のコレクションを定義します。DocInfo.wsdlファイルは、DocInfoSoapとDocInfo操作名(メソッド名)を、メッセージを処理するためのI/O情報とともに提供します。

<portType name="AxfSolutionMediatorWS">
  <operation name="execute">
    <input message="tns:execute" />
    <output message="tns:executeResponse" />
  </operation>
</portType>

8.4.6 バインディング

バインディング<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>

8.4.7 サービスとポート

サービス<service>は、バインディングをポートにマップします。ポートは、バインディングと、通信交換のためのネットワーク・アドレスの組合せです。ポートは、定義されたトランスポート上でポート・タイプ(操作)のセットを公開するために使用されます。

<service name="AxfSolutionMediatorService">
  <port name="AxfSolutionMediatorPort" binding="tns:AxfSolutionMediatorPortBinding">
    <soap:address location="http://&lt;MachineName&gt;:&lt;Port&gt;/axf-ws2/AxfSolutionMediatorService" />
  </port>
</service>