Integration コントロールを使用する

     前  次    目次     
ここから内容

Http コントロール

注意 : Http コントロールは、WebLogic Integration の使用許諾を受けた場合にのみ、BEA Workshop for WebLogic Platform で使用できます。

HTTP (Hyper-Text Transfer Protocol) はインターネット上で Web ページをやり取りするための方式で、世界中で広く利用されています。HTTP はアプリケーション レベルのステートレスなプロトコルです。現在定義されている HTTP のバージョンは 1.1 です。HTTP プロトコルは同期的なプロトコルです。つまり、クライアントからサーバに要求メッセージが送信されると、その後にサーバからクライアントに応答メッセージが返されます。

Http コントロールの目的は、BEA Workshop for WebLogic Platform クライアントへの送信 HTTP アクセスを提供することです。Http コントロールは WebLogic Integration で提供される他のコントロールを補完するものであり、BEA Workshop for WebLogic Platform やビジネス プロセスで使用すると、HTTP 要求やプロセスの応答を処理することができます。Http コントロールは WebLogic Platform コントロール アーキテクチャの機能を使用して構築されています。Http コントロールのソース ファイルは Jakarta Commons HttpClient パッケージのラッパーです。Http コントロールは HTTP/1.1 固有の機能に準拠しています。

Http コントロールでは、データ転送用の 2 種類の要求メソッド Get と Post をサポートしています。Get モードを使用すると、ビジネス データを URL と一緒に送信できます。Post モードを使用すると、バイナリ、XML および文字列ドキュメントなどの大量の情報を、要求の本体に格納してサーバに送信できます。

Http コントロール プロパティをアノテーション内に指定したり、XML 変数を介して動的なプロパティを渡したりできます。受信 HTTP 要求は HTTP イベント ジェネレータで処理することができます。HTTP イベント ジェネレータは、HTTP 要求を受け取り、コンテンツ タイプを確認してから、メッセージ ブローカにメッセージをパブリッシュするサーブレットです。HTTP イベント ジェネレータの詳細については、「HTTP イベント ジェネレータ」を参照してください。

Http コントロールを使用すると、以下のように、HTTP または HTTPS (セキュアな HTTP) 要求を URL に送信したり、特定の HTTP 応答ヘッダや本体データを受信したりできます。

 


この節に含まれるトピック

新しい Http コントロールを作成する

新しい Http コントロールを作成する方法について説明します。

ビジネス プロセスで Http コントロールを使用する

新しい Http コントロールを作成してビジネス プロセスで使用する方法について説明します。

Http コントロールのプロパティを指定する

Http コントロール プロパティと、プロパティを指定および編集するメソッドについて説明します。

HTTP メソッドを使用してプロパティを設定する

ヘッダ プロパティやクッキーの指定に使用するさまざまな HTTP メソッドについて説明します。

デバッグ メッセージと例外をログに記録する

デバッグ メッセージをログに記録するためのメソッドについて説明します。

Http コントロールに関する注意

WebLogic Integration Http コントロールに関する確認されている制限と注意事項を示します。

HTTP イベント ジェネレータ

HTTP イベント ジェネレータについて簡単に説明し、詳細な情報源へのリンクを示します。

新しい Http コントロールを作成する

ここでは、新しい Http コントロールを作成する方法について説明します。

新しい Http コントロールを作成する

新しい Http コントロールを作成してビジネス プロセスに追加できます。新しい Http コントロールを定義するには

  1. [パッケージ・エクスプローラー] ペインで、Http コントロールを追加するビジネス プロセス (Process.java ファイル) をダブルクリックします。ビジネス プロセスがデザイン ビューに表示されます。
  2. データ パレット をクリックし、ドロップダウン リストから Integration コントロールを選択して、アプリケーションの統合に使用するコントロールのリストを表示します。
  3. 注意 : [データ パレット] ビューが BEA Workshop for WebLogic Platform に表示されない場合は、メニュー バーから [ウィンドウArrow symbolビューの表示Arrow symbolデータ パレット] をクリックします。
  4. [Http] を選択します。
  5. [Insert control: Http] ダイアログ ボックスが表示されます。

  6. [Insert control: Http] ダイアログ ボックスで、以下の情報を入力します。
    • [フィールド名] に、ビジネス プロセスから新しい HTTP コントロール インスタンスにアクセスするときに使用する変数の名前を入力します。有効な Java 識別子を入力する必要があります。
    • [挿入位置] で、フィールド名をプロセス ファイルに挿入するポイントをドロップダウン リストから選択します。
    • このコントロールをコントロール ファクトリにするかどうかを決定し、[これを実行時に複数のインスタンスを作成できるコントロール ファクトリにする] チェック ボックスをチェックするか、チェックをはずします。コントロール ファクトリの詳細については、「コントロール ファクトリ : コントロールをまとめて管理する」を参照してください。
    • [次へ] をクリックします。
    • [コントロールの作成] ダイアログ ボックスが表示されます。

  7. [コントロールの作成] ダイアログ ボックスで、以下の情報を入力します。
    • [名前] フィールドに新しいコントロール拡張ファイルの名前を入力します。
    • 現在のプロジェクトのプロパティに設定されているようにコメントを追加するかどうかを決定し、[コメントの生成] チェック ボックスをチェックするか、チェックをはずします。
    • [次へ] をクリックします。
    • [Insert control: HTTP] ダイアログ ボックスが表示されます。

  8. [Insert control: HTTP] ダイアログ ボックスで、以下の情報を入力します。
    • [URL フィールド] で、Http コントロールの対象の URL (http://www.bea.comhttps://www.verisign.comhttp://localhost:7001/console など) を指定します。
    • 使用する HTTP モードを選択します。GET または POST モードを選択できます。
    • [送信側の本文のデータ タイプ] ドロップダウン リストからデータ型を選択します。データは XML オブジェクト、文字列、またはバイト ストリームとして送信できます。このオプションは HTTP POST モードの場合にのみ使用できます。
    • [受信する本文のデータ タイプ] ドロップダウン リストから、データを受信する際のデータ型を選択します。異なる形式でデータを受信できます。たとえば、送信データ用にバイト データ型を選択し、データを XML オブジェクトで受信することができます。
    • [終了] をクリックします。代わりに、Http コントロールの Java ファイルを手動で作成することもできます。たとえば、既存の Http コントロールの Java ファイルをコピーしてから変更することができます。

Http コントロールの Java ファイル

新しい Http コントロールを作成すると、プロジェクト内に新しい Java コントロール ファイルが作成されます。以下は Java コントロール ファイルのサンプルです。


package requestquote;
import org.apache.beehive.controls.api.bean.ControlExtension;
import com.bea.wli.control.httpParameter.ParametersDocument;
import com.bea.wli.control.httpResponse.ResponseDocument;
/*
 * カスタム Http コントロール。  
 */
@ControlExtension
@com.bea.control.HttpControl.EndPoint(url = "http://www.bea.com")
public interface HttpControl extends com.bea.control.HttpControl {
	@MethodType(method = METHOD.GET)
	public ResponseDocument get(ParametersDocument parameters, String charset);
	@MethodType(method = METHOD.GETRESPONSE)
	public byte[] getResponseData();
	static final long serialVersionUID = 1L;
	public HttpControl create();
}

Http コントロールの Java ファイルの内容は、Http コントロールの挿入に使用したダイアログ ボックスで選択した設定によって異なります。上記のサンプルは、本文のデータ型を指定するドロップダウン リストで byte[] を選択した場合に生成されるものです。

ビジネス プロセスで Http コントロールを使用する

ビジネス プロセスはクライアント要求ノードで開始されます。クライアント要求ノードは、クライアントがプロセスに要求を送信するプロセス内のポイントを表します。この場合、クライアントはプロセスの setProperties メソッドを呼び出して、Http コントロールの動的なプロパティを指定します。

対象の URL (データの送受信先) を指定する動的なプロパティ設定を使用して、データを Http コントロールを使用して送受信するようにビジネス プロセスを設計するには、次の手順を実行します。

ビジネス プロセスのコントロール送信ノードを設計するには
  1. データ パレットMyHttpControl コントロール インスタンスを展開します。次に、以下のメソッドをクリックします。
  2. setProperties(HttpControlPropertiesDocument propsDoc)
  3. データ パレットからメソッドをドラッグして、クライアント要求ノードのすぐ後に挿入されるように、デザイン ビューのビジネス プロセスにドロップします。
  4. [SetProperties] ノードをダブルクリックします。ノード ビルダが開き、[一般的な設定] タブが表示されます。
  5. [コントロール] フィールドに [MyHttpControl] が表示され、[メソッド] フィールドで以下のメソッドが選択されていることを確認します。
  6. setProperties(HttpControlPropertiesDocument propsDoc)
  7. [データの送信] タブをクリックして、ノード ビルダに 2 番目のタブを開きます。setProperties メソッドで予期されているデータ型 (HttpControlPropertiesDocument) が [コントロールが予期する値] フィールドに表示されます。
  8. [割り当てる変数を選択します] フィールドで、[変数の新規作成...] を選択し、dynamicprop という名前を指定します。ウィンドウを閉じます。
  9. クライアント要求ノードをダブルクリックしてノード ビルダを表示します。
  10. ノード ビルダの [一般的な設定] タブを開いて、com.bea.wli.control.dynamicProperties.HttpControlPropertiesDocument 型の変数を作成します。
  11. [データの受信] タブを開きます。このタブの [クライアントが送信する値] フィールドには、[一般的な設定] タブで作成した変数 (この場合は HttpControlPropertiesDocument x0) が表示されています。[割り当てる変数を選択します] フィールドの矢印をクリックしてプロジェクト内の変数を表示し、割り当てる変数として dynamicprop を選択します。

これで、Http コントロール ノードの設計は完了しました。

実行時には、ユーザが定義した動的なプロパティが、プロパティ エディタで定義された静的なプロパティをオーバーライドします。

Http コントロールのプロパティを指定する

Http コントロールのほとんどのプロパティは、デザイン ビューの [プロパティ] ペインからコンフィグレーションできます。また、実行時に Http コントロールがどのように使用されるかを定義する実行時プロパティも指定できます。実行時の (動的な) プロパティの使用方法については、「動的な Http コントロール プロパティを設定する」を参照してください。

コントロールのプロパティはプロパティ エディタで定義するか、Http コントロールの Java ファイルのソース ビューでプロパティを変更します。Http コントロールの Java ファイルの詳細については、「Http コントロールの Java ファイル」を参照してください。

プロパティ エディタを使用して Http コントロールのプロパティを変更すると、変更内容がコントロールの Java ファイルのソース ビューに反映されます (逆の場合も同様です)。ただし、実行時に指定されたプロパティにより、デザイン ビューでプロパティ エディタを使用して設定したプロパティはオーバーライドされます。プロパティの設定の詳細については、「HTTP メソッドを使用してプロパティを設定する」を参照してください。

HTTP メソッドを使用してプロパティを設定する

[プロパティ] ペインでコントロールのプロパティを設定することによって、デザイン ビューで Http コントロールの動作を指定できます。以下の属性は、Http コントロールのクラスレベルおよびメソッドレベルのコンフィグレーション属性を指定します。

ここでは、プロパティの指定に使用できるさまざまな HTTP メソッドについて説明します。「表 8-1 Http コントロールのメソッド」で各メソッドについて簡単に説明し、その後の節 (表に示すメソッドの参照先) でさらに詳しく説明します。

Http コントロールでは以下のメソッドを使用できます。

表 8-1 Http コントロールのメソッド
メソッドの目的
説明
メソッド
このメソッドは実行時に Http コントロール プロパティを設定する。動的なプロパティは常に、プロパティ エディタで設定された静的なプロパティをオーバーライドする。
void setProperties(HttpControlPropertiesDocument propsDoc)
このメソッドは、HTTP 要求の接続タイムアウトを設定する。このプロパティを設定して、Http コントロールが接続を確立するまでに許容する最長時間を定義する。タイムアウト値が 0 (デフォルト値) の場合は、接続タイムアウトが使用されていないことを示す。
void setConnectionTimeOut(int timeoutInMilliSeconds)
このメソッドは、Http コントロールが対象との接続を確立を試行する回数を定義する。
void setConnectionRetrycount(int retryCount)
このメソッドを使用すると、Http コントロールのクッキーを設定できる。
void setCookies(CookiesDocument cookies)
このメソッドを使用すると、文字列のホスト、初期ポート、文字列のユーザ名、および文字列のパスワードなどのプロキシ設定を指定できる。
void setProxyConfig
setProxyConfig (String host, int port, String userName, String password)
このプロパティを使用すると、サーバサイドのセキュア ソケット レイヤ (SSL) 認証プロセスをコンフィグレーションできる。
void setServerSideSSL(String trustStoreLocation, boolean hostVerificationFlag)
このプロパティを使用すると、クライアントサイドの認証を設定できる。
void setClientSideSSL(String keyStoreType, String keyStoreLocation, String keyStorePassword, String keyPassword)
このメソッドを使用すると、HTTP Get モードを使用して HTTP 要求を送信したり、サーバから HTTP 応答コードを受信したりできる。
ResponseDocument sendDataAsHttpGet(ParametersDocument parameters,String charset)
このメソッドを使用すると、HTTP Post モードのヘッダ プロパティを設定できる。
void setHeadersForHttpPost(HeaderDocument headers)
このメソッドを使用すると、本体データを HTTP Post として送信したり、応答コードを受信したりできる。
HTTP コントロールのコンフィグレーション中に選択する本体データの型に応じて、java ファイルに適切なメソッドが設定される。
ResponseDocument sendDataAsHttpPost(String bodyData)
ResponseDocument sendDataAsHttpPost (XmlObject bodyData)
ResponseDocument sendDataAsHttpPost (byte[] bodyData)
このメソッドを使用すると、HTTP 応答のヘッダを取得できる。
HeadersDocument getResponseHeaders()
このメソッドを使用すると、HTTP 応答からクッキーを受信できる。
CookiesDocument getCookies()
HTTP コントロールのコンフィグレーション中に選択する本体データの型に応じて、java ファイルに適切なメソッドが設定される。
String getResponseBodyAsString()
XmlObject getResponseBodyAsXML() 
byte[] getResponseBodyAsBytes()

動的な Http コントロール プロパティを設定する

メソッド : void setProperties(HttpControlPropertiesDocument propsDoc)

動的なプロパティを使用するには、Http コントロールの動的なプロパティ スキーマに準拠する XML 変数を、Http コントロールの setProperties() メソッドに渡します。

動的なプロパティを設定する XML 変数のサンプル

<?xml version="1.0" encoding="UTF-8"?>
<xyz:HttpControlProperties xmlns:xyz="http://www.bea.com/wli/control/dynamicProperties">
<xyz:URLName>http://localhost:7001/console</xyz:URLName>
</xyz:HttpControlProperties>

Http コントロール プロパティのスキーマ

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.bea.com/wli/control/dynamicProperties" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.bea.com/wli/control/dynamicProperties" elementFormDefault="qualified">
<xs:element name="HttpControlProperties">
<xs:complexType>
<xs:sequence>
<xs:element name="URLName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

接続のタイムアウトを設定する

メソッド : setConnectionTimeOut (int timeoutInMilliSeconds)

このメソッドは、HTTP 要求の接続タイムアウトを設定します。接続のタイムアウトとは、接続を確立するためにコントロールに許可される最長時間です。この時間が経過すると接続は失敗します。タイムアウトのパラメータはミリ秒単位で設定します。タイムアウト値が 0 (デフォルト値) の場合は、接続タイムアウトが使用されていないことを示します。

接続の再試行回数を設定する

メソッド : setConnectionRetrycount (int retryCount)

このメソッドは再試行回数、つまりアプリケーションが HTTP 要求を再試行する回数を設定します。この値を指定しない場合、アプリケーションは接続を 1 回だけ試行します。最初の試行で接続が確立されない場合、通常は 2 回目の試行が成功します。HTTP 要求が最初の試行で確立されない場合に 2 回目の試行が行われるように、このプロパティを設定することをお勧めします。

サーバサイド SSL をコンフィグレーションする

メソッド : setServerSideSSL (String trustStoreLocation, boolean hostVerificationFlag)

Http コントロールは JSSE (Java Secure Socket Extension) を利用することで、HTTP over SSL (セキュア ソケット レイヤ)/TLS (Transport Layer Security) を完全にサポートしています。JSSE は JDK 1.4 に統合されており、WebLogic Integration プラットフォームに付属しています。

このメソッドを実行すると、サーバサイド認証のコンフィグレーションが設定されます。デフォルトでは、JSSE はトラスト ストアの場所として jdk142_04\jre\lib\security\cacerts を使用します。この場所には、Verisign や CyberTrust など著名な認証局が格納されています。したがって、認証局によって発行された証明書のトラスト ストアの場所を指定する必要はありません。

また、ホスト名検証フラグを指定できます。ホスト名検証では、SSL セッションのサーバ ホスト名が、サーバ証明書にある SubjectDN エントリの Common Name フィールドで返されたホスト名と一致していることを確認します。デフォルトでは、このエントリは false に設定されています。

たとえば、認証用 URL として https://www.verisign.com/ を指定する場合、Verisign は JSSE の証明書で信頼性のある認証局になっているため、トラスト ストアの場所を指定する必要はありません。

信頼性のない自己署名証明書または SSL 証明書を受け付けるには、サーバ証明書をトラスト ストアの場所にインポートする必要があります。JSSE の詳細については、以下の場所にある「Java Secure Socket Extension (JSSE) Reference Guide」を参照してください。

http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html

以下のサンプルでは、ストアを作成し、サーバ証明書をインポートして、このメソッドのパラメータを指定する方法を示します。

  1. 次の Keytool コマンドを実行して新しいキーストアを作成します。
  2. keytool -genkey -alias aliasname -keyalg rsa -keystore keystore name

    ユーザの入力値が含まれるコマンドのサンプルは次のとおりです。

    keytool -genkey -alias teststore -keyalg rsa -keystore c:\teststore.jks

    詳細については、以下の場所にある「Creating a Keystore to Use with JSSE」を参照してください。

    http://java.sun.com/j2se/1.4.2/docs/guide/security/jsse/JSSERefGuide.html

  3. HTTPS サイトを起動して証明書をコピーします。たとえば、https://host:port/console の形式で、localhost または他のマシンの WebLogic Server Console を起動できます。サーバ証明書に関するプロンプトが表示されたら、[証明書の表示] ボタンをクリックし、[詳細] タブを表示して、[ファイルへコピー] をクリックします。
  4. コピーした証明書を手順 1 で作成したキーストアにコピーします。次のコマンドを使用します。
  5. keytool -import -alias aliascertname -file certificatename -keystore keystore_name

    以下に例を示します。

    keytool -import -alias testcer -file c:\test.cer -keystore c:\teststore.jks

  6. setServerSideSSL メソッドで、トラスト ストアの場所を C:\teststore.jks と指定し、要求の送信先 URL を https://host:port/console と指定します。ホスト名を検証するには、host-name 検証フラグを true に設定します。

クライアントサイド SSL をコンフィグレーションする

メソッド : setClientSideSSL (String keyStoreType, String keyStoreLocation, String keyStorePassword, String keyPassword)

このメソッドでは、クライアントサイド認証のコンフィグレーションを設定します。このメソッドは、サーバサイドとクライアントサイドの両方の認証が必要な場合に使用してください。このメソッドをコンフィグレーションする前に、サーバサイド SSL をコンフィグレーションする必要があります。

このメソッドでは、keyStoreType および keyPassword フィールドは省略可能です。keyStoreType を指定しない場合、このメソッドではデフォルトのキーストア タイプ (java.security ファイルで指定される) を使用されます。

キーストアによっては、キーストアのパスワードがキーのパスワードと異なる場合があります。その場合は、キーストア パスワードとキー パスワードの両方を指定する必要があります。

サーバサイドとクライアントサイドの両方をコンフィグレーションする場合は、サーバ証明書がクライアントのトラスト ストアに格納されていなければなりません。同様に、クライアント証明書がサーバのトラスト ストアに格納されていなければなりません。クライアントではキーストアの場所とパスワードを適切に指定する必要があります。

プロキシ設定をコンフィグレーションする

メソッド : setProxyConfig (String host, int port, String userName, String password)

このメソッドはプロキシ サーバのパラメータをコンフィグレーションします。プロキシ サーバを使用して HTTP 要求を送信するには、ホスト、ポート、ユーザ名、およびパスワードを適切にコンフィグレーションする必要があります。

注意 : Http コントロールは基本方式のプロトコルをサポートしています。NTLM プロトコルはサポートしていません。このことを踏まえて、プロキシ設定をコンフィグレーションする必要があります。

クッキーを設定する

メソッド : setCookies(CookiesDocument cookies)

Http コントロールを使用すると、サーバに送信されるクッキーを手動で設定できます。HTTP 要求と一緒にクッキーをサーバに送信するには、Http コントロールのクッキー ドキュメント スキーマに準拠する XML 変数を渡す必要があります。

クッキーの設定に使用する XML 変数のサンプル

<?xml version="1.0" encoding="UTF-8"?>
<Cookies xmlns="http://www.bea.com/wli/control/HttpCookies">
<Cookie>
<Name>CookieName1</Name>
<Value>CookieValue1</Value>
</Cookie>
<Cookie>
<Name>CookieName2</Name>
<Value>CookieValue2</Value>
</Cookie>
</Cookies>

クッキーを設定するためのスキーマ

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.bea.com/wli/control/HttpCookies" elementFormDefault="qualified" targetNamespace="http://www.bea.com/wli/control/HttpCookies">
<xs:element name="Cookies">
<xs:complexType>
<xs:sequence>
<xs:element name="Cookie" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"
minOccurs="0"/>
<xs:element name="Value" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

HTTP Post のヘッダを設定する

メソッド : setHeadersForHttpPost (HeadersDocument headers)

このメソッドは HTTP Post の要求ヘッダを設定します。要求ヘッダを設定するには、Http コントロールのヘッダ ドキュメント スキーマに準拠する XML 変数を渡す必要があります。以下のように指定して、デフォルト ヘッダの値を上書きすることができます。

User-agentContent-Type など。

ヘッダの設定に使用する XML 変数のサンプル

<?xml version="1.0" encoding="UTF-8"?>
<xyz:Headers xmlns:xyz="http://www.bea.com/wli/control/HttpHeaders">
<xyz:Header>
<xyz:name>Content-Type</xyz:name>
<xyz:value>text/*</xyz:value>
</xyz:Header>
<xyz:Header>
<xyz:name>header</xyz:name>
<xyz:value>h1</xyz:value>
</xyz:Header>
</xyz:Headers>

HTTP Post ヘッダを設定するためのスキーマ

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.bea.com/wli/control/HttpHeaders" elementFormDefault="qualified" targetNamespace="http://www.bea.com/wli/control/HttpHeaders">
<xs:element name="Headers">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="value" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

HTTP Get 要求を送信する

メソッド : ResponseDocument sendDataAsHttpGet(ParametersDocument parameters,String charset)

このメソッドは HTTP GET 要求を送信する場合に使用します。Get 要求は一般に、Web サーバの HTML ドキュメントのような静的リソースにアクセスするために使用します。また、要求 URL に追加のパラメータを使用して、動的な情報を取得することもできます。

Get 要求では、要求パラメータは要求 URL に付加されるクエリ文字列として転送されます。URL にマルチバイト文字のパラメータを挿入できるように、Http コントロールはこのメソッドの charset フィールドの定義に従って、パラメータを文字にエンコードします。文字セットを指定しない場合、Http コントロールは「UTF-8」でエンコードされたパラメータ データと URL を送信します。URL と一緒にパラメータを送信するには、Http コントロールのパラメータ ドキュメント スキーマに準拠する XML 変数にパラメータを格納して渡す必要があります。

HTTP Get のパラメータの設定に使用する XML 変数のサンプル

<?xml version="1.0" encoding="UTF-8"?>
<xyz:Parameters xmlns:xyz="http://www.bea.com/wli/control/HttpParameter"> <xyz:Parameter>
<xyz:Name>Customer Id</xyz:Name>
<xyz:Value>1000</xyz:Value>
</xyz:Parameter>
<xyz:Parameter>
<xyz:Name>Customer Name</xyz:Name>
<xyz:Value>Robert</xyz:Value>
</xyz:Parameter>
</xyz:Parameters>

HTTP Get のパラメータを送信するためのスキーマ

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.bea.com/wli/control/HttpParameter" elementFormDefault="qualified" targetNamespace="http://www.bea.com/wli/control/HttpParameter">
<xs:element name="Parameters">
<xs:complexType>
<xs:sequence>
<xs:element name="Parameter" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"
minOccurs="0"/>
<xs:element name="Value" type="xs:string"
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

データを HTTP Post として送信する

メソッド : ResponseDocument sendDataAsHttpPost (String/XmlObject/byte[ ] bodyData)

データをサーバにポストするには HTTP Post メソッドを使用します。Http コントロールを使用すると、3 種類のデータ型 (String、XmlObject、および byte) のデータをポストできます。

HTTP Post メソッドは HTTP 応答を返します。つまり、HTTP 応答コードと対応するメッセージが ResponseDocument で返されます。応答ドキュメントのスキーマは、「HTTP Get のパラメータを送信するためのスキーマ」で説明しているものと同じです。

HTTP Post 要求は要求ごとに異なる情報を転送するためのものです。サーバに大量の情報を送信する必要がある場合に使用します。Http コントロールを使用すると、3 種類のデータ型 (文字列、XmlObject、およびバイト ストリーム) のデータをポストできます。

HTTP プロトコルでは、サーバとクライアントは MIME (Multipurpose Internet Mail Extensions) ヘッダを使用して、要求と応答のコンテンツのタイプを示します。Http コントロールでも、送信されるデータのタイプを記述するために、要求の本体のデータを転送するときに MIME ヘッダ (Content-Type) を使用します。そのため、String または XmlObject データ型をポストするときは、Http コントロールの setHeadersForHttpPost() メソッドを使用して、Content-Type ヘッダを適切に設定する必要があります。Content-Type ヘッダには、メッセージ本体の文字セットを示す charset 属性があります。

charset 属性を設定しない場合、Http コントロールはデフォルト HTTP エンコーディング (ISO-8859-1) を使用してメッセージをエンコードします。

以下のサンプルでは、HTTP Post モードを使用してデータを送信する方法についての詳細を示します。

サンプル 1 - String データ型の要求本体

エンコーディング Shift-JIS の文字列メッセージをポストするには、以下のように、Http コントロールの setHeadersForHttpPost メソッドを呼び出して、Content-Type 要求ヘッダの charset 属性を設定する必要があります。

Content-type="text/*; charset=Shift-JIS"

サンプル 2 - XmlObject データ型の要求本体

XML データ型の要求メッセージを送信するときに、Content-Type ヘッダの charset 属性を適切に設定する必要があります。

Content-Type ヘッダで文字エンコーディングを指定しない場合、Http コントロールは rfc3023 で規定されているデフォルト エンコーディングを使用します。

たとえば、エンコーディング EUC-JP の XML ドキュメントをポストするには、要求タイプ ヘッダを以下のように設定する必要があります。

Content-Type="text/xml; charset=EUC-JP"

要求ヘッダで charset 属性を指定しない場合、Http コントロールはデフォルト エンコーディングとして us-ascii を使用してメッセージをエンコードします。

注意 : 文字列または XML データ型をポストするときに本体データの文字化けを避けるため、常に Content-Type ヘッダの charset 属性を指定するようにしてください。

HTTP Post メソッドは HTTP 応答を返します。つまり、HTTP 応答コードと対応するメッセージが ResponseDocument で返されます。応答ドキュメントのスキーマは、「HTTP Get のパラメータを送信するためのスキーマ」で説明しているものと同じです。

HTTP 応答ヘッダを受信する

メソッド : HeadersDocument getResponseHeaders

このメソッドを使用して HTTP 応答ヘッダを受信します。応答ヘッダは、あらかじめ定義されたスキーマの XML 変数に格納されて返されます。

応答ヘッダのスキーマは、「HTTP Post のヘッダを設定する」で説明している要求ヘッダのスキーマと同じです。

サーバからクッキーを受信する

メソッド : CookiesDocument getCookies

このメソッドを使用してサーバからクッキーを受信します。クッキーは、あらかじめ定義されたスキーマの XML ドキュメントに格納されて返されます。

応答クッキーのスキーマは、「クッキーを設定するためのスキーマ」で説明している要求クッキーのスキーマと同じです。

HTTP 本体データを受信する

メソッド : String getResponseBodyAsString / XmlObject getResponseBodyAsXml / byte[ ] getResponseBodyAsBytes

HTTP では、HTTP 要求を受けて、サーバが要求で指定されたリソースに対応する本体コンテンツを送信します。応答の本体データを受信するには、このメソッドを使用する必要があります。

Http コントロールは、応答データを 3 種類のデータ型 (String、XmlObject、および Byte[]) で返すことができます。予期されるサーバの応答データに基づいて、応答のデータ型を適切に設定する必要があります。応答の本体が使用できないか読み取れない場合、コントロールは null 値を返します。

注意 : String または XmlObject データ型の応答の本体を解析するときに、Http コントロールは Content-Type 応答ヘッダで指定された文字エンコーディングを使用します。Content-Type ヘッダで文字エンコーディングが指定されていない場合、Http コントロールはデフォルトの HTTP コンテンツ エンコーディングを使用します。String の場合は ISO-8859-1XmlObject の場合は US-ASCII です。
注意 : データの文字化けを避けるため、常に Content-Type 応答ヘッダの charset 属性を指定するようにしてください。

デバッグ メッセージと例外をログに記録する

実行時に、Http コントロールはさまざまなパラメータ、null 値、およびメソッドの戻り値の型をチェックします。ある箇所で検証が失敗すると、コントロール例外が BPM (Business Process Management) に送出されます。デバッグ メッセージをログに記録し、そのログを参照して、必要に応じて例外を解決することができます。

デバッグ メッセージをログに記録するには、WebLogic Workshop ログ プロパティ ファイルを編集します。Workshop ログ プロパティ ファイルの workshopLogCfg.xmlWL_HOME\weblogic81\common\lib\ フォルダにあります。

HttpControlImpl および HttpResource クラス ファイルに関するすべてのデバッグ文をログに記録するには、workshopLogCfg.xml ファイルに以下の行を追加します。

<category name="com.bea.control.HttpControl">
<!-- 注意 : WLI の開発ライセンスがない場合はこの優先順位レベルを変更しないこと -->
<!-- デバッグレベルのログ情報は、障害の原因を突き止めるための唯一の手段と
なることが多い
<priority value="debug"/>
<appender-ref ref="SYSLOGFILE"/>
<appender-ref ref="SYSERRORLOGFILE"/>
</category>
<category name="com.bea.control.HttpResource">
<!-- 注意 : WLI の開発ライセンスがない場合はこの優先順位レベルを変更しないこと -->
<!-- デバッグレベルのログ情報は、障害の原因を突き止めるための唯一の手段と
なることが多い-->
<priority value="debug"/>
<appender-ref ref="SYSLOGFILE"/>
<appender-ref ref="SYSERRORLOGFILE" />
</category>

すべてのデバッグ文は、アプリケーションが実行されている対応するドメインの workshop_debug.log ファイルに記録されます。

 


Http コントロールに関する注意

Http コントロールの確認されている制限は以下のとおりです。

HTTP イベント ジェネレータ

HTTP イベント ジェネレータは、HTTP 要求を受け取り、HTTP 要求のコンテンツ タイプを確認してから、メッセージ ブローカにメッセージを適切にパブリッシュするサーブレットです。

HTTP イベント ジェネレータは 2 種類のメッセージ データ型 (XML とバイナリ) をサポートします。データ型は、HTTP 要求の Content-Type ヘッダ、プロパティ名、対応する値、およびイベント ジェネレータのチャネル ルールで指定されるその他の処理条件などから決まります。

メッセージ ブローカ チャネル名を使用して、データ型ごとにイベント ジェネレータ チャネルをコンフィグレーションする必要があります。それにより、サーブレットが HTTP 要求を受信すると、そのチャネルにメッセージがパブリッシュされます。

詳細については、『WebLogic Integration Administration Console の使用』の「イベント ジェネレータ」(下記 URL) を参照してください。

http://edocs.beasys.co.jp/e-docs/wli/docs92/adminhelp/evntgen.html


  ページの先頭       前  次