この章では、Oracle Enterprise Schedulerを使用してWebサービス・ジョブを作成する方法および次の項について説明します。
Webサービスは、Web上でサービスを公開するスタンドアロンの手段を提供します。WebサービスはURLからアクセス可能であり、SOAPおよびXMLをペイロードとして使用します。Webサービスは、WebサービスのインタフェースおよびURLを定義するWSDL標準によって説明されています。
Webサービスの例は次のとおりです。
SOA Suiteコンポジット
Oracle Service Busプロキシ・サービス
ADFビジネス・コンポーネントWebサービス
Webサービスは、一方向、同期または非同期操作を公開できます。一方向のWebサービス操作は、Webサービスによりレスポンスが返されないファイア・アンド・フォーゲット操作です。同期Webサービス・操作は、同じWebサービスの起動の一部としてレスポンスを返します。通常、Webサービス・クライアントは、同期操作レスポンスが受信されるまでブロックされます。非同期Webサービス操作には2つの一方向メッセージが含まれますが、1つはWebサービス操作リクエスト用、もう1つはレスポンス用です。通常、非同期Web操作は長時間実行される操作を表します。Webサービス・クライアントは非同期Webサービス操作を起動しますが、レスポンスを待機しません。かわりに、クライアントはWebサービスからレスポンスを受信するコールバックURLを指定します。Webサービスは、リクエストをバックグラウンドで処理し、コールバック操作を使用してレスポンスをクライアント指定のコールバックURLに返します。
Oracle Enterprise Schedulerは、同期インタフェース、一方向インタフェースおよび非同期インタフェースを使用するWebサービス・ジョブをサポートします。Webサービス・ジョブ定義は(ホスティング・アプリケーションまたはクライアント・アプリケーションの一部として)JDeveloperを使用して、またはOracle Enterprise Manager Fusion Middleware Controlを使用して定義できます。Webサービス・ジョブ・タイプを選択する場合、ユーザーは、ウィザードで誘導される簡単な一連のステップを進みWebサービス・ジョブを定義します(「Oracle Enterprise Manager Fusion Middleware Controlを使用したジョブ定義の作成」の例を参照)。このウィザードは、WSDL URLを取得し、WSDLサービス、ポート・タイプおよび操作の選択をユーザーに要求します。次に、WSDLに基づいてペイロードのサンプルXMLを作成し、ユーザーにその更新を許可します。非同期および同期Webサービスは、オプションで、取消し用に指定された操作を実行できます。取消し操作があった場合、この操作が選択され、取消し操作用のサンプルXMLコードが変更されます。このウィザードは、ウィザードでユーザーが入力した値または入力した値から導かれた値をジョブ定義の事前定義済のシステム・プロパティのセットに入力します。
注意:
Webサービス・ジョブ・タイプのWSDL URLは、具体的なWSDL URLである必要があります。抽象的なWSDL URLにはできません。
ジョブ定義には、ユーザー定義パラメータを設定できます。起動またはcancel
ペイロードXMLコード内の要素または属性は、トークン置換手順を指定することで、プラグインされるこれらのパラメータのいずれかを要素値として指定できます。たとえば、トークン置換コマンド${ESS_REQ:customerID}
でパラメータcustomerID
をプラグインします。これにより、ジョブの発行者はパラメータ値のみを入力して、それらからXMLペイロードを構築できます。トークン置換は、WSDLベースURLおよびWSDL相対URLシステム・プロパティにも指定できます。トークンの置換の詳細は、「トークンおよび論理クラスタの使用」を参照してください。
Webサービス・ジョブは、Oracle Web Services Manager (OWSM)ポリシーによって保護されます。Oracle Enterprise Manager Fusion Middleware ControlまたはJDeveloperでは、OWSMの直接アタッチされるポリシーを起動(クライアント・ポリシー)およびコールバック(サービス・ポリシー)アクションのジョブ定義にアタッチできます。グローバルにアタッチされたポリシーを使用してポリシーをグローバルに定義したり、直接アタッチされたポリシーを使用して個別のジョブ定義を保護したりできます。
注意:
Oracle Web Services Manager (OWSM)ポリシーの使用の詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理の次の各項を参照してください。
「Fusion Middleware Controlを使用したポリシーをグローバルにアタッチする」
「WLSTを使用したポリシーをグローバルにアタッチする」
「WLSTを使用したポリシーを直接アタッチする」
進捗状況メッセージは、非同期Webサービス・ジョブに対してサポートされています。これらのメッセージは、ジョブ・ログに書き込まれます。コールバック操作で、ジョブが成功したか失敗したかをジョブは示すことができます。コールバック・メッセージは、ジョブの出力で構成されます。
Oracle Enterprise Schedulerでは、事前定義済Webサービス・ジョブ・タイプがサポートされています。Webサービス・ジョブ定義で指定するジョブ・タイプにより、構成済Webサービス操作が非同期、同期または一方向(ファイア・アンド・フォーゲット)のいずれで起動されているかどうかが暗黙的に判別されます。
「概要」で説明したように、Oracle Enterprise Schedulerでは、3つの事前定義されたWebサービス・ジョブ・タイプがサポートされています。Webサービスの事前定義済ジョブ・タイプを表13-1に示します。
表13-1 事前定義済Webサービス・ジョブ・タイプ
事前定義済ジョブ・タイプ | 説明 |
---|---|
|
(非同期)コール元がWebサービスを起動すると、Webサービスがバックグラウンドで非同期に実行され、WebサービスはコールバックURLのコール元にコールバックします |
|
(同期)コール元は、レスポンスが返されるまでブロックされます(リクエスト/レスポンス) |
|
(一方向)コール元はレスポンスを想定しません。Webサービスはバックグラウンドで実行されます(ファイア・アンド・フォーゲット)。 |
Webサービス・ジョブの取消し操作のサポートはオプションです。Webサービスは、実行中のWebサービスの起動を取り消す取消し操作をサポートできます。
取消し操作は中断操作ではありません。中断操作ではコンポジットが終了し、元の操作を完了するためのコールバックが行われません。Webサービス・プロバイダにより正常に動作する取消しを実装することで、元のWebサービス操作により、SOAPレスポンス・ヘッダーで事前定義済のwsa:Action
コードを使用して「操作取消しレスポンス」が返されます(表13-2を参照)。取消しWebサービス操作は、同期Webサービス操作である必要があります。
同期と非同期のWebサービス・ジョブのいずれも、wsa:Action
SOAPレスポンス・メッセージ・ヘッダーで適切な値を指定して、Webサービス操作が取り消されたかフォルト(エラー)になったかを示すことができます。コールバック・レスポンスSOAPメッセージが「取消済」または「フォルト」レスポンスに一致しない場合(後述するメカニズムのいずれかを使用)、ジョブの状態は「成功」となります。
表13-2に、SOAP wsa:Action
ヘッダーを使用して指定できる様々なWebサービス操作ステータスを示します。
表13-2 SOAP Webサービス操作ステータス
アクション・コード名 | アクションURI |
---|---|
取消済 |
"http://xmlns.oracle.com/schedulercallback/wsOperationCancelled" |
フォルト |
|
Oracle SOA Suiteは、wsa:Action
メッセージ・ヘッダーの設定をサポートします。かわりに、表13-3にリストされている文字列の1つを、コールバック・メッセージのSOAP body
要素に追加できます。
表13-3 Oracle SOA Suiteステータス操作
操作 | 文字列 |
---|---|
取消済 |
"wsOperationCancelled" |
フォルト |
"wsOperationFault" |
Oracle Enterprise Schedulerでは、Webサービス・ジョブの特定の構成プロパティを使用します。
表13-4に、Webサービス・ジョブ・タイプに関連付けられているプロパティをリストします。
表13-4 Webサービス・ジョブの構成プロパティ
プロパティ名 | 説明 |
---|---|
|
WSDL URLのベースURLの一部。 |
|
WebサービスのWSDL URLの相対的な部分(具体的なWSDL URLである必要があります)。 |
|
エンドポイントURLのベースURLの一部。 |
|
Webサービス・エンドポイントURLの相対部分(具体的なWSDL URLである必要があります)。 |
|
ターゲットのネームスペース。 |
|
サービス名。 |
|
ポート名。 |
|
操作名。 |
|
Webサービスの呼出しに使用されるXMLの発行メッセージ |
|
オプションです。取消操作名。 |
|
オプションです。Webサービスの取消操作のためのXMLメッセージ。 |
|
オプションです。サポートされている値は、「ADFBC」、「OSB」または「SOA」です。その他の値は無効です。 |
脚注 1
このプロパティは、トークン置換を使用して指定できます。詳細は、「トークンおよび論理クラスタの使用」を参照してください。
SYS_EXT_wsEndpointBaseUrl
プロパティおよびSYS_EXT_wsEndpointUrl
プロパティがジョブ定義で指定されている場合、Oracle Enterprise SchedulerにはWebサービスを起動するための十分な情報があります。SYS_EXT_wsEndpointBaseUrl
とSYS_EXT_wsEndpointUrl
プロパティがジョブ定義で指定されておらず、SYS_EXT_wsWsdlBaseUrl
とSYS_EXT_wsWsdlUrl
プロパティが指定されている場合、Oracle Enterprise Schedulerは実行時に(ジョブを起動する前)WSDLを取得し、WSDLからEndpointUrl
とTargetNamespace
プロパティ値を取得し、Webサービスを起動します。
SYS_EXT_wsServiceName
、SYS_EXT_wsPortName
およびSYS_EXT_wsOperationName
プロパティを指定して、起動する特定のWebサービス操作を識別する必要があります。
SYS_EXT_invokeMessage
プロパティには、起動するためのXMLメッセージ(SOAP bodyペイロード)が含まれます。これは、XMLテンプレートまたは完全なXMLのいずれかです。
XMLテンプレートには、実行時に置換されるトークンが含まれます。ジョブ発行者は、テンプレートのトークンと置換されるパラメータ値を指定します。完全なXMLがトークンなしで使用される場合、置換は必要なく、ジョブ定義内で指定されたXMLはジョブ起動でそのまま使用されます。
注意:
XML文内の山カッコ(<および>)はエスケープする必要があります。
起動後、リモートWebサービスは、進捗状況メッセージをログに記録してそのステータスを更新できます。これらのメッセージは、Webサービス・ジョブによってログに記録され、リクエスト・ログで使用できます。Webサービス・レスポンスXMLは、ジョブ出力として取得されます。
SYS_EXT_wsCancelMessage
およびSYS_EXT_wsCancelOperationName
プロパティが取消しメッセージで構成されている場合、メッセージは取消し操作が実行中のWebサービス・ジョブで開始されたときに起動されます。取消し操作は、同期Webサービス操作として常に起動されます。
取消しメッセージSOAPヘッダーには、起動Webサービス操作に関連付けられているwsa:messageId
に設定されているWS-Addressing relatesToId
プロパティが自動的に移入されます。取消し操作では、起動操作と同じOWSMポリシーが使用されます。SYS_EXT_wsCancelMessage
プロパティが構成されていない場合、Webサービスでは取消しがサポートされないため取消しできません。
SYS_externalJobType
プロパティでは、Webサービス・ジョブ定義によりWebサービス・タイプ(ADFBC、Service BusまたはSOA)を指定できます将来カスタマイズされるWebサービス・ジョブ実装用のものです。
Webサービス・ジョブ・タイプでは、分離されたOracle Web Services Manager (OWSM)ポリシー・サブジェクト(Job-Invoke、Job-Callback)、およびWebサービス起動とコールバック操作に対して関連付けられているグローバルにアタッチされたポリシーおよび直接アタッチされたポリシーが使用されます。
Job-Invokeポリシー・サブジェクトは、すべてのWebサービス・ジョブ・タイプ(一方向、同期および非同期)に関連付けられていますが、一方Job-Callbackポリシー・サブジェクトは同期Webサービス・ジョブ・タイプにのみ使用できます。Job-InvokeおよびJob-Callbackのグローバルにアタッチされたポリシーはドメイン・レベルで指定でき、EMまたはWLSTを使用して構成できます。
Job-Invokeのグローバルにアタッチされたポリシーまたは直接アタッチされたポリシーがWebサービス・ジョブ定義に指定されていない場合、Webサービスは非同期で起動されます。匿名コールバックは非同期Webサービス・ジョブ・タイプにサポートされていないため、これは一方向および同期ジョブ・タイプにのみ機能します。
Job-InvokeおよびJob-Callbackの直接アタッチされたポリシーは個別のWebサービス・ジョブ定義に固有であり、Webサービス・ジョブ定義に関連付けられているポリシー・アセンブリ・ディスクリプタで取得されます。これらの直接アタッチされたポリシーは、JDeveloperを使用して設計時に指定するか、実行時にOracle Enterprise Manager Fusion Middleware ControlまたはWLSTコマンドを使用して指定できます。
Webサービス・ジョブ・ポリシー・サブジェクトに対するグローバルにアタッチされたポリシーは、Oracle Enterprise Manager Fusion Middleware ControlまたはWLSTスクリプトを使用して、Webサービス・ジョブ・ポリシー・サブジェクトに対するドメイン・レベルのグローバルにアタッチされたポリシーを構成できます。例13-1に、このようなスクリプトの例を示します。
例13-1 グローバルにアタッチされたポリシーを構成するWLSTスクリプト
connect(adminuser, adminpassword, adminurl) beginRepositorySession() deletePolicySet('domain-default-job-invoke-client-policies') describeRepositorySession() commitRepositorySession() beginRepositorySession() deletePolicySet('domain-default-job-callback-service-policies') describeRepositorySession() commitRepositorySession() print "-- create domain-default-job-invoke-client-policies --" beginRepositorySession() describeRepositorySession() createPolicySet('domain-default-job-invoke-client-policies', 'job-invoke', 'Domain("*")') attachPolicySetPolicy("oracle/wss11_saml_token_with_message_protection_client_policy") describeRepositorySession() commitRepositorySession() print "-- create domain-default-job-callback-service-policies --" beginRepositorySession() describeRepositorySession() createPolicySet('domain-default-job-callback-service-policies', 'job-callback', 'Domain("*")') attachPolicySetPolicy("oracle/wss11_saml_or_username_token_with_message_protection_service_policy") describeRepositorySession() commitRepositorySession()
Oracle JDeveloperとOracle Enterprise Manager Fusion Middleware Controlの両方に便利なグラフィカル・ユーザー・インタフェースが用意されていて、Webサービスのジョブ定義の作成に役立ちます。
「Oracle JDeveloperを使用したジョブ定義の作成」では、Oracle JDeveloperを使用してジョブ定義を作成する方法を説明し、「Oracle Enterprise Manager Fusion Middleware Controlを使用したジョブ定義の作成」では、Oracle Enterprise Manager Fusion Middleware Controlを使用して同様の作業を行う方法を説明します。
アプリケーションの作成時にOracle JDeveloperを使用してWebサービス・ジョブ定義を使用できます。Oracle JDeveloperを使用してOracle Enterprise Schedulerで動作するアプリケーションを作成する方法については、「Oracle JDeveloperを使用したOracle Enterprise Schedulerアプリケーションの生成」の一般情報を参照してください。
JDeveloperには、スクリーン・リーダー、スクリーン拡大鏡、キーボード移動用の標準のショートカット・キーなどのアクセシビリティ・オプションが用意されています。さらに読みやすくするため、フォントのサイズや色、オブジェクトの色や形など、JDeveloperをカスタマイズすることもできます。JDeveloperでのアクセシビリティについて、およびこれを構成する手順は、『Oracle JDeveloperによるアプリケーションの開発』のOracle JDeveloperのアクセシビリティ情報に関する項を参照してください。
次の手順は、非同期Webサービス・ジョブ・タイプのジョブ定義を作成する方法を示しています。