この章では次の項について説明します。
Oracle Web Services Manager Gatewayのポリシーを作成および編集する前に、目的のWebサービスをまず登録する必要があります。次に、ゲートウェイにWebサービスを登録する一般的な方法について説明します。
サービスを登録するには、Web Services Definition Language(WSDL) URLを指定するか、サービスをインポートします。WSDL URLの指定によるサービスの登録の詳細は、「Oracle Web Services Manager Gatewayへのサービスの追加」を参照してください。インポートによるサービスの登録の詳細は、「Webサービスの検出」を参照してください。
外部のURLを指定してWebサービスをインポートする場合、HTTPプロキシ設定を設定する必要があります。スタンドアロンのOracle WSMインストールの場合、OWSM_HOME/owsm/bin/coresv.propertiesファイルで設定します。Oracle SOA Suite(10.1.3.1.0)としても知られるOracle Application Server 10gリリース3(10.1.3.1.0)の一部としてOracle WSMをインストールした場合、ORACLE_HOME/opmn/conf/ompn.xmlファイルでプロキシ設定を設定します。詳細は、「WSILインポート時のエラー」を参照してください。
Secure Sockets Layer(SSL)が有効なサイトからWSDLをインポートする場合(つまり、WSDLがHTTPS URLを使用する場合)、Oracle Web Services Managerサーバーの起動時にSSLを有効にする必要があります。ORACLE_HOME/owsm/scripts/oc4j.xmlファイルのoc4j.startターゲットにSSLシステム属性を追加します。
仮想化Webサービスにアクセスするには、サービス識別子(ID)またはWebサービス名を使用します。したがって、次のいずれかのURLを使用して、サービスIDがSID0003006のWebサービスTimeServiceにアクセスできます。
http://jdoe.us.oracle.com:3115/gateway/services/SID0003006?wsdl
http://jdoe.us.oracle.com:3115/gateway/services/TimeService?wsdl
URLの命名規則が適用されます。
ゲートウェイにWebサービスを追加するには
Web Services Manager Controlから「ポリシー管理」を選択して、「サービスの登録」を選択します。
Web Services Manager Controlに、現在登録されているゲートウェイのリストが表示されます。
Webサービスを登録するゲートウェイの「サービス」をクリックします。
Web Services Manager Controlには、ゲートウェイに現在登録されているWebサービスのリストが表示されます。
「新規サービスの追加」をクリックします。
新規サービスの詳細を入力します。フィールドに関する情報を取得するには、「ヘルプ」をクリックします。
「次へ」をクリックします。
Web Services Manager Controlに、選択したWebサービス・トランスポート・プロトコル(送信トランスポート・プロトコルとも呼ばれる)を構成する「新規サービスのメッセンジャ・ステップを構成」ページが表示されます。詳細は、「Oracle WSMのトランスポート・プロトコル」を参照してください。
必要に応じてフィールドを構成します。
プロトコル・パラメータに関するヘルプを表示するには、疑問符(?)をクリックします。この情報については、「送信トランスポート・プロトコルの構成」で説明します。
「終了」をクリックします。
サービスの確認メッセージが表示されます。
「OK」をクリックします。
ゲートウェイにサービスを追加すると、現在登録されているゲートウェイの一覧ページに「ポリシーのコミット」が赤で表示され、新しい情報で「ポリシー・マネージャ」を更新するよう求められます。
変更したポリシーをそのゲートウェイで更新するには、「コミット」をクリックします。
ゲートウェイにサービスを追加した後に、サービスのポリシーを編集できます。詳細は、第5章「Oracle Web Services Managerのポリシー管理」を参照してください。
Webサービスを登録する場合、Oracle WSMはそのWebサービスにサービスIDを割り当てます。サービスIDをメッセージ・リクエストに含めることができるように、該当のWebサービスに対してリクエストを行うクライアントにこのサービスIDを提供します。サービスIDは次のいずれかの方法で指定できます。
Java Message Service(JMS)クライアントの場合、serviceId
という名前のJMSユーザー・ヘッダーを使用し、ネームスペースをhttp://schemas.confluentsw.com
に設定します。また、クライアントがレスポンス・メッセージを取得できるように、JMS ReplyToヘッダーにResponseQueue
名を設定する必要があります。
MQクライアントの場合、SOAPヘッダー内にローカル・タグserviceID
を指定し、ネームスペースをhttp://schemas.confluentsw.com
に設定します。また、クライアントがレスポンス・メッセージを取得できるように、MQ ReplyTo
ヘッダーにResponseQueue
名を設定する必要があります。
あるいは、サービスIDではなくWebサービス名を使用して、クライアント・リクエストでWebサービスを特定することもできます。たとえば、次のどちらのURLを使用しても、サービスIDがSID0003006のWebサービスTimeServiceを特定できます。
http://jdoe.us.oracle.com:3115/gateway/services/SID0003006?wsdl
http://jdoe.us.oracle.com:3115/gateway/services/TimeService?wsdl
図2-1に示すように、トランスポート・プロトコルは2箇所で使用されます。1つは、リクエストを行うクライアントとリクエストをリスニングするOracle WSM Gatewayの間です。ゲートウェイがクライアント・リクエストをリスニングするときのプロトコルを、受信トランスポート・プロトコルといいます。もう1つは、Oracle WSM GatewayとWebサービスの間です。これはWebサービスを起動するときのトランスポート・プロトコルです。別の方法で表現すると、ゲートウェイがWebサービスにリクエストを送信するときのトランスポート・プロトコルでもあります。これを送信トランスポート・プロトコルといいます。
受信トランスポート・プロトコルと送信トランスポート・プロトコルは、それぞれ独立しています。この2つのトランスポート・プロトコルは異なります。これらが存在する場合、ゲートウェイはクライアント・リクエストを取得して、リクエストを送信トランスポート・プロトコルに変換してから、Webサービスに渡します。たとえば、図2-1では、JMSで受信するリクエストはHTTPに変換されてからWebサービスに渡されます。ただし、HTTPで受信するリクエストは、送信トランスポート・プロトコルと一致するため変換は不要です。
受信トランスポート・プロトコルと送信トランスポート・プロトコルは別々に構成され、異なるプロパティ・ファイルを使用します。送信トランスポート・プロトコルは、Web Services Manager Controlで構成されます。これについては次の項で説明します。
Oracle WSM Gatewayを作成および登録すると、デフォルトではHTTPでリクエストを受け付けるように構成されます。これは変更できません。したがって、ゲートウェイは常にHTTPでリクエストを受け付けます。また、その他にサポートされる2つのトランスポート・プロトコル(JMSおよびMQ)でリクエストをリスニングするようにゲートウェイを構成できます。JMSおよびMQのプロトコルでクライアント・リクエストを受信する場合、JMSおよびMQのリクエストをリスニングするようにゲートウェイを具体的に構成する必要があります。
JMSまたはMQでリクエストをリスニングするようにOracle WSM Gatewayを構成するには、次のファイルを手動で構成します。
ORACLE_HOME/owsm/config/gateway/gateway-config-installer.properties
このファイルでJMSおよびMQのいずれか、または両方のプロトコルのプロパティを設定します。次に、設定が有効になるようにゲートウェイ・アプリケーションを再デプロイします。そのゲートウェイに登録されたすべてのサービスが、構成したプロトコルで受信するリクエストとHTTPで受信するリクエストで使用できます。受信トランスポート・プロトコルの構成方法の詳細は、『Oracle Web Services Managerデプロイメント・ガイド』を参照してください。
送信トランスポート・プロトコル(Webサービスを起動するときのトランスポート・プロトコル)は、ゲートウェイにサービスを登録するときに構成します。HTTP、HTTPS、JMS、MQまたはカスタム・プロトコルのいずれかを指定します。
カスタム・プロトコルを指定する場合は、まず、該当のWebサービスと通信するためのプロトコルを実装するカスタム・ポリシー・ステップを作成する必要があります。次に、サービスを登録するときに、「カスタム・プロトコルのステップ・テンプレートID」プロパティでこのポリシー・ステップを指定します。カスタム・ポリシー・ステップの作成の詳細は、『Oracle Web Services Manager拡張ガイド』を参照してください。
1つのゲートウェイに複数の受信トランスポート・プロトコルを構成する場合、登録されているすべてのWebサービスがすべてのプロトコルに公開されます。この場合、特定のプロトコルのみでリクエストを受け付けるようにWebサービスを構成することはできません。ゲートウェイは常にHTTPでリクエストを受け付けるため、WebサービスはHTTPでリクエストに公開されます。図2-1に示す例では、ゲートウェイはJMSとMQでもクライアント・リクエストをリスニングするように構成されています。したがって、図2-1の場合、WebサービスはHTTP、JMSおよびMQのいずれのプロトコルで送られたリクエストもすべて受け付けることになります。
送信トランスポート・プロトコルの構成の詳細は、「Oracle Web Services Manager GatewayへのWebサービスの登録」を参照してください。
ゲートウェイにWebサービスを登録する際、そのWebサービスの起動に使用するプロトコル(送信トランスポート・プロトコル)としてHTTP(S)を指定する場合は、次に示すプロトコルのプロパティ(表2-1)を設定します。(これらのプロパティを指定する手順の詳細は、「ゲートウェイにWebサービスを追加するには」を参照してください。)
表2-1 HTTP(S)のプロパティ
プロパティ | 説明 |
---|---|
有効 |
trueに設定されている場合、このステップは有効です。 |
URL |
WebサービスのエンドポイントURL。 |
ReplyTimeout |
ゲートウェイがタイムアウトするまでにWebサービスに接続を試行する時間(ミリ秒)。 |
IsSoapService |
trueに設定されている場合、WebサービスがSOAPメッセージをサポートすることを示します。falseに設定されている場合、WebサービスはXMLメッセージのみを受け付けます。 |
ForwardCredentials |
trueに設定されている場合、HTTPの基本資格証明が転送されることを示します。 |
フェイルオーバーURL |
URLプロパティで指定したプライマリURLが、試行プロパティで指定した試行回数内で成功しなかった場合、ゲートウェイはカンマで区切られたこのリストのURLに接続を試みます。 |
試行 |
ゲートウェイが1つのURLでサービスを起動する試行回数。 |
RetryInterval |
再試行から次の再試行までの時間(秒)。 |
KeepAlive |
trueに設定されている場合、HTTP接続が再利用されることを示します。 |
JMSリクエスト・ハンドラは、JMSサービスの登録時にそのサービスに割り当てられるサービスIDに基づいて、指定したWebサービスにリクエストを転送します。JMSサービスIDは、JMSメッセージ・ヘッダーに指定する文字列です。Oracle WSM Gatewayは、サービスの登録時に指定したJMSプロパティを読み取り、指定したサーバーにメッセージを転送します。表2-2に、登録時に指定するJMSメッセンジャのプロパティを示します。
ゲートウェイにWebサービスを登録する際、そのWebサービスの起動に使用するプロトコル(送信トランスポート・プロトコル)としてJMSメッセンジャを指定する場合は、サービス起動が目的のJMSサーバーにルーティングされるよう、次に示すプロトコルのプロパティ(表2-1)を設定します。(これらのプロパティを指定する手順の詳細は、「ゲートウェイにWebサービスを追加するには」を参照してください。)
表2-2 JMSメッセンジャのプロパティ
プロパティ | 説明 |
---|---|
有効 |
trueに設定されている場合、このステップは有効です。 |
OneWay |
trueに設定されている場合、ゲートウェイはJMSに同期リクエストを送信した後、接続を終了します。レスポンスがある場合でも、無視します。 |
ReplyTimeout |
ゲートウェイがタイムアウトするまでにWebサービスに接続を試行する時間(ミリ秒)。 |
IsSoapService |
trueに設定されている場合、WebサービスがSOAPメッセージをサポートすることを示します。falseに設定されている場合、WebサービスはXMLメッセージのみを受け付けます。 |
JmsQueueName |
Webサービスがリスニングするキューの名前。 |
JmsReplyToQueueName |
Webサービスがレスポンスを送信するキューの名前。値がDynamicに指定されている場合、レスポンスは一時キューに送信されます。 |
JmsIsPersistent |
trueに設定されている場合、メッセージはJMSサーバーが再起動する間持続します。 |
JmsCorrEnabled |
trueに設定されている場合、リクエストとレスポンスは互いに関連付けられます。 |
UseJndi |
trueに設定されている場合、Java Naming and Directory Interface(JNDI)参照が実行されます。 |
JmsUrl |
JMSサーバーへの接続に使用するURL。 |
JmsConnectionFactory |
JMSサーバー接続を開くための |
JmsUsername |
JMSサーバーへの接続に使用するユーザー名。 |
JmsPassword |
JMSサーバーへの接続に使用するパスワード。 |
OwsmServiceID |
内部使用に限定されます。この値を編集しないでください。 |
JndiProviderUrl |
JNDIコンテキストを取得するJNDIプロバイダURL。 |
JndiProviderFactory |
JNDIコンテキストの取得に使用するJNDIプロバイダ・ファクトリ・クラス。Javaクラスのフルパスを指定する必要があります。たとえば、 |
JndiUrlPackagePrefix |
JNDIコンテキストの初期化に使用する接頭辞。 |
JndiUsername |
JNDI参照の実行に使用するユーザー名。 |
JndiPassword |
JNDI参照の実行に使用するパスワード。 |
SslEnabled |
trueに設定されている場合、JMSサーバーへの接続にSSLが使用されます。 |
SslVendor |
SSL証明書のベンダー。有効な値は、j2se(Java 2 Platform, Standard Edition)およびentrust6(Entrust for TIBCO JMS)です。 |
SslHostname |
JMSサーバーのSSL証明書のホスト名。 |
SslClientIdentity |
クライアント証明書のフルパス。 |
SslPassword |
識別ファイルを復号化するパスワード。 |
SslTrustCerts |
JMSサーバーの信頼証明書、またはその証明書ファイルのパス。 |
ゲートウェイにWebサービスを登録する際、そのWebサービスの起動に使用するプロトコル(送信トランスポート・プロトコル)としてMQシリーズを指定する場合は、サービス起動が適切なMQサーバーにルーティングされるよう、次に示すプロトコルのプロパティ(表2-1)を設定します。(これらのプロパティを指定する手順の詳細は、「ゲートウェイにWebサービスを追加するには」を参照してください。)
表2-3 MQシリーズのプロパティ
プロパティ | 説明 |
---|---|
有効 |
trueに設定されている場合、このステップは有効です。 |
MqServerHost |
MQサーバーのホスト名。 |
MqServerPort |
MQサーバーがWebサービス・リクエストをリスニングするポート。 |
MqUserId |
MQサーバーにログインするためのユーザーID。 |
MqPassword |
MQサーバーにログインするためのパスワード。 |
ChannelName |
ターゲットのキュー・マネージャでの接続先チャネルの名前。 |
QueueManager |
キューを定義するキュー・マネージャの名前。 |
ReplyTimeout |
ゲートウェイがタイムアウトするまでにWebサービスに接続を試行する時間(ミリ秒)。 |
IsSoapService |
trueに設定されている場合、WebサービスがSOAPメッセージをサポートすることを示します。falseに設定されている場合、WebサービスはXMLメッセージのみを受け付けます。 |
MqReplyToQueueName |
Webサービスがレスポンスを送信するキューの名前。 |
MqQueueName |
Webサービスがリクエストをリスニングするキューの名前。 |
MqCorrEnabled |
trueに設定されている場合、リクエストとレスポンスは互いに関連付けられます。 |
MqCharacterSet |
MQサーバーに送信されるメッセージのエンコードに使用するキャラクタ・セット。 |
Webサービスのトランスポート・プロトコルを変更する場合、最初にそのサービスを非アクティブ化してから、新しいプロトコルでサービスを登録する必要があります。詳細は、「Webサービスの非アクティブ化」を参照してください。
Oracle WSM環境のすべての通信ポイント間でパスワードの送信を保護するには、HTTPSを使用することをお薦めします。Webサービスに対するHTTPSの構成方法の詳細は、「HTTPおよびHTTPS」を参照してください。
Oracle WSMは、TIBCOの場合のみ、JMSサーバーのフェイルオーバーをサポートします。次の2つのフェイルオーバー・メカニズムがあります。
ハートビート・フェイルオーバー: プライマリJMSサーバーが、バックアップ・サーバーにハートビート・メッセージを送信して、バックアップ・サーバーが機能するかどうかを確認します。ネットワーク障害によって、これらのサーバー間の通信が妨げられる場合、バックアップ・サーバーは、ハートビート・メッセージ・ストリーム内の割込みを検出して、プライマリ・サーバーの役割を引き継ぎます。バックアップ・サーバーは、プライマリ・サーバーと同じドメイン名システム(DNS)およびインターネット・プロトコル(IP)アドレスを使用します。どちらのサーバーも同じURLを共有するため、JMSクライアントではバックアップ・サーバーの存在を認識しません。このタイプのフェイルオーバーには、ハードウェア・サポート(ネットワーク・カード)が必要です。ハートビート・フェイルオーバーを利用するためにゲートウェイに変更を加える必要はありません。サービスのトランスポート・プロトコルを構成する際には、JmsUrl
プロパティに1つのURLを指定します。
コネクション・フェイルオーバー: JMSクライアントがプライマリ・サーバーへの接続に失敗した場合、1つ以上のバックアップ・サーバーへの接続を試みます。Webサービスをゲートウェイに登録して、JMSプロトコルを構成する場合、JMSサーバーに複数のURLを指定します。JmsUrl
プロパティに、カンマで区切られたURLのリストを指定します。ゲートウェイは、リストに示された順序でURLへの接続を試みます。最初のURLへの接続に失敗すると、ゲートウェイはリストに示された次のURLを使用して接続を試行し、接続するまで、またはすべてのURLを試行するまで続行します。すべてのURLを試行しても接続が確立されない場合、接続は失敗します。詳細は、「Oracle Web Services Manager Gatewayへのサービスの追加」および「JMSメッセンジャ」を参照してください。