第9章 サービス設定の定義
9.1. 概要

図9.1 JBoss Enterprise Service Bus 設定モデル
- <providers>: モデルのこの部分は主としてモデルの <services> セクション内で定義されるメッセージの <listener> により使用されるすべてのメッセージ <bus> プロバイダーを定義します。
- <services>:モデルのこの部分は主に JBoss ESB の単一インスタンスの制御下にある全サービスを定義します。各 <service> インスタンスには "Gateway" または "Message Aware" のいずれかのリスナー定義が含まれます。
9.2. Providers

図9.2 プロバイダー構成モデル
<providers> 部分では、ESB の単一インスタンスに対するすべてのメッセージ <provider> インスタンスを定義します。現在サポートされている 2 つの種類のプロバイダーを以下に示します。
- これらは、「プッシュ」されたメッセージであるリスナーなどに対する「イベント駆動」プロバイダーのプロバイダー詳細を指定します。このプロバイダーの種類の例は
<jms-provider>です。 - Schedule Provider: メッセージを「プル」するリスナーなどのスケジュール駆動リスナーのプロバイダー設定
<jms-provider>など) には複数の <bus> 定義を含めることができます。<provider> は、その <property> で定義される全 <bus> で共通となるプロバイダー固有プロパティに関連する <property> インスタンスで修飾することもできます (JMS なら "connection-factory"、"jndi-context-factory" など)。同様に、各 <bus> インスタンスはその <bus> インスタンスに固有となる <property> インスタンスで修飾することができます (JMS なら "destination-type"、"destination-name" など)。
<providers>
<jms-provider name="JBossMQ" connection-factory="ConnectionFactory">
<jms-bus busid="Reconciliation">
<jms-message-filter
dest-type="QUEUE"
dest-name="queue/B"
/>
</jms-bus>
</jms-provider>
</providers>
<provider> と <bus> タイプを使用しています。これに問題はありませんが、実際の設定を作成するにはこれらのタイプの特殊化された拡張を使用することをお薦めします。JMS なら <jms-provider> と <jms-bus> です。 上記の設定でもっとも重要となる部分は <bus> インスタンスで定義される busid 属性です。 これは <bus> エレメント/タイプで必要とされる属性です (<jms-bus> などそのすべての特殊化を含む)。この属性は <listener> 構成内で使用され、リスナーがそのメッセージを受け取る <bus> インスタンスを参照します。これについては後ほど詳しく説明します。
9.3. サービス

図9.3 サービス構成モデル
<services> の部分は ESB のこのインスタンスの管理下にある各サービスを定義します。<service> 一連の構成として定義します。<service> は次の属性で修飾することもできます。
表9.1 サービス属性
| 名前 | 説明 | タイプ | 必須 |
|---|---|---|---|
| name | サービスレジストリ内で登録されるサービスのサービス名 | xsd:string | true |
| カテゴリ | サービスレジストリ内で登録されるサービスのサービスカテゴリ | xsd:string | true |
| 詳細 | 読みやすい形式のサービス詳細、 リジストリ内に格納される | xsd:string | true |
<service> は <listeners> のセットと <actions> のセットを定義することができます。構成モデルは「基本の」 <listener>タイプの他、 サポートされるメインのトランスポートそれぞれの特殊化も定義します。<jms-listener>、<sql-listener> など。
<listener> は次の属性を定義します。これらの属性定義はすべての <listener> 拡張によって継承されます。このように、InVM トランスポートなど JBossESB でサポートするリスナーやゲートウェイすべてに対し設定することができます。
表9.2 リスナーの属性
| 名前 | 説明 | タイプ | 必須 |
|---|---|---|---|
| name | リスナーの名前、 この属性は主にログの目的で必要となる | xsd:string | true |
| busrefid | リスナーインスタンスが受け取るメッセージの元となる <bus> の busid への参照 | xsd:string | true |
| maxThreads | リスナーがアクティブとして持てる同時メッセージ処理スレッドの最大数 | xsd:int | True |
| is-gateway | リスナーインスタンスが「ゲートウェイ」であるかないかは関係ありません。[a] | xsd:boolean | true |
[a]
メッセージバスは特定のメッセージチャンネル/トランスポートの詳細を定義します。
| |||
<property> エレメントのセットを定義できます (ちょうど <provider> と <bus> のエレメント/タイプのようなもの)。これらはリスナー固有のプロパティの定義に使用されます。
注記
<?xml version = "1.0" encoding = "UTF-8"?>
<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
parameterReloadSecs="5">
<providers>
<jms-provider name="JBossMQ" connection-factory="ConnectionFactory">
<jms-bus busid="Reconciliation">
<jms-message-filter
dest-type="QUEUE"
dest-name="queue/B"
/>
</jms-bus>
<!-- busid --> <jms-bus busid="ReconciliationEsb">
<jms-message-filter
dest-type="QUEUE"
dest-name="queue/C"
</jms-bus>
</jms-provider>
</providers>
<services>
<service category="Bank" name="Reconciliation"
description="Bank Reconciliation Service">
<listeners>
<!-- busidref --> <jms-listener name="Bank-Listener"
busidref="Reconciliation"
is-gateway="true"/>
<jms-listener name="Bank-Esb"
busidref="ReconciliationEsb"/>
</listeners>
<actions>
....
</actions>
</service>
</services>
</jbossesb>
<actions> の一覧がないと、サービスはほとんど何もしません。<actions> には一般的にサービスによって受け取られるメッセージのペイロードを処理するロジックが含まれています (そのリスナーを通じて)。 代わりに、外部のサービス/エンティティによって消費されるメッセージに対して変換またはルーティングのロジックを含めることもできます。
<action> エレメント/タイプは次の属性を定義します。
表9.3 アクションの属性
| 名前 | 説明 | タイプ | 必須 |
|---|---|---|---|
| name | アクションの名前、 この属性は主にログの目的で必要となる | xsd:string | true |
| クラス | org.jboss.soa.esb.actions.ActionProcessor 実装クラス名 | xsd:string | true |
| プロセス | メッセージ処理に反射的に呼び出される「process」メソッドの名前 (デフォルトは ActionProcessor クラスで定義されるように「process」メソッドとなる) | xsd:int | false |
<actions> セット内の <action> インスタンスの一覧では、アクションは <action> インスタンスが <actions> セットに表れる順序で呼び出されます (その「process」メソッドが呼び出される)。各 <action> から返されるメッセージは一覧内の次の <action> への入力メッセージとして使用されます。
<action> タイプもゼロまたは複数の <property> エレメントインスタンスを含むことができます。<property> エレメント/タイプは標準の名前と値の組み合わせを定義するか、自由形式のコンテンツを含むことができます (xsd:any)。XSD によれば、この自由形式のコンテンツは構成内の場所 (<provider>、<bus>、<listener> のいずれかまたはその派生物のいずれか) に関係なく<property> エレメント/タイプの有効な子コンテンツになります。ただし、 この自由形式の子コンテンツが使用される<action>定義の<property> インスタンス上でのみになります。
<action> 定義に記載されているように、アクションは org.jboss.soa.esb.actions.ActionProcessor class クラスを実装することで実装されます。このインターフェースの実装はすべて次の形式のパブリックコンストラクターを含まなければなりません。
public ActionZ(org.jboss.soa.esb.helpers.ConfigTree configuration);
<actions> 構成の例としては次のようになる場合があります。
<actions>
<action name="MyAction-1" class="com.acme.MyAction1"/>
<action name="MyAction-2" class="com.acme.MyAction2">
<property name="propA" value="propAVal" />
</action>
<action name="MyAction-3" class="com.acme.MyAction3">
<property name="propB" value="propBVal" />
<property name="propC">
<!-- Free form child content... -->
<some-free-form-element>zzz<some-free-form-element>
</property>
</action>
</actions>
9.4. 固有タイプの実装
<provider>、<bus>、<listener> のトランスポート固有特殊化を定義します (JMS, SQL など)。これにより構成を厳密に検証できるようになり、XSD 対応の XML エディター (Eclipse XML Editor など) を使用するユーザーにとって構成が容易になります。これら特殊化は特に何の設定を行わなくても JBoss ESB でサポートされる各トランスポートの構成要件を明示的に定義します。JBoss ESB の構成を行っている場合は「基本」タイプの代わりにこの特殊化されたタイプを使用することを推奨します。あるいは、公式の JBoss ESB リリース以外で新しいトランスポートがサポートされる場合のみです。
<jms-provider>などのプロバイダー設定を定義します。- 新しいプロバイダーにバスの構成を追加し (
<jms-bus>)、 固有の busid 属性値を割り当てます。 - 通常通りに
<services>を定義して、作成したばかりの新しいバス構成を参照する (busrefid を使用) トランスポート固有のリスナー構成 (<jms-listener>など) を追加します (例:<jms-bus>を参照する<jms-listener>)。
<jms-bus> から <jms-listener> しか参照できないということです。相互参照されるとランタイムエラーが発生します。
- JMS
<jms-provider>、<jms-bus>、<jms-listener>、<jms-message-filter><jms-message-filter> は <jms-bus> または <jms-listener> エレメントのいずれかに追加できます。<jms-provider> と <jms-bus> は JMS 接続プロパティを指定し、<jms-message-filter> は実際のメッセージのキュー/トピックとセレクターの詳細を指定します。- SQL
<sql-provider>、<sql-bus>、<sql-listener>、<sql-message-filter><sql-message-filter> は <sql-bus> または <sql-listener> エレメントのいずれかに追加できます。<sql-provider> と <sql-bus> は JDBC 接続プロパティを指定し、<sql-message-filter> はメッセージ/行の選択と処理プロパティを指定します。- FTP
<ftp-provider>、<ftp-bus>、<ftp-listener>、<ftp-message-filter><ftp-message-filter> は <ftp-bus> または <ftp-listener> のいずれかに追加できます。<ftp-provider> や <ftp-bus> は FTP アクセスプロパティを指定し、 <ftp-message-filter> はメッセージ/ファイルの選択と処理プロパティを指定します。- ハイバネート
<hibernate-provider>、<hibernate-bus>、<hibernate-listener><hibernate-message-filter> は <hibernate-bus> または <hibernate-listener> エレメントのいずれかに追加できます。<hibernate-provider> はハイバネート設定プロパティの場所などファイルシステムアクセスのプロパティを指定し、<hibernate-message-filter> はリッスンするクラス名とイベントを指定します。- ファイルシステム
<fs-provider>、<fs-bus>、<fs-listener>、<fs-message-filter><fs-message-filter> は <fs-bus> または <fs-listener> エレメントのいずれかに追加できます。<fs-provider> と <fs-bus> はファイルシステムアクセスプロパティを指定し、<fs-message-filter> はメッセージ/ファイルの選択と処理プロパティを指定します。- スケジュール
<schedule-provider>これは特殊タイプのプロバイダーで、上記のバスベースのプロバイダーとは異なります。詳細はスケジューリングをご覧ください。- JMS/JCA 統合
<jms-jca-provider>このプロバイダーは JCA インフローを使って着信メッセージの配信を有効にするため <jms-provider> の代わりに使用できます。これによりトランザクション処理されたフローをアクションパイプラインに導入し、アクションを JTA トランザクション内に包み込みます。
注記
表9.4 JMS メッセージフィルタ設定
| プロパティ名 | 説明 | 必須 |
|---|---|---|
| dest-type | 宛先のタイプ (QUEUE または TOPIC) | Yes |
| dest-name | Queue または Topic の名前 | Yes |
| selector | 複数のリスナーを同じキュー/トピックで登録できるようにします。ただし、リスナーはこのメッセージセレクターに基づいてフィルタリングされます。 | No |
| persistent | JMS の配信モードを永続的にするかどうかを指定します。値は真または偽です。デフォルト値は真です。 | No |
| acknowledge-mode | JMS セッション確認モード。AUTO_ACKNOWLEDGE、CLIENT_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE のいずれかの値になります。デフォルト値は AUTO_ACKNOWLEDGE です。 | No |
| jms-security-principal | JMS 宛先ユーザー名。宛先への接続を作成するときに使用されます。 | No |
| jms-security-credential | JMS 宛先パスワード。宛先への接続を作成するときに使用されます。 | No |
<jms-bus busid="quickstartGwChannel">
<jms-message-filter
dest-type="QUEUE"
dest-name="queue/quickstart_jms_secured_Request_gw"
jms-security-principal="esbuser"
jms-security-credential="esbpassword"/>
</jms-bus>表9.5 JMS リスナーの構成
| プロパティ名 | 説明 | 必須 |
|---|---|---|
| name | リスナーの名前 | Yes |
| busrefid | リッスンする JMS の ID | No |
| is-gateway | この JMS リスナーインスタンスはゲートウェイですか?それともメッセージ対応のリスナーですか? | No。デフォルトは false です。 |
| maxThreads | JMS バス上でメッセージをリッスンする際に使用するスレッドの最大数。is-gateway が false の場合のみ該当 | No。デフォルトは 1 です。 |
| clientId | JMS 接続と関連付けられたクライアント ID。接続とオブジェクトを、プロバイダーによりクライアントの代わりに保たれたステータスを関連付ける際に使用。例:永続的なサブスクリプション | No。clientId が必須にも拘らず (例:durableSubscriptionName が指定されている場合)、指定されていない場合、デフォルトのリスナー名を使用します。 |
| durableSubscriptionName | 永続的なサブスクリプション名 | No。JMS Topics の場合のみ該当 |
9.5. ファイルシステムプロバイダー設定
表9.6 ファイルシステムメッセージフィルター設定
| プロパティ | 説明 | 必須 |
|---|---|---|
| directory | 受信ファイルに関してモニタリングが行われる FTP ディレクトリ | Yes |
| input-suffix | 受信ファイルのフィルタリングに使用するサフィックス。".esbIn" のように 1 文字以上かつ "." が含まれている必要があります。 | Yes |
| work-suffix | ファイルが ESB に処理される場合に使用するサフィックス。デフォルトは ".esbInProcess"。 | No |
| post-suffix | ファイルが ESB により正常に処理された場合に使用するサフィックス。デフォルトは ".esbDone"。 | No |
| post-delete | true の場合、 ファイルは処理後に削除される。 この場合、 post-directory および post-suffix は無効になる。デフォルト値は真。 | No |
| post-directory | ESB による処理後にファイルの移動先となる FTP ディレクトリ。デフォルト値は上記のディレクトリです。 | Yes |
| post-rename | true の場合、ファイルは処理後に名前が変更されます。post-directory および post-suffix は相互排他的である点に注意してください。 | No |
| error-delete | True の場合、処理中にエラーが発生するとこのファイルは削除されます。この場合、error-directory および error-suffix からの影響はありません。デフォルト値は true。 | No |
| error-directory | 処理中にエラーが発生した場合にファイルの移動先となる FTP ディレクトリ。デフォルト値は上記のディレクトリ。 | Yes |
| error-suffix | 処理中にエラーが発生した場合にファイル名に追加されるサフィックス。デフォルト値は .esbError。 | No |
9.6. FTP プロバイダー構成
表9.7 FTP プロバイダー構成
| プロパティ | 説明 | 必須 |
|---|---|---|
| hostname | 単純にポート 21 を使用する <host> の <host:port> の組み合わせで問題ありません。 | Yes |
| username | FTP 接続に使用されるユーザー名 | Yes |
| password | 上記ユーザーのパスワード | Yes |
| directory | 新しい受信ファイルについてモニタリングされる FTP ディレクトリ | Yes |
| input-suffix | ESB による消費を目的とするファイルのフィルタに使用されるファイルサフィックス (注: 「.esbIn」のようにドットを付ける)。 すべてのファイルが検索されるよう空白文字列にすることも可能。 | Yes |
| work-suffix | 別のスレッドやプロセスがファイルを取得しないようファイル処理中に使用されるファイルサフィックス。デフォルト値は .esbInProcess です。 | No |
| post-delete | true の場合、 ファイルは処理後に削除される。 この場合、 post-directory および post-suffix は無効になる。デフォルト値は真。 | No |
| post-directory | ESB による処理後にファイルの移動先となる FTP ディレクトリ。デフォルト値は上記のディレクトリです。 | No |
| post-suffix | 処理後にファイル名に追加されるファイルサフィックス。デフォルト値は .esbDone。 | No |
| error-delete | True の場合、処理中にエラーが発生するとこのファイルは削除されます。この場合、error-directory および error-suffix からの影響はありません。デフォルト値は true。 | No |
| error-directory | 処理中にエラーが発生した場合にファイルの移動先となる FTP ディレクトリ。デフォルト値は上記のディレクトリ。 | No |
| error-suffix | 処理中にエラーが発生した場合にファイル名に追加されるサフィックス。デフォルト値は .esbError。 | No |
| protocol | 次のいずれかのプロトコル
| No |
| passive | FTP接続がパッシブ状態であることを示します。この値を新に設定すると、FTP クライアントが FTP サーバーに対して 2 つの接続を確立します。デフォルト値は false で、クライアントは FTP サーバーが接続するポートを FTP サーバーに指示します。次に FTP サーバーはクライアントに対する接続を確立します。 | No |
| read-only | true の場合、 FTP サーバーはファイルに対する書き込み操作を許可しません。この場合、 次のプロパティは無効となるので注意: work-suffix、post-delete、post-directory、post-suffix、error-delete、error-directory、および error-suffix。デフォルトは false。詳細については、「読み取り専用 FTP リスナー」のセクションを参照してください。 | No |
| certificate-url | FTPS サーバー検証のためのパブリックサーバー証明書の URL または SFTP クライアント検証のためのプライベート証明書の URL。SFTP 証明書は、デプロイメント成果物内に組み込まれたリソースとして存在します。 | No |
| certificate-name | FTPS サーバー検証のための証明書の一般名 | No |
| certificate-passphrase | SFTP クライアント検証用プライベートキーのパスフレーズ | No |
9.7. FTP リスナーの構成
9.7.1. 読み取り専用 FTP リスナー
注記
表9.8 読み取り専用 FTP リスナーの構成
| 名前 | 説明 |
|---|---|
| scheduleidref | FTP リスナーによって使用されるスケジュール。「サービススケジューリング」を参照。 |
| remoteFilesystemStrategy-class | 実装するクラスでリモートファイルシステムの方法を上書きする: org.jboss.soa.esb.listeners.gateway.remotestrategies.RemoteFileSystemStrategy。デフォルト値は org.jboss.soa.esb.listeners.gateway.remotestrategies.ReadOnlyRemoteFileSystemStrategy。 |
| remoteFilesystemStrategy-configFile | ローカルファイルシステムまたはクラスパスに存在する JBoss TreeCache 設定ファイルを指定します。デフォルトではクラスパスのルートに存在する /ftpfile-cache-config.xml という名前のファイルを検索します。 |
| removeFilesystemStrategy-cacheListener | JBoss TreeCacheListener 実装が TreeCache で使用されることを指定する。デフォルト値は TreeCacheListener。 |
| maxNodes | キャッシュに格納されるファイルの最大数。0 は制限無しを意味する。 |
| timeToLiveSeconds | ノードが一掃されるまでのアイドル時間 (秒単位)。0 は制限無しを意味する。 |
| maxAgeSeconds | ノードが一掃されるまでにアイドル時間に関係なくオブジェクトが TreeCache 内に存在する時間 (秒単位)。0 は制限無しを意味する。 |
<ftp-listener name="FtpGateway"
busidref="helloFTPChannel"
maxThreads="1"
is-gateway="true"
schedule-frequency="5">
<property name="remoteFileSystemStrategy-configFile" value="./ftpfile-cache-config.xml"/>
<property name="remoteFileSystemStrategy-cacheListener" value=
"org.jboss.soa.esb.listeners.gateway.remotestrategies.cache.DeleteOnEvictTreeCacheListener"/>
</ftp-listener>
<region name="/ftp/cache"> <attribute name="maxNodes">5000</attribute> <attribute name="timeToLiveSeconds">1000</attribute> <attribute name="maxAgeSeconds">86400</attribute> </region>
表9.9 構成
| プロパティ | 説明 | コメント |
|---|---|---|
| maxNodes | キャッシュに格納されるファイルの最大数。 | 0 は制限無しを意味します。 |
| timeToLiveSeconds | ノードが一掃されるまでのアイドル時間 (秒単位)。 | 0 は制限無しを意味します。 |
| maxAgeSeconds | ノードが一掃されるまでにアイドル時間に関係なくオブジェクトが TreeCache 内に存在する時間 (秒単位)。 | 0 は制限無しを意味します。 |
9.8. UDP ゲートウェイ
UDP Gateway は、UDP プロトコル経由で送信される ESB 未対応のメッセージを受信するための実装です。ペイロードは、デフォルトの ESB メッセージオブジェクトの場所にあるアクションチェーンへ渡されます。アクションは esbMessage.getBody().get() を呼び出し、バイト配列ペイロードをリトリーブします。
表9.10 UDP ゲートウェイ設定
| プロパティ | 説明 | コメント |
|---|---|---|
| ホスト | リッスンするホスト名/ip | 必須 |
| ポート | リッスンするポート | 必須 |
| handlerClass | org.jboss.soa.esb.listeners.gateway.mina.MessageHandler の具体的な実装 | 任意。デフォルトは org.jboss.soa.esb.listeners.gateway.mina.DefaultMessageHandler です。 |
| is-gateway | UDPGatewayListener は、ゲートウェイとしてのみ機能できます。 | 必須 |
<udp-listener name="udp-listener" host="localhost" port="9999" handlerClass="org.jboss.soa.esb.listeners.gateway.mina.DefaultMessageHandler" is-gateway="true" <udp-listener/>
9.9. JBoss リモーティング (JBR) 設定
<jbr-provider name="socket_provider" protocol="socket" host="localhost">
<jbr-bus busid="socket_bus" port="64111"/>
</jbr-provider>
<listeners>
<jbr-listener name="soc" busidref="socket_bus" is-gateway="true"/>
</listeners>
表9.11 構成
| 名前 | 説明 | デフォルト値 |
|---|---|---|
| synchronous | 対象サービスを同期的に呼び出します。 | True |
| serviceInvokerTimeout | 非同期呼び出しのタイムアウト | 20000 |
| asyncResponse | 非同期のレスポンス | "<ack/> |
| securityNS | これは、使用すべき Web Service Security バージョンの名前空間です。この名前空間を使用して、SOAP メッセージのセキュリティヘッダーをマッチします。これは、Enterprise Service Bus がこれらのヘッダーからセキュリティ情報を抽出するためのものです。 | http://docs.oasis-open.org/wss/2004/01/oasis-200401http-wss-wssecurity-secext-1.0.xsd |
<jbr-provider name="https_provider" protocol="https" host="localhost">
<!-- Https/SSL settings -->
<property name="jbr-KeyStoreURL" value="/keys/myKeystore" />
<property name="jbr-KeyStorePassword" value="keys_ssl_pass" />
<property name="jbr-TrustStoreURL" value="/keys/myKeystore" />
<property name="jbr-TrustStorePassword" value="keys_ssl_pass" />
<property name="jbr-ClientAuthMode" value="need" />
<property name="serviceInvokerTimeout" value="20000" />
<jbr-bus busid="https_bus" port="9433"/>
</jbr-provider>
org.jboss.soa.esb.message.ResponseHeader クラスのインスタンスとして、Message.Properties 内にある必要があります。そのため、JBR Gateway をレスポンスヘッダーに設定する必要がある場合、Gateway レスポンスへ提供された Enterprise Service Bus Message (例:対象サービスの同期呼び出しの後) には、Message.Properties 上に設定された ResponseHeader クラスのインスタンスを含める必要があります。
9.10. HTTP ゲートウェイ
9.10.1. 基本設定
<service category="Vehicles" name="Cars" description="" invmScope="GLOBAL">
<listeners>
<http-gateway name="Http" />
</listeners>
<actions mep="RequestResponse">
<!-- Service Actions.... -->
</actions>
</service>
default HTTP バスプロバイダーを使用します。これは、busrefid 属性を定義しないためです。サービス名を使用して、HTTP エンドポイントアドレスを以下の方法で構築します。
9.10.2. URL パターン
<service category="Vehicles" name="Cars" description="" invmScope="GLOBAL"> <listeners> <http-gateway name="Http" urlPattern="esb-cars/*" /> </listeners> <actions mep="RequestResponse"> <!-- Service Aactions.... --> </actions> </service>
9.10.3. ポート制限
<http-gateway name="Http" urlPattern="esb-cars/*">
<property name="allowedPorts" value="8080,8081">
</http-gateway>
- http://<host>:8080/*
- http://<host>:8081/*
9.10.4. 処理リクエスト
- text/*
- application/xml
- application/*-xml
9.10.5. リクエスト情報
POST の場合、リクエストペイロードのみ)
HttpRequest requestInfo = HttpRequest.getRequest(message);
表9.12 プロパティ
| プロパティ | 説明 |
|---|---|
| queryParams | クエリパラメーターを含む java.util.Map<String, String[]>。複数の値を持つパラメーターをサポートするため、値は String[] となります。 |
| ヘッダー | リクエストヘッダーを含む java.util.List<HttpHeader> |
| authType | エンドポイントを保護するのに使用する認証スキーマの名前。または認証がない場合は null。CGI 変数の AUTH_TYPE の値と同じ。 |
| characterEncoding | このリクエストのボディで使用する文字エンコーディングの名前、またはリクエストが文字エンコーディングを指定しない場合 null。 |
| contentType | リクエストのボディのコンテンツタイプ (MIME タイプ)、またはタイプが不明な場合は null。CGI 変数の CONTENT_TYPE の値と同じ。 |
| contextPath | リクエストのコンテキストを示すリクエスト URI の一部。リクエスト URI では、コンテキストパスは常に最初にきます。このパスは "/" で始まりますが、 "/" 文字で終わりません。デフォルト (root) コンテキストのエンドポイントでは、"" を返します。コンテナーは、この文字列をデコーディングしません (Servlet 仕様を参照)。 |
| pathInfo | このリクエストが出された時にクライアントが送信する URL に関連付けられた追加のパス情報。この追加のパス情報は、"/" 文字から始まり、エンドポイントパスの後、かつクエリ文字列の前に来ます。追加のパス情報がなかった場合、このメソッドは null を返します。CGI 変数の PATH_INFO の値と同じです (Servlet 仕様を参照)。 |
| pathInfoToken | pathInfo のトークンを含む List<String> |
| queryString | クエリ文字列 |
| requestURI | プロトコル名からクエリ文字列までのこのリクエスト URL の一部。Web コンテナーはこの文字列をデコーディングしません。 |
| requestPath | エンドポイントを呼び出すリクエスト URL の一部。追加のパス情報やクエリ文字列は含みません。CGI 変数の SCRIPT_NAME の値と同じ。urlPattern が "/*" 出会った場合、このメソッドは "http" を返します。 |
| localAddr | リクエストを受け取ったインターフェースの IP アドレス |
| localName | リクエストを受け取った IP インターフェースのホスト名 |
| method | HTTP メソッド |
| protocol | HTTP プロトコルの名前とバージョン |
| remoteAddr | クライアントまたはリクエストを最後に送信したプロキシの IP アドレス。CGI 変数の REMOTE_ADDR の値と同じ |
| remoteHost | クライアントまたはリクエストを最後に送信したプロキシの完全修飾名。エンジンが (パフォーマンスの改善のため) ホスト名を解決できない、あるいは解決しようとしない場合、ドット表記の IP アドレスとなります。 |
| remoteUser | ユーザー認証がされている場合、このリクエストを出すユーザーのログイン。または、ユーザー認証がされていない場合は null。ユーザー名が後続のリクエストに送信されるかは、クライアントや認証タイプにより変わります。CGI 変数の REMOTE_USER の値と同じ。 |
| contentLength | リクエストボディの長さ (バイト) および入力ストリームで利用可能な長さ (バイト)、長さが不明な場合は -1。HTTP サーブレットの場合、CGI 変数の CONTENT_LENGTH の値と同じ。 |
| requestSessionId | クライアント指定のセッション ID、または指定がない場合は null |
| scheme | 使用するスキーマ。"http" または "https" いずれか |
| serverName | リクエストの送信先サーバーのホスト名。"Host" ヘッダーの値にある ":" の前の値です。解決済みの名前またはサーバーの IP アドレス。 |
9.10.6. レスポンス処理
9.10.6.1. 非同期レスポンス処理
<listeners>
<http-gateway name="Http" urlPattern="esb-cars/*">
<asyncResponse />
</http-gateway>
</listeners>
<listeners>
<http-gateway name="Http" urlPattern="esb-cars/*">
<asyncResponse statusCode="202" />
</http-gateway>
</listeners>
<listeners>
<http-gateway name="Http" urlPattern="esb-cars/*">
<asyncResponse statusCode="202">
<payload classpathResource="/202-static-response.xml"
content-type="text/xml"
characterEncoding="UTF-8" />
<asyncResponse>
</http-gateway>
</listeners>
表9.13
| プロパティ | 説明 | 必須 |
|---|---|---|
| classpathResource |
レスポンスペイロードを含むクラスパスでファイルへのパスを指定します。
| 必須 |
| contentType |
classpathResource 属性が指定したペイロードデータのコンテンツ/MIME タイプを指定します。
| 必須 |
| characterEncoding |
classpathResource 属性が指定したデータの文字エンコーディング
| 任意 |
9.10.6.2. 同期レスポンス処理
9.10.6.3. レスポンス情報
HttpResponse responseInfo = new HttpResponse(HttpServletResponse.SC_OK);
responseInfo.setContentType("text/xml");
// Set other response info ...
// Set the HttpResponse instance on the ESB response Message instance
responseInfo.setResponse(responseMessage);
表9.14
| プロパティ | 説明 |
|---|---|
| responseCode |
ゲートウェイレスポンスに設定される HTTP レスポンス/ステータスコード (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)
|
| contentType |
レスポンスペイロード MIME タイプ
|
| encoding |
レスポンスペイロードのコンテンツエンコーディング
|
| length |
レスポンスペイロードのコンテンツの長さ
|
| headers |
リクエストヘッダーを含む java.util.List<HttpHeader>
|
9.10.6.4. ペイロードエンコーディング
9.10.6.5. レスポンスのステータス
9.10.6.6. レスポンスのタイムアウト
<listeners>
<http-gateway name="Http" urlPattern="esb-cars/*">
<property name="synchronousTimeout" value="120000"/>
</http-gateway>
</listeners>
9.10.6.7. 例外処理
<http-gateway name="http-gateway"> <exception> <mapping class="com.acme.AcmeException" status="503" /> </exception> </http-gateway>
<http-provider name="http"> <!-- Global exception mappings file... --> <exception mappingsFile="/http-exception-mappings.properties" /> </http-provider>
9.10.7. セキュリティ処理
- 設定の <http-provider> セクションで <http-bus> を指定します。
- <http-bus> で制約を指定します。
- "busrefid" 属性を使用して <http-gateway> から <http-bus> を参照します。
注記
9.10.8. 保護メソッドおよび許容ユーザーのロール
<http-bus busid="secureSalesDeletes"> <allowed-roles> <role name="friend" /> </allowed-roles> <protected-methods> <method name="DELETE" /> </protected-methods> </http-bus>
表9.15
| 指定のメソッド | 指定のロール | ログイン必須 |
|---|---|---|
| No |
No
| No |
| No |
Yes
| 全メソッド向け |
| Yes |
Yes
| 指定済みのメソッドのみ |
| Yes |
No
| No。指定のメソッドはすべてブロック |
9.10.9. 認証メソッドとセキュリティドメイン
<http-provider name="http"> <http-bus busid="secureFriends"> <allowed-roles> <role name="friend" /> </allowed-roles> <protected-methods> <method name="DELETE" /> </protected-methods> </http-bus> <auth method="BASIC" domain="java:/jaas/JBossWS" /> </http-provider>
注記
9.10.10. トランスポート保証
<http-bus busid="secureFriends" transportGuarantee="CONFIDENTIAL"> <!-- etc etc --> </http-bus>
9.11. Camel ゲートウェイ
警告
注記
camel-core.jar のみが含まれており、他に必要な依存性は手動で追加する必要があります (その他の camel-* JAR やサードパーティの JAR を含む)。
jboss-esb.xml ファイルで、更新スキーマ (jbossesb-1.3.0.xsd) を使用するように宣言した場合、JBoss ESB の <providers> セクション内で、新しい <camel-provider> セクションが利用できます。
<camel-provider name="..."> <camel-bus busid="..."> <from uri="..."/> <from uri="..."/> </camel-bus> </camel-provider>
<camel-gateway name="..." busidref="..."/>
<camel-gateway name="..."> <from uri=""/> <from uri=""/> </camel-gateway>
<camel-gateway name="..." from-uri="..."/>
<camel-bus name="..." busid="..." from-uri="..."/>
注記
注記
<camel-gateway name="..." from-uri="..." async="false" timeout="30000"/>
- async 属性 (デフォルトは false) は、基盤の ServiceInvoker が関連のサービスを同期的または非同期的に呼び出すかを指定しあmす。
- timeout 属性 (デフォルトは 30000) は、ServiceInvoker が同期呼び出しを中断するまでに待機する時間をミリ秒で定義します。
注記
9.12. 旧構成モデルからの移行
org.jboss.soa.esb.helpers.ConfigTree のインスタンス経由で受け取っていました。新しい構成モデルは XSD ベースとなりますが、基礎となるコンポーネント構成パターンはいまだ org.jboss.soa.esb.helpers.ConfigTree のインスタンス経由になります。つまり現在、XSD ベースの構成は ConfigTree スタイルの設定にマッピング/変換されるということになります。
- 新しい構成モデルに関する全ドキュメントをお読みください。 旧モデルの知識に基づいて新しい構成を推測で理解することはできません。
- 新しい構成で自由形式のマークアップがサポートされる場所は <property> エレメント/タイプのみになります。 このタイプは <provider>、<bus>、<listener> のタイプ (およびサプタイプ) で許可されます。 ただし、<property> ベースの自由形式マークアップが ConfigTree 設定にマッピングされる場所は <property> が <action> で存在する場所のみになります。 この場合、<property> のコンテンツはターゲットの ConfigTree <action> にマッピングされます。 しかし、<action> で自由形式の子コンテンツを持つ <property> エレメントが複数ある場合、 このコンテンツはすべてターゲット ConfigTree <action> 上で連結されます。
- 新しいリスナー/アクションのコンポーネントを開発する際はこれらのコンポーネントが依存する ConfigTree ベースの構成が新しい XSD ベースの設定からマッピング可能であることを必ず確認してください。この例としては、 ConfigTree 構成モデル内でどのようにその設定をリスナーノード上で属性を使いリスナーコンポーネントに提供することが決定できるか、またはリスナー構成内の子ノードに基づいて提供することが決定できるかを示す例です。<listener> コンポーネント上にある自由形式構成のこのタイプは XSD から ConfigTree へのマッピングではサポートされません。 つまり、上記の例の子コンテンツは XSD 設定から ConfigTree スタイルの設定にはマッピングされないということです。実際、XSD 設定は <property> に存在しない限り任意のコンテンツを受け取りません。また、<property> に存在する場合でも (<listener> 上)、 マッピングコードによって無視されます。
9.13. 構成
org.jboss.soa.esb.parameters.ParamRepositoryFactory によって隠されます。
public abstract class ParamRepositoryFactory
{
public static ParamRepository getInstance();
}
org.jboss.soa.esb.parameters.ParamRepository インターフェースの実装を返します。
public interface ParamRepository
{
public void add(String name, String value) throws
ParamRepositoryException;
public String get(String name) throws ParamRepositoryException;
public void remove(String name) throws ParamRepositoryException;
}
org.jboss.soa.esb.parameters.ParamFileRepository の実装 1 つのみなります。1 ファイルからのパラメータのロードが可能であることを期待します。使用する実装は org.jboss.soa.esb.paramsRepository.class プロパティを使って上書きが可能です。
注記

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.