高度なカスタマイズ > Info*Engine ユーザーガイド > SOAP サービス > レガシー サービス > SOAP RPC サーブレット
  
SOAP RPC サーブレット
Info*Engine では、SOAP クライアントから SOAP リクエストを受信し、レスポンスをクライアントに返す SOAP Remote Procedure Call (RPC) サーブレットを提供しています。このサーブレットは、クライアントから送信された情報 (実行するメソッドや、その他の要求情報で構成されます) を収集し、サイトのユーザーが SOAP クライアントと併用するために作成したタスクを実行することにより、メソッドを処理します。これらのタスクを使用して Task Webject を実行します。サーブレットを使用することで、SOAP クライアントはこれらの特別に記述された Info*Engine ビジネスタスクを呼び出すことができます。必要な SOAP タスクフォーマットの詳細については、SOAP による Infor*Engine タスク呼び出しを参照してください。
Info*Engine SOAP RPC サーブレットを使用すると、Info*Engine Java EE コネクタ、またはその他のサードパーティ製 SOAP クライアントを使用して開発された SOAP クライアントとの間でデータを送受信できます。詳細については、Info*Engine Java EE コネクタを参照してください。
SOAP RPC サーブレットは、HTTP GET リクエスト (たとえば、標準のウェブブラウザを使用して直接サーブレットにアクセスする場合) を受信すると、その SOAP サービス用の Web Services Definition Language (WSDL) を自動的に生成します。RPC サーブレットに GET リクエストを発行する場合は、CLASS 照会引数を指定する必要があります。また、必要に応じて VERSION および STYLE 照会引数を指定することもできます。CLASS 照会引数は、WSDL を生成する対象の SOAP サービスの CLASS を指定します。VERSION および STYLE パラメータは、生成する WSDL のタイプを指定するために使用します。STYLE および VERSION パラメータの詳細については、Generate-WSDLの Webject の説明を参照してください。
たとえば、以下のタイプ識別子の下に作成した Info*Engine SOAP サービスに対応するデフォルトの WSDL を生成するとします。
com.myCompany.myService
この場合、WSDL の生成リクエストは以下のようになります。
http://<ホスト>/Windchill/servlet/RPC?CLASS=com.myCompany.myService
ユーザーの SOAP サービスを、Business Process Execution Language (BPEL) 記述からユーザーの SOAP メソッドを呼び出すようなタスクを持つサードパーティのサービス志向アーキテクチャ (SOA) プラットフォームと統合する場合、Info*Engine を WS-I に従った方法で動作させると統合が簡単になります。このような状況では、以下のような WSDL 生成リクエストを発行します。
http://<ホスト>/Windchill/servlet/RPC?CLASS=com.myCompany.myService
&VERSION=1.1&STYLE=document
Info*Engine Java Platform, Enterprise Edition (Java EE) コネクタは、WSDL を使用してクライアント側のソースコードを生成し、Info*Engine との対話を簡素化します。
Microsoft SOAP Toolkit では、WSDL を使用して、クライアントが呼び出せるリモートクラスとメソッド、各メソッドがサポートするパラメータ、および返される結果の種類を定義、検証、および制限します。Microsoft SOAP Toolkit の詳細およびダウンロードについては、次の URL を参照してください。
http://www.microsoft.com/downloads
ほかのサードパーティ製クライアントでも、WSDL を使用して、ソースコードを生成したり、Info*Engine との対話をサポートしたりすることができます。
以下の図は、SOAP クライアントが Info*Engine とどのように対話するかを示しています。
SOAP リクエストが作成される際に、Web サーバーは HTTP リクエストを処理し、それを SOAP RPC サーブレットに送ります。SOAP RPC サーブレットは Windchill ディレクトリサーバーの LDAP リポジトリにアクセスして、実行するタスクを識別します。LDAP リポジトリでは、SOAP クライアントが実行できるメソッドに対して実行されるタスクを識別するタスク代理を作成しました。SOAP RPC サーブレットがタスク名およびその他のリクエスト情報を Info*Engine サーバーに送信し、Info*Engine サーバーがタスクを実行します。
Info*Engine サーバーがタスクを実行すると、適切なレスポンスが SOAP クライアントに送信されます。SOAP クライアントに送信されるレスポンスは、Info*Engine タスクから返されるデータによって決まります。SOAP クライアントによる起動用に作成されたタスクは、以下の値を返します。
intfloatdate などのプリミティブ値
Java Beans
プリミティブ値の配列
Java Beans の配列
Info*Engine コレクション、グループ、要素、属性、または文字列としてのグループ XML
Info*Engine グループが返され、そのリターンタイプが SOAP タスクで明示的に指定されていない場合、そのグループは、入力 $(@FORM[]group_out[0]) を使用して名付けられたグループの Info*Engine XML 表現を含む単一の文字列として SOAP クライアントに返されます。
エラーが検出されると、SOAP の障害がクライアントに返されます。この障害は、実装固有のメカニズムを使用して、SOAP クライアントにより処理されます。たとえば、Info*Engine Java EE コネクタのクライアントは、SOAP の障害を Java 例外として受信します。Visual Basic クライアントは、faultcodefaultstringfaultactordetail などのインスタンス変数を使用できます。