org.opengion.fukurou.transfer

## クラス TransferRead_HTTP

- java.lang.Object
- - org.opengion.fukurou.transfer.TransferRead_HTTP

- すべての実装されたインタフェース:
    TransferRead
  直系の既知のサブクラス:
    TransferRead_HTTP_CB01, TransferRead_HTTP_FILELIST

      public abstract class TransferRead_HTTP
      extends Object
      implements TransferRead

       伝送要求に対して、HTTP経由でデータを読取します。

       読取方法により読み取ったデータをPOSTデータとして送信し、リモートホスト上で
       伝送処理を実行します。

       処理の流れとしては以下のようになります。
       ①HTTPで読取処理を実行するためのサーブレットを呼び出す。
       ②①で呼び出しされたサーブレットが、読取処理を実行するためのオブジェクトを生成し、
         読取処理を実行する。
       ③読取した結果XMLをパースし、その読取データを伝送オブジェクトに渡し伝送処理を実行する。
       ④伝送処理実行後、③の結果XMLから得られる更新キー(配列)をPostデータとして渡し、
         HTTP経由で後処理(完了処理またはエラー処理)を実行する。

       まず①について、呼び出しされるサーブレットは、
         [リモート接続先URL]servlet/remoteControl?class=TransferReadWrapper&type=read になります。
         [リモート接続先URL]は、http://[ホスト名]:[ポート番号]/[コンテキスト名]の形式になりますが、
         これについては、読取対象で指定します。
         接続時にエラーが発生した場合や、レスポンスデータに対して"row_error"という
         文字列が存在する場合は、エラーとして処理します。
         それ以外の場合は、正常終了として処理します。
       次に②について、サーブレット経由で行われる伝送処理について、その読取方法は、
         このクラスを継承した各サブクラスのクラス名により決定されます。
         具体的には、サブクラスのクラス名に対して、このクラス(親クラス)のクラス名+"_" を除外した部分が
         読取方法として認識されます。
         例として、サブクラス名がTransferRead_HTTP_CB01の場合、接続先における読取方法は
         旧伝送DB読取(CB01)となります。
         また、リモートホスト上で実行される伝送処理の[リモート読取対象]は、元の読取対象で設定します。
         このことから、HTTP経由で読取処理を行う場合、元の読取対象には、[リモート接続先URL]と
         [リモート読取対象]の2つを設定する必要があります。
         具体的な設定方法については各サブクラスのJavaDocを参照して下さい。
       ③について、返されるXMLデータは[レスポンスデータのXML構造]の形式になります。
         ここで、dataListは、伝送実行オブジェクトに渡されるデータになります。
         また、keyListについては、伝送実行終了後、HTTP経由で完了処理を行うための更新キーになります。
         (ローカルの伝送読取オブジェクトはトランザクションに対して同一オブジェクトになりますが、
          HTTP接続先でサーブレット経由で生成される、リモートの伝送読取オブジェクトは、
          読取処理と完了/エラー処理で異なります。このため、読取したデータのキーをローカルに保持し、
          最後の完了/エラー処理の際に、読取したデータのキー(更新キー)をPostDataとして渡すことで、
          正しく完了/エラー処理が行われるように対応しています)
       最後に④について、呼び出しされるサーブレットは、
         [リモート接続先URL]servlet/remoteControl?class=TransferReadWrapper&type=complete (正常終了時)
         [リモート接続先URL]servlet/remoteControl?class=TransferReadWrapper&type=error    (エラー発生時)
         となります。

       HTTP接続時には、以下のポストデータが送信されます。
       [ポストデータ]
       ・KBREAD                        (読取方法) ※サブクラスの最後の"_"(アンダーバー)以降の文字列
       ・READOBJ               (リモート読取対象) ※ローカルの読取対象からリモート接続先URLを除いた文字列
       ・READPRM               (読取パラメーター)
       ・KBEXEC                        (実行方法)
       ・EXECDBID              (実行接続先DBID)
       ・EXECOBJ               (実行対象)
       ・EXECPRM               (実行パラメーター)
       ・ERROR_SENDTO  (読み取り元ホストコード)
       ・HFROM (読み取り元ホストコード)
       ・n (キー件数)
       ・k1～kn (キー)

       また、データ読取時に返されるXMLは以下の構造をしています。
       [レスポンスデータのXML構造]
       <root>
        <dataList>
         <data>aaa</data>
         <data>bbb</data>
         <data>ccc</data>
         <data>ddd</data>
         <data>eee</data>
        </dataList>
        <keyList>
         <key>KEY1</key>
         <key>KEY2</key>
         <key>KEY3</key>
        </keyList>
       </root>

  機能分類
    伝送システム
  バージョン
    5.0
  作成者
    Hiroki.Nakamura
  導入されたバージョン:
    JDK1.6

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `TransferRead_HTTP()`

  - ### メソッドのサマリー

    All Methods Instance Methods Abstract Methods Concrete Methods
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `complete(TransferConfig config, Transaction tran)` 読取したデータに対して完了処理を行います。
    `protected URLConnect` | `connect(String url, String postData, TransferConfig config)` 指定のURLに接続します。
    `void` | `error(TransferConfig config, ApplicationInfo appInfo)` 読取したデータに対してエラー処理を行います。
    `String[]` | `getKeys()` このクラスでは、サポートされていません。
    `protected String` | `getPostData(String[] keys, TransferConfig config)` 伝送設定オブジェクトをURLパラメーターに変換します。
    `protected abstract String` | `getRemoteHost()` リモート接続先URLを返します。
    `protected abstract String` | `getRemoteReadObj()` リモート接続先の読取対象を返します。
    `String[]` | `read(TransferConfig config, Transaction tran)` URL接続を行いデータを読み取ります。
    `void` | `setKeys(String[] keys)` このクラスでは、サポートされてません。
    `protected abstract void` | `splitReadObj(String localReadObj)` ローカルの読取対象を、リモート接続先の読取対象とリモート接続先URLに分解します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### TransferRead_HTTP

          public TransferRead_HTTP()

  - ### メソッドの詳細

    - #### read

          public String[] read(TransferConfig config,
                               Transaction tran)

      URL接続を行いデータを読み取ります。 接続パラメータには、"type=read"が付加されます。
      定義:
        `read` インタフェース内 `TransferRead`
      パラメータ:
        `config` - 伝送設定オブジェクト
        `tran` - トランザクションオブジェクト
      戻り値:
        読み取りしたデータ(配列)
      このメソッドは、nullを返しません

    - #### complete

          public void complete(TransferConfig config,
                               Transaction tran)

      読取したデータに対して完了処理を行います。 接続パラメータには、"type=complete"が付加されます。
      定義:
        `complete` インタフェース内 `TransferRead`
      パラメータ:
        `config` - 伝送設定オブジェクト
        `tran` - トランザクションオブジェクト

    - #### error

          public void error(TransferConfig config,
                            ApplicationInfo appInfo)

      読取したデータに対してエラー処理を行います。 接続パラメータには、"type=error"が付加されます。
      定義:
        `error` インタフェース内 `TransferRead`
      パラメータ:
        `config` - 伝送設定オブジェクト
        `appInfo` - DB接続情報

    - #### getKeys

          public String[] getKeys()

      このクラスでは、サポートされていません。
      定義:
        `getKeys` インタフェース内 `TransferRead`
      戻り値:
        更新キー(配列)

    - #### setKeys

          public void setKeys(String[] keys)

      このクラスでは、サポートされてません。
      定義:
        `setKeys` インタフェース内 `TransferRead`
      パラメータ:
        `keys` - 更新キー配列(可変長引数)

    - #### splitReadObj

          protected abstract void splitReadObj(String localReadObj)

      ローカルの読取対象を、リモート接続先の読取対象とリモート接続先URLに分解します。
      パラメータ:
        `localReadObj` - ローカルの読取対象

    - #### getRemoteHost

          protected abstract String getRemoteHost()

      リモート接続先URLを返します。 このメソッドは、`splitReadObj(String)`の後に呼び出しする必要があります。
      戻り値:
        リモート接続先URL

    - #### getRemoteReadObj

          protected abstract String getRemoteReadObj()

      リモート接続先の読取対象を返します。 このメソッドは、`splitReadObj(String)`の後に呼び出しする必要があります。
      戻り値:
        接続URL

    - #### connect

          protected URLConnect connect(String url,
                                       String postData,
                                       TransferConfig config)
                                throws IOException

      指定のURLに接続します。
      パラメータ:
        `url` - 接続URL
        `postData` - POSTするデータ
        `config` - 伝送設定オブジェクト
      戻り値:
        接続オブジェクト
      例外:
        `IOException` - なんらかのエラーが発生した場合。

    - #### getPostData

          protected String getPostData(String[] keys,
                                       TransferConfig config)

      伝送設定オブジェクトをURLパラメーターに変換します。
      パラメータ:
        `keys` - 更新キー(配列)
        `config` - 伝送設定オブジェクト
      戻り値:
        URLパラメーター
      このメソッドは、nullを返しません

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.