ヘッダーをスキップ
Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド
10g (10.1.3.1.0)
B31889-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

2 Oracle Application Server Adapter for Files/FTP

この章では、外部サービスとしてOracle BPEL Process ManagerおよびOracle Enterprise Service Busと連携して動作する、Oracle Application Server Adapter for Files/FTP(ファイルおよびFTPアダプタ)の使用方法を説明します。ファイルおよびFTPアダプタの使用例も参照できます。

この章には、次の項が含まれます。


注意:

Oracle Application Server Adapter for Files/FTPという語は、機能が非常に似た別々のアダプタである、ファイルおよびFTPアダプタに対して使用されます。

2.1 ファイルおよびFTPアダプタの概要

Oracle BPEL Process ManagerとOracle Enterprise Service Busには、ファイルおよびFTPアダプタが組み込まれています。 ファイルおよびFTPアダプタを使用すると、ローカル・ファイルシステムやリモート・ファイルシステムのファイルを(ファイル転送プロトコル(FTP)を使用して)BPELプロセスまたはESBサービスで交換(読取りおよび書込み)できるようになります。ファイルは、XMLとXML以外のデータ形式のどちらでもかまいません。

この項には、次の項目が含まれます。

2.1.1 ファイルおよびFTPアダプタの機能

ファイルおよびFTPアダプタを使用すると、ローカルやリモートのファイルシステムのディレクトリを操作するようにBPELプロセスまたはESBサービスを構成できます。 この項では、ファイルおよびFTPアダプタの次の機能について説明します。

2.1.1.1 ファイル・フォーマット

ファイルおよびFTPアダプタでは、次のファイル形式の読取りおよび書込みが可能で、設計時と実行時の両方でアダプタ・トランスレータ・コンポーネントが使用されます。

  • XML(XSDおよびDTDベースの両方)

  • デリミタ付き

  • 位置固定

  • バイナリ・データ

  • COBOLコピーブック・データ

ファイルおよびFTPアダプタでは、ファイル・コンテンツを不透明(Opaque)オブジェクトとして処理し、コンテンツを(変換せずに)元の形式で渡すこともできます。 不透明(Opaque)オプションでは、構造をXSDで取得できないJPGやGIFなどのバイナリ・データや、変換の不要なデータが処理されます。

トランスレータにより、様々なフォーマットのネイティブ・データからXMLへの変換を、ファイルおよびFTPアダプタで実行できるようになります。ネイティブ・データは単純な形式(フラット構造)または複雑な形式(親子関係)のいずれかです。 トランスレータでは、XMLフォーマットのデータと非XML(ネイティブ)フォーマットのデータの両方を処理できます。

2.1.1.2 FTPサーバー

FTPアダプタはSolarisおよびWindows FTPサーバーをサポートしています。 また、SolarisでFTP over SSL(FTPS)を使用することもできます。

2.1.1.3 インバウンドおよびアウトバウンド相互作用

ファイルおよびFTPアダプタでは、インバウンド方向およびアウトバウンド方向でファイルの交換が行われます。交換の方向により、ファイルおよびFTPアダプタで実行されるタスクの内容は異なります。

Oracle BPEL Process ManagerまたはOracle Enterprise Service Busに送信されるインバウンド・ファイルの場合、ファイルおよびFTPアダプタでは次の操作が実行されます。

  1. ファイルシステムのポーリングによる一致ファイルの検索

  2. 設計時に定義されたネイティブ・スキーマ(NXSD)に基づくファイル・コンテンツの読取りおよび変換

  3. 変換済コンテンツのXMLメッセージとしての公開

ファイルおよびFTPアダプタのこの機能はファイル読取り操作と呼ばれ、この機能を提供するコンポーネントはファイル・リーダーと呼ばれます。この操作は、J2EE Connector Architecture(JCA)のインバウンド相互作用と呼ばれます。

Oracle BPEL Process ManagerまたはOracle Enterprise Service Busから送信されるアウトバウンド・ファイルの場合、ファイルおよびFTPアダプタでは次の操作が実行されます。

  1. BPELからのメッセージの受信

  2. 設計時に指定されたXMLコンテンツの書式設定

  3. 出力ファイルの生成。 出力ファイルは、基準(経過時間、ファイル・サイズおよびメッセージ数)に基づいて作成されます。 これらの基準の組合せを出力ファイル用に指定することもできます。

ファイルおよびFTPアダプタのこの機能はファイル書込み操作と呼ばれ、この機能を提供するコンポーネントはファイル・ライターと呼ばれます。この操作は、JCAアウトバウンド相互作用と呼ばれます。

インバウンドおよびアウトバウンドの方向ごとに、ファイルおよびFTPアダプタでは一連の構成パラメータが使用されます。次に例を示します。

  • インバウンドのファイルおよびFTPアダプタには、入力ファイルが配置されるインバウンド・ディレクトリ用のパラメータと、ディレクトリをポーリングする頻度があります。

  • アウトバウンドのファイルおよびFTPアダプタには、ファイルを書き込むアウトバウンド・ディレクトリ用のパラメータと、使用するファイル・ネーミング規則があります。

ファイル・ライターには、出力ファイルの作成にいくつかの条件があります。出力ファイルは、経過時間、ファイル・サイズおよび受信したメッセージ数に基づいて作成されます。

ファイル・リーダーではポーリング規則がサポートされており、いくつかの後処理オプションが用意されています。 処理後にファイルを削除するか、移動するか、またはそのまま保持するかを指定できます。ファイル・リーダーでは、単一のメッセージとしてではなく、ファイル・コンテンツを分割してバッチで公開できます。 この機能は、ファイルおよびFTPアダプタのパフォーマンス・チューニングに使用できます。ファイル・リーダーでは、ファイルが何度も配信されることはありません。

ファイルおよびFTPアダプタの読取りと書込みの機能の詳細は、後続の項を参照してください。

2.1.1.4 ファイルのデバッチ処理

ファイルに複数のメッセージがある場合には、特定数のバッチでメッセージを公開することを選択できます。これはデバッチと呼ばれます。デバッチ中、再開と同時にファイル・リーダーは、前回の実行時に中断した場所から処理するため、メッセージが重複することはありません。

2.1.1.5 動的なアウトバウンド・ディレクトリ名およびファイル名の指定

ファイルおよびFTPアダプタでは、アウトバウンド・ファイルやアウトバウンド・ディレクトリの論理名または物理名を動的に指定できます。 動的なアウトバウンド・ディレクトリを指定する方法は、第2.2.2.2項「アウトバウンド・ファイル・ディレクトリの作成」を参照してください。

2.1.1.6 セキュリティ

FTPアダプタはセキュアFTPおよびSFTPをサポートしており、ネットワークを介したセキュアなファイル転送が可能です。

詳細は、第2.3項「FTPアダプタでのセキュアFTPの使用」および第2.4項「FTPアダプタでのSFTPの使用」を参照してください。

2.1.1.7 プロキシのサポート

FTPアダプタのプロキシ・サポート機能を使用すると、ファイアウォール外部のFTPサーバーやプロキシ・サーバーを介してのみアクセス可能なFTPサーバーとの間でデータを転送および取得できます。 プロキシ・サーバーにより、イントラネット上のホストからインターネット上のホストに間接的に接続できます。 図2-1に、プロキシ・サーバーが接続を作成してクライアントとリモートFTPサーバーとの直接接続をシミュレートする様子を示します。

図2-1 プロキシ・サーバーを介したリモートFTPサーバー接続

図2-1の説明が続きます
「図2-1 プロキシ・サーバーを介したリモートFTPサーバー接続」の説明

HTTPプロキシ機能を使用するには、プロキシ・サーバーでHTTP接続を介したFTP通信量をサポートしている必要があります。 また、この機能でサポートされるのはパッシブ・データ接続のみです。 FTPアダプタの構成方法は、第2.5項「HTTPプロキシを使用するためのFTPアダプタの構成」を参照してください。

2.1.1.8 ペイロード以外のサポート

Oracle BPEL Process Managerの場合、ファイルおよびFTPアダプタはBPELプロセスに対するファイル名やディレクトリなどのファイル・メタデータのみの公開をサポートしており、ペイロードは除外されます。 BPELプロセスでは、このメタデータを以降の処理に使用できます。 たとえば、BPELプロセスで別のパートナ・リンクをコールし、以降の処理のためにファイル名とディレクトリ名を渡すことができます。 そのため、ファイルおよびFTPアダプタを通知サービスとして使用し、インバウンド・ディレクトリに新規ファイルが出現するたびにBPELプロセスに通知できます。 この機能を使用するには、UseHeadersパラメータ(アクティブ化仕様パラメータ)の値を指定する必要があります。 次の例に示すように、ファイル・アダプタのWSDLファイルでUseHeadersパラメータをtrueに設定します。

UseHeaders="true"

次の例にサンプルWSDLファイルを示します。

<jca:operation
          PhysicalDirectory="E:\Customer\In"
          ActivationSpec="oracle.tip.adapter.file.inbound.FileActivationSpec"
          PhysicalArchiveDirectory="E:\Customer\Archive"
          DeleteFile="true"
          IncludeFiles=".*\.xml"
          ExcludeFiles=".*\.txt"
          PollingFrequency="3"
          MinimumAge="0"
          OpaqueSchema="false" >
          UseHeaders="true"
      </jca:operation>

2.1.1.9 ファイルベースのトリガー

ファイルおよびFTPアダプタは、インバウンド・アダプタのエンドポイントのアクティブ化の制御に使用可能なファイルベースのトリガーをサポートしています。 ファイルベースのトリガーの使用方法は、第2.2.1.4項「ファイル・ポーリング」を参照してください。

2.1.1.10 高可用性

ファイルおよびFTPアダプタは、Oracle BPEL Process Managerでのアクティブ/パッシブ・トポロジに対する高可用性機能をサポートしています。 この機能を使用できるようにファイルおよびFTPアダプタを構成するには、次の手順を実行します。

  1. 高可用性ファイルシステムに共有フォルダを作成します。 このフォルダには書込み権限を設定し、ファイルおよびFTPアダプタを実行する全システムからアクセス可能にする必要があります。

  2. ORAHOME\bpel\system\service\configディレクトリにあるpc.propertiesファイルを開きます。

  3. oracle.tip.adapter.file.controldirpathを共有フォルダ名またはUNCパスに設定します。

    次に例を示します。

    oracle.tip.adapter.file.controldirpath := Z:\\myshare
    または
    oracle.tip.adapter.file.controldirpath := \\Myserver\Mydirectory
    
    
  4. Oracle BPEL Process Managerサーバーを再起動します。

2.1.2 ファイルおよびFTPアダプタのアーキテクチャ

ファイルおよびFTPアダプタはJCA 1.5アーキテクチャに基づいています。JCAでは、異機種間のエンタープライズ情報システム(EIS)の統合に標準アーキテクチャを提供します。ファイルおよびFTPアダプタのアダプタ・フレームワークでは、基盤となるJCA相互作用がOracle BPEL Process Manager統合のサービス(JCAバインディングを使用したWSDL)として公開されています。 OracleAS Adapterのアーキテクチャの詳細は、『Oracle Application Server Adapter概要』を参照してください。

2.1.3 ファイルおよびFTPアダプタとOracle BPEL Process Managerの統合

ファイルおよびFTPアダプタはOracle BPEL Process Managerと自動的に統合されます。 JDeveloper BPEL Designerでパートナ・リンクを作成すると、図1-2に示すように、「アダプタ構成ウィザード」が起動します。

このウィザードを使用すると、図1-3に示すように、ファイルおよびFTPアダプタや、その他のアダプタを選択および構成できます。アダプタ構成ウィザードでは、図1-4に示すように、サービス名の入力を求められます。 構成が完了すると、Oracle JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

「アダプタ構成ウィザード」の「操作」ウィンドウで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のウィンドウが表示され、構成情報の入力を求められます。表2-1に実行可能な操作をリスト表示し、指定する必要のある構成情報が説明されている項を示します。

表2-1 Oracle BPEL Process Managerについてサポートされている操作

操作 参照先

ファイル・アダプタ

-

  • Read File(インバウンド操作)

第2.2.1項「ファイル・アダプタのRead Fileの説明」


  • Write File(アウトバウンド操作)

第2.2.2項「ファイル・アダプタのWrite Fileの説明」


FTPアダプタ

-

  • Get File(インバウンド操作)

第2.2.3項「FTPアダプタのGet Fileの説明」


  • Put File(アウトバウンド操作)

第2.2.4項「FTPアダプタのPut Fileの説明」



OracleAS AdapterとOracle BPEL Process Managerの統合の詳細は、『Oracle Application Server Adapter概要』を参照してください。

2.1.4 ファイルおよびFTPアダプタとOracle Enterprise Service Busの統合

ファイルおよびFTPアダプタは、自動的にOracle Enterprise Service Busと統合されます。JDeveloper ESB DesignerでファイルまたはFTPアダプタ・サービスを作成すると、図1-2に示すように「アダプタ構成ウィザード」が起動します。

このウィザードでファイルおよびFTPアダプタを選択して構成できます。 構成が完了すると、Oracle JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

「アダプタ構成ウィザード」の「操作」ウィンドウで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のウィンドウが表示され、構成情報の入力を求められます。 表2-2に実行可能な操作をリスト表示し、指定する必要のある構成情報が説明されている項を示します。

表2-2 Oracle Enterprise Service Busについてサポートされている操作

操作 参照先

ファイル・アダプタ

-

  • Read File(インバウンド操作)

第2.2.1項「ファイル・アダプタのRead Fileの説明」


  • Write File(アウトバウンド操作)

第2.2.2項「ファイル・アダプタのWrite Fileの説明」


FTPアダプタ

-

  • Get File(インバウンド操作)

第2.2.3項「FTPアダプタのGet Fileの説明」


  • Put File(アウトバウンド操作)

第2.2.4項「FTPアダプタのPut Fileの説明」



OracleAS AdapterとOracle Enterprise Service Busの統合の詳細は、『Oracle Application Server Adapter概要』を参照してください。

2.2 ファイルおよびFTPアダプタの説明

この項には、次の項目が含まれます。

2.2.1 ファイル・アダプタのRead Fileの説明

インバウンド方向では、ファイル・アダプタにより、ファイルシステムからのファイルのポーリングおよび読取りが行われて処理されます。この項では、ファイル・アダプタのインバウンド・ファイル読取り機能の概要を説明します。 BPELプロセスまたはESBサービスでファイル・アダプタを使用するよう構成するには、「アダプタ構成ウィザード」を使用します。これにより、アダプタ構成ウィザードで指定するサービス名と同一のインバウンドWSDLファイルが作成されます。fileAdapterInboundheader.wsdlという名前のインバウンド・ヘッダー・ファイルも作成されます。

この項には、次の項目が含まれます。

2.2.1.1 インバウンド操作

ファイル・アダプタを使用したインバウンド操作では、図2-2に示すように「Read File」操作を選択します。

図2-2 「Read File」操作の選択

図2-2の説明が続きます
「図2-2 「Read File」操作の選択」の説明

2.2.1.2 インバウンド・ファイル・ディレクトリの指定

図2-3に示す「アダプタ構成ウィザード」の「ファイル・ディレクトリ」ウィンドウでは、インバウンド・ファイルの読取りに使用するディレクトリや、正常に処理されたファイルを配置するディレクトリの情報を指定できます。

図2-3 アダプタ構成ウィザード: 着信ファイルの指定

図2-3の説明が続きます
「図2-3 アダプタ構成ウィザード: 着信ファイルの指定」の説明

次の項では、指定するファイル・ディレクトリ情報について説明します。

Oracle BPEL Process Managerでのインバウンドの物理または論理ディレクトリ・パスの指定

Oracle BPEL Process ManagerおよびOracle Enterprise Service Busでは、インバウンドのディレクトリ名を物理パスまたは論理パスとして指定できます。物理パスはc:\inputDirなどの値です。

Oracle BPEL Process Managerでは、論理プロパティはインバウンドWSDLファイルに指定され、論理および物理マッピングはパートナ・リンク・プロパティを使用して解決されます。設計時に一度論理パラメータを指定し、必要に応じて後から物理ディレクトリ名を変更できます。

たとえば、論理入力ディレクトリ名がInputFileDirの場合、生成されたインバウンドWSDLファイルは次のようになります。

<operation name="Read">
   <jca:operation
      LogicalDirectory="InputFileDir"
      ActivationSpec="oracle.tip.adapter.file.inbound.FileActivationSpec"
      IncludeFiles=".*"
      PollingFrequency="5"
      MinimumAge="0"
      DeleteFile="true"
      OpaqueSchema="true" >
   </jca:operation>

bpel.xmlファイルのBPELパートナ・リンクで、対応する論理ActivationSpecまたはInteractionSpecの物理パラメータ値(この場合はディレクトリ・パス)を指定します。これにより、論理ディレクトリ名と実際の物理ディレクトリ名のマッピングが解決されます。

<?xml version = '1.0' encoding = 'UTF-8'?>
<BPELSuitcase>
  <BPELProcess id="ComplexStructure" src="ComplexStructure.bpel">
    <partnerLinkBindings>
      <partnerLinkBinding name="InboundPL">
        <property name="wsdlLocation">ComplexStructureInbound.wsdl</property>
      </partnerLinkBinding>
      <partnerLinkBinding name="OutboundPL">
        <property name="wsdlLocation">ComplexStructureOutbound.wsdl</property>
      </partnerLinkBinding>
    </partnerLinkBindings>
      <activationAgents>
      <activationAgentclassName=
"oracle.tip.adapter.fw.agent.jca.JCAActivationAgent"partnerLink="InboundPL">
      <property name="InputFileDir">C:/ora_home/integration/bpm/samples/tutorials/
121.FileAdapter/ComplexStructure/InputDir/</property>
      <property name="portType">Read_ptt</property>
    </activationAgent>
   </activationAgents>
  /BPELProcess>
</BPELSuitcase>

注意:

複数のファイル・アダプタで1つのインバウンド・ディレクトリをポーリングすることはできません。 それぞれが一意のディレクトリをポーリングしていることを確認してください。

既存の論理名の編集によるbpel.xmlファイル内のマッピングの削除 「アダプタ構成ウィザード」の「ファイル・ディレクトリ」ウィンドウでは、FTPまたはファイル・アダプタを使用する場合に、着信ファイル・ディレクトリとアーカイブ・ディレクトリの両方について、物理ディレクトリ・パスのかわりに論理名を指定できます。 bpel.xmlファイルでも、対応するプロパティを(手動で、またはパートナ・リンク・アクティビティの「プロパティ」タブを介して)設定する必要があります。

「アダプタ構成ウィザード」を後ほど再実行して物理ディレクトリ・パスまたはアーカイブ・ディレクトリの論理名を変更すると、両方のプロパティがbpel.xmlファイルから削除されます。 この2つのプロパティの両方をbpel.xmlファイル内で更新する必要があります。

Oracle Enterprise Service Busでのインバウンドの物理または論理ディレクトリ・パスの指定

Oracle Enterprise Service Busでは、インバウンドのディレクトリ名を物理パスまたは論理パスとして指定できます。物理パスはc:\inputDirなどの値です。

論理名の場合は、図2-3に示すように設計時に「ファイル・ディレクトリ」ウィンドウで論理名を指定し、「エンドポイント・プロパティ」で論理および物理マッピングを指定できます。 たとえば、ReadFileはインバウンド・アダプタ・サービスです。 設計時には、論理ディレクトリ名としてInputFileDirを指定しています。 「アダプタ構成ウィザード」を完了してReadFile_esbsvcファイルをクリックすると、図2-4のようなインバウンド・ファイル・アダプタのウィンドウが表示されます。

図2-4 インバウンド・ファイル・アダプタのサンプル・ウィンドウ

図2-4の説明が続きます
「図2-4 インバウンド・ファイル・アダプタのサンプル・ウィンドウ」の説明

「エンドポイント・プロパティ」セクションで「+」記号をクリックすると、図2-5に示す「エンドポイント・プロパティの選択」ダイアログ・ボックスが表示されます。

図2-5 「エンドポイント・プロパティの選択」ダイアログ・ボックス

図2-5の説明が続きます
「図2-5 「エンドポイント・プロパティの選択」ダイアログ・ボックス」の説明

「InputFileDir」プロパティを選択して「OK」をクリックします。 これで、図2-6のように「値」フィールドで物理ディレクトリ名を指定できます。

図2-6 「エンドポイント・プロパティ」セクション

図2-6の説明が続きます
「図2-6 「エンドポイント・プロパティ」セクション」の説明

正常に処理されたファイルのアーカイブ

このオプションでは、正常に処理されたファイルを配置するディレクトリを指定できます。また、アーカイブ・ディレクトリを論理名として指定できます。 この場合は、「Oracle BPEL Process Managerでのインバウンドの物理または論理ディレクトリ・パスの指定」および「Oracle Enterprise Service Busでのインバウンドの物理または論理ディレクトリ・パスの指定」で説明されている論理ディレクトリから物理ディレクトリへのマッピングを行う必要があります。


注意:

サイズが7MB以上のファイルは配信できません。 大きなファイルはデバッチし(メッセージが複数ある場合)、サイズが7MB未満のメッセージとして公開できます。 これを適用できるのは、メッセージが2つ以上含まれる構造化ファイル(カンマ区切りや位置固定)のみです。バイナリ・ファイルまたはXMLファイルには適用できません。

取得後のファイルの削除

このオプションでは、ファイルを正常な取得後に削除するかどうかを指定できます。このチェック・ボックスが選択されていない場合、処理済のファイルはインバウンド・ディレクトリに残りますが無視されます。最後に処理されたファイルより更新日が新しいファイルのみが取得されます。 処理済のファイルと同じ名前で更新日が古いままのファイルをインバウンド・ディレクトリに配置した場合、そのファイルは取得されません。

2.2.1.3 ファイルの検索とバッチ処理

図2-7に示す「アダプタ構成ウィザード」の「ファイルのフィルタ処理」ウィンドウでは、取得または無視するファイルの詳細を指定できます。

ファイル・アダプタは、インバウンド方向のファイル・リスナーとして機能します。ファイル・アダプタにより、ローカルまたはリモートのファイルシステム上の指定したディレクトリがポーリングされ、指定したネーミング基準に一致するファイルが検索されます。

図2-7 アダプタ構成ウィザード - ファイルのフィルタ処理

図2-7の説明が続きます
「図2-7 アダプタ構成ウィザード - ファイルのフィルタ処理」の説明

次の項では、指定するファイル・フィルタ処理情報について説明します。

ネーミング・パターンの指定

ファイル・アダプタがインバウンド・ファイルのポーリングに使用するネーミング規則を指定します。また、処理対象外にするファイルのネーミング規則も指定できます。2つのネーミング規則を選択できます。ファイル・アダプタにより、インバウンド・ディレクトリに配置されるファイルが検索されます。

  • ファイル・ワイルドカード(po*.txt)

    poで始まり.txtで終わるすべてのファイルが取得されます。この規則はWindowsオペレーティング・システムの標準に準拠しています。

  • 正規表現(po.*\\.txt)

    poで始まり.txtで終わるすべてのファイルが取得されます。この規則は、Java Development Kit(JDK)の正規表現(regex)構文に準拠しています。


注意:

  • 後から別のネーミング・パターンを選択する場合は、「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドで指定するネーミング規則も変更してください。アダプタ構成ウィザードにより自動的に変更されることはありません。



  • ファイルの取得規則に*.*は指定しないでください。



  • オペレーティング・システムにより設定されているファイルの長さの制限に注意してください。たとえば、Windowsオペレーティング・システムでは、ファイル名(ファイル名と完全なディレクトリ・パスを合せた長さ)を256文字より長くすることはできません。制限によりファイル名に特定の文字を使用できないオペレーティング・システムもあります。 たとえば、Windowsオペレーティング・システムでは、\/:*<>または|などの文字は許可されていません。


処理対象ファイルと処理対象外ファイル

正規表現を使用する場合、「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドで指定する値は、JDKの正規表現(regex)構文に準拠している必要があります。どちらのフィールドにも、異なるregexパターンを別々に指定する必要があります。 「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドは、インバウンドWSDLファイルのIncludeFilesおよびExcludeFilesパラメータにそれぞれ対応しています。


注意:

regexパターンはJDK regexパターンに準拠しています。JDK regexパターンに準じると、任意の文字列が任意の回数発生するパターンの正しいコノテーションはピリオドとプラス記号です(.+)。JDK regexでは、アスタリスク(*)は任意の文字が任意の回数発生する文字列のプレースホルダではありません。

拡張子がtxtpoで始まるすべてのファイル名を取得するインバウンドのファイル・アダプタが必要で、名前パターンが正規表現の場合には、「処理対象ファイルの名前パターン」フィールドにpo.*\.txtと指定する必要があります。次にこのregexパターンの例で使用された記号の意味を示します。

  • ピリオド(.)は任意の文字を表します。

  • アスタリスク(*)は任意の発生数を表します。

  • ピリオドが続くバックスラッシュ(\.)は、エスケープ文字のバックスラッシュで示されているように、文字としてのピリオド(.)を表します。

「処理対象外ファイルの名前パターン」フィールドも同様に構成されています。

「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドに部分的に重複する正規表現を入力した場合、処理対象外ファイルの正規表現が優先されます。 たとえば、「処理対象ファイルの名前パターン」がabc*.txtで、「処理対象外ファイルの名前パターン」がabcd*.txtに設定されている場合、abcd*で始まる任意のファイルが取得されます。

表2-3にJava regex構文の詳細を示します。


注意:

JDK regexのパターン名を、+?または*で始めることはできません。

表2-3 Javaの正規表現構文

一致対象 構文

文字

-

文字x

x

バックスラッシュ文字

\\


8進数値0n(0 <= n <= 7)を含む文字

\0n

8進数値0nn(0 <= n <= 7)を含む文字

\0nn

8進数値0mnn(0 <= m <= 3、0 <= n <= 7)を含む文字

\0mnn

16進数値0xhhを含む文字

\xhh

16進数値0xhhhhを含む文字

\uhhhh

タブ文字('\u0009')

\t

改行文字('\u000A')

\n

キャリッジ・リターン文字('\u000D')

\r

用紙送り文字('\u000C')

\f

警告(ベル)文字('\u0007')

\a

エスケープ文字('\u001B')

\e

xに対応する制御文字

\cx

-

-

文字クラス

-

abまたはc(単純クラス)

[abc]

abまたはc以外の任意の文字(否定)

[^abc]

aからzまたはAからZ、範囲指定に使用する文字も含む(範囲)

[a-zA-Z]

aからdまたはmからp: [a-dm-p](結合)

[a-d[m-p]]

deまたはf(交差)

[a-z&&[def]]

bcを除くaからzまでの文字: [ad-z](減算)

[a-z&&[^bc]]

mからpを除くaからzまでの文字: [a-lq-z](減算)

[a-z&&[^m-p]]

-

-

定義済の文字クラス

-

任意の文字(行の終了文字と一致する場合もある)

-

数字: [0-9]

\d

数字以外: [^0-9]

\D

空白文字: [ \t\n\x0B\f\r]

\s

空白文字以外: [^\s]

\S

単語文字: [a-zA-Z_0-9]

\w

単語以外の文字: [^\w]

\W

最長一致数量子

-

X、1回または0回

X?

X、0回以上

X*

X、1回以上

X+

Xn

X{n}

Xn回以上

X{n,}

Xn回以上m回以下

X{n,m}


Java regex構文の詳細は、次のサイトを参照してください。

http://java.sun.com/j2se/1.4.2/docs/api

複数のインバウンド・メッセージのデバッチ処理

2つ以上のメッセージが含まれるファイルを着信するかどうかを選択し、公開する1つのバッチ・ファイルに含まれるメッセージ数を指定できます。ファイルに複数のメッセージがありチェック・ボックスが選択されている場合は、デバッチ処理が行われます。デバッチ処理が行われないのは、ファイルのメッセージが1つのみでチェック・ボックスが選択されていない場合です。 入力ファイルがXMLフォーマットの場合、デバッチ処理はサポートされません。

2.2.1.4 ファイル・ポーリング

図2-8に示す「アダプタ構成ウィザード」の「ファイル・ポーリング」ウィンドウでは、次に示すインバウンド・ポーリング・パラメータを指定できます。

  • 新しいファイルを取得するためにインバウンド・ディレクトリをポーリングする頻度。

  • 取得するファイルの最短経過時間。たとえば、これにより、大きなファイルが処理用に取得される前に、ディレクトリに完全にコピーできるようになります。経過時間は最終更新時のタイムスタンプで決定されます。 たとえば、ファイルの書込みに3分から4分かかることがわかっている場合は、最短経過時間を5分に設定します。 入力ディレクトリでファイルが検出されても、更新時間から5分経過していない場合、まだ書込みが行われている可能性があるためファイルは取得されません。

図2-8 アダプタ構成ウィザード - ファイル・ポーリング

図2-8の説明が続きます
「図2-8 アダプタ構成ウィザード - ファイル・ポーリング」の説明

トリガー・ファイルの使用

デフォルトでは、エンドポイントがアクティブ化されると、インバウンドのファイルおよびFTPアダプタによるポーリングが開始されます。 ただし、より厳密にポーリングを制御する場合は、ファイルベースのトリガーを使用できます。 ファイルおよびFTPアダプタでは、指定のトリガー・ファイルがローカル・ディレクトリまたはリモート・ディレクトリで検出されると、そのファイルのポーリングがインバウンド・ディレクトリ内で開始されます。

たとえば、BPELプロセスがファイルをInOutディレクトリに書込み中であるとします。 第2のBPELプロセスは、同じディレクトリでファイルをポーリングしています。 第1のプロセスによる全ファイルの書込みが完了した後でのみ、第2のプロセスによるディレクトリのポーリングを開始する場合は、トリガー・ファイルを使用できます。 第1のプロセスを、最後にトリガー・ファイルを作成するように構成できます。 第2のプロセスは、トリガー・ファイルを検出するとインバウンド・ディレクトリのポーリングを開始します。

トリガー・ファイル・ディレクトリは、インバウンドのポーリング・ディレクトリと同一でなくてもかまいません。 ただし、トリガー・ファイル・ディレクトリとインバウンドのポーリング・ディレクトリが同一の場合は、図2-7に示した「アダプタ構成ウィザード」ウィンドウで指定したファイル・フィルタとは異なるトリガー・ファイル名を指定する必要があります。

トリガー・ファイルの内容が読み取られることはないため、インバウンドのreceiveアクティビティのペイロードとして使用しないでください。

表2-4に、インバウンド・サービスのWSDLファイルに指定する必要のあるパラメータを示します。

表2-4 トリガー・ファイルのパラメータ

パラメータ 説明

TriggerFilePhysicalDirectory

または

TriggerFileLogicalDirectory

ファイルおよびFTPアダプタがトリガー・ファイルを検索するディレクトリの物理名または論理名。

TriggerFilePhysicalDirectoryおよびTriggerFileLogicalDirectoryパラメータはオプションです。 この2つのパラメータを使用する必要があるのは、トリガー・ファイル・ディレクトリがインバウンドのポーリング・ディレクトリとは異なる場合のみです。 デフォルトでは、ファイルおよびFTPアダプタはトリガー・ファイルをインバウンドのポーリング・ディレクトリ内で検索します。

TriggerFileLogicalDirectoryパラメータは、Oracle Enterprise Service Busではサポートされません。

TriggerFilePhysicalDirectory="C:\foo"

TriggerFileLogicalDirectory= "TriggerFileDir"

TriggerFile

トリガー・ファイル名。

TriggerFile="Purchaseorder.trg"


次の例にサンプル・インバウンド・サービスWSDLを示します。

<jca:operation

         PhysicalDirectory="C:\ORAHOME\integration\jdev\jdev\mywork\triggers_
         proj\inputDir"
         ActivationSpec="oracle.tip.adapter.file.inbound.FileActivationSpec"
         IncludeFiles="Order.*\.xml"
         PollingFrequency="30"
         MinimumAge="0"
         DeleteFile="false"
         OpaqueSchema="true"
         TriggerFilePhysicalDirectory="C:\foo"
         TriggerFile="Purchaseorder.trg"
</jca:operation>


注意:

ファイルおよびFTPアダプタは、エンドポイントがアクティブ化されるたびにトリガー・ファイル・ディレクトリ内でトリガー・ファイルを検索します。

2.2.1.5 ファイル処理

ファイル・アダプタにより、処理用のファイルが準備され、アダプタ・トランスレータに配信されて、トランスレーションと(必要な場合は)デバッチ処理が行われます。

処理対象のインバウンド・ファイルが多い場合や、サイズが1MBを超える大きいファイルの場合は、次の例に示すようにtransaction-manager.xmlファイル内でconfig timeoutの値を増やす必要があります。

<transaction-timeout="30000"/>

transaction-manager.xmlファイルの場所は、インストール・タイプに応じて異なります。 表2-5に、インストール・タイプおよび対応するtransaction-manager.xmlファイルの場所を示します。

表2-5 transaction-manager.xmlファイルの場所

インストール・タイプ ファイルの場所

SOA Basic Installation

Oracle_Home\j2ee\home\config

Oracle Enterprise Service Bus on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\config

Oracle BPEL Process Manager on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\config


2.2.1.6 後処理

ファイル・アダプタではいくつかの後処理オプションをサポートしています。 ファイルの処理後、図2-8の「ファイル・ポーリング」ウィンドウで指定した場合はファイルが削除されます。 また、図2-3の「ファイル・ディレクトリ」ウィンドウで指定した場合は、完了(アーカイブ)ディレクトリにファイルを移動することもできます。

2.2.1.7 ネイティブ・データ・トランスレーション

次に表示される「アダプタ構成ウィザード」のウィンドウは、図2-9の「メッセージ」ウィンドウです。このウィンドウでは、トランスレーション用のXSDスキーマ・ファイルを選択できます。

図2-9 スキーマの指定

図2-9の説明が続きます
「図2-9 スキーマの指定」の説明

ネイティブ・フォーマット・トランスレーションが不要な場合(JPGまたはGIF画像を処理中の場合など)は、「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」チェック・ボックスを選択します。ファイルはBase64エンコーディングで渡されます。

トランスレーションにはXSDファイルが必要です。 新しいスキーマの定義、または既存のデータ型定義(DTD)やCOBOLコピーブックの変換を行う場合は、「ネイティブ・フォーマットのスキーマの定義」を選択します。これにより、ネイティブ・フォーマット・ビルダー・ウィザードが起動されます。このウィザードは、カンマ区切り値(CSV)、固定長、DTDおよびCOBOLコピーブックなどのファイル形式を使用したネイティブ・スキーマ・ファイルの作成を支援します。 ネイティブ・スキーマ・ファイルの作成後、「スキーマ・ファイルのURL」および「スキーマ要素」フィールドが入力された「メッセージ」ウィンドウが表示されます。詳細は、第7.1項「ネイティブ・フォーマット・ビルダー・ウィザードを使用したネイティブ・スキーマ・ファイルの作成」を参照してください。


注意:

指定するスキーマにネームスペースが含まれていることを確認してください。 スキーマにネームスペースがないと、エラー・メッセージが表示されます。

2.2.1.8 エラー処理

ファイル・アダプタには、インバウンド・エラー処理機能がいくつかあります。

rejectedMessageHandlersプロパティ

このプロパティはOracle BPEL Process Manager固有です。rejectedMessageHandlersプロパティを設定すると、ファイルの正しいレコードを処理し、拒否されたレコードのみをアーカイブ・ディレクトリに書き込むようBPELプロセスを構成できます。たとえば、4つのレコードを含むファイルがあるとします。 3つのレコードが正常に処理され、1つのレコードが処理されなかった場合、ファイルは3つの正しいレコードで処理されます。 エラーのあったレコードは拒否されたメッセージのディレクトリに書き込まれます。 ファイルのメッセージが1つのみの場合は、メッセージ全体が拒否されます。

まず、bpel.xmlファイルでrejectedMessageHandlersプロパティをactivationAgentプロパティとして定義すると、インバウンドWSDL操作にのみ適用されます。

<BPELSuitcase>
  <BPELProcess src="ErrorTest.bpel" id="ErrorTest">
    <activationAgents>
       <activationAgent
          className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent"
                        partnerLink="inboundPL">
         <property name="rejectedMessageHandlers">
            file://C:/orabpel/samples/test/errorTest/rejectedMessages
         </property>

これにより、エラーのあるメッセージは次のネーミング・パターンに従って構成済のディレクトリに書き込まれます。

INVALID_MSG_ + process-name + operation-name + current-time

拒否ハンドラには、別のBPELプロセス、WSIFハンドラまたはOracle Advanced Queueハンドラが使用できます。

fatalErrorFailoverProcessプロパティ


このプロパティはOracle BPEL Process Manager固有であり、Oracle Enterprise Service Busでは使用しません。このファイル・アダプタ(または任意のOracleAS Adapter)でリカバリ不可能なシステム・エラー(メモリーやディスクの残量がないなど)が発生した場合、アダプタ・フレームワークによってBPELプロセスが停止されます。
アダプタによる(メインの)BPELプロセスの停止リクエストが開始されると起動される、スタンバイ(またはフェイルオーバー)のBPELプロセスをオプションで構成できます。
bpel.xmlファイルでfatalErrorFailoverProcessプロパティをactivationAgentプロパティとして設定すると、このフェイルオーバーBPELプロセスを構成できます。
<property name="fatalErrorFailoverProcess"> bpel://bpel-domain:password|process-name|operation-name|
input-message-part-name
</property>

passwordは暗号化できます(bpelの場合は省略可能)。

次に例を示します。

<property name="fatalErrorFailoverProcess">

  bpel://default|JCA-FatalErrorHandler|handleError|message
</property>

または

<property name="fatalErrorFailoverProcess">
 bpel://default:C23487CFA591952D3ED0B81F0961F65A|JCA-FatalErrorHandler|handleError|message</property>

ここで、bpelパスワードは(encrypt.bat(Windowsの場合)またはencrypt.sh(UNIXの場合)コマンドライン・ユーティリティを使用して)暗号化形式で指定されています。

致命的なエラーのあるBPELプロセスでは、特定の入力(WSDL)メッセージ・タイプを使用する必要があります。このメッセージ・タイプは、システムが指定するWSDLファイルFatalErrorMessageWSDL.wsdlに定義されています。このWSDLは次のコマンドを使用して参照(インポート)できます。

<import namespace="http://xmlns.oracle.com/pcbpel/fatalErrorHandler"         location="http://localhost:9700/orabpel/xmllib/jca/FatalErrorMessage.wsdl"/>

このメッセージのXMLスキーマ型は次のとおりです。

<complexType name="FatalErrorMessageType">
  <sequence>
    <element name="Reason" type="string"/>
    <element name="Exception" type="string"/>
    <element name="StackTrace" type="string"/>
  </sequence>
</complexType>

フェイルオーバーBPELプロセスは、エラー補正処理の実行、電子メールやショート・メッセージ・サービス(SMS)を使用したアラート通知、または他のプロセスの再起動に使用できます。

uniqueMessageSeparatorプロパティ

デバッチ処理(1つのファイルに複数のメッセージがある場合)では、不正メッセージの開始部分からファイルの終わりまでが拒否されます。各メッセージに一意のセパレータがあり、いずれのデータの一部でもない場合、拒否される部分はより細かくなります。その場合、ネイティブ・スキーマのスキーマ要素にuniqueMessageSeparatorを定義し、この一意のメッセージ・セパレータの値を取得できます。1つのファイル内の複数レコードの解析(デバッチ処理)中、このプロパティがアダプタ・トランスレータの動作を制御します。このプロパティを使用すると、大きなバッチ・ファイルに不正メッセージが検出された場合でもリカバリが可能です。不正レコードが検出されると、アダプタ・トランスレータは次の一意のメッセージ・セパレータ境界にスキップし、そこから続行します。 このプロパティを設定しないと、不正レコード以降のすべてのレコードが拒否されます。

次のスキーマ・ファイルにuniqueMessageSeparatorの使用例を示します。

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
            targetNamespace="http://TargetNamespace.com/Reader"
            xmlns:tns="http://TargetNamespace.com/Reader"
            elementFormDefault="qualified" attributeFormDefault="unqualified"
            nxsd:encoding="US-ASCII" nxsd:stream="chars"
            nxsd:version="NXSD" nxsd:uniqueMessageSeparator="${eol}">
  <xsd:element name="emp-listing">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="emp" minOccurs="1" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="GUID" type="xsd:string" nxsd:style="terminated"
                           nxsd:terminatedBy="," nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Designation" type="xsd:string"
                           nxsd:style="terminated" nxsd:terminatedBy=","
                           nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Car" type="xsd:string" nxsd:style="terminated"
                           nxsd:terminatedBy="," nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Labtop" type="xsd:string"
                           nxsd:style="terminated" nxsd:terminatedBy=","
                           nxsd:quotedBy="&quot;">
              </xsd:element>
              <xsd:element name="Location" type="xsd:string"
                           nxsd:style="terminated" nxsd:terminatedBy=","
                           nxsd:quotedBy="&quot;">
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
<!--NXSDWIZ:D:\work\jDevProjects\Temp_BPEL_process\Sample2\note.txt:-->
<!--USE-HEADER:false:-->

デフォルトのエラー・ディレクトリ

Oracle BPEL Process ManagerでrejectedMessageHandlersプロパティを設定しなければ、トランスレーション中にエラーのあったレコードはデフォルトで次のディレクトリに配置されます。

Oracle_Home\bpel\domains\domain_name\jca\project_directory\rejectedMessages

Oracle Enterprise Service BusでrejectedMessageHandlersプロパティを設定しなければ、トランスレーション中にエラーのあったレコードはデフォルトで次のディレクトリに配置されます。

Oracle_Home\j2EE\jca\event_name\rejectedMessages

2.2.1.9 保証付き配信およびサーバー障害からのリカバリ

Oracle BPEL Process Managerの場合、ファイルおよびFTPアダプタではインバウンド・ファイルが何度も配信されることはありません。FTPを介した大きなファイルの配信も保証されています。 なんらかの原因でシステムが停止しても、再起動時のファイル・アダプタの読取り機能により重複するメッセージの作成が回避されます。

デバッチ処理の場合、ファイルおよびFTPアダプタでは処理対象ファイルの行、列またはバイト位置が内部に格納され、BPELサーバーに障害が発生するとファイルおよびFTPアダプタにより中断した位置から読取りが開始されます。 FTPサーバーに障害が発生すると、インバウンド・アダプタがエラー・リカバリ・モードになり、サーバーが再起動されたかどうかが定期的にチェックされます。

FTPアダプタでは、デバッチ処理中でなければ、処理対象のファイルはFTPサーバーから取得されてOracle BPEL Process Managerに公開された後にのみ削除されます。 障害が発生すると、ファイルは拒否されるか削除されないかのいずれかになります。 ファイルが拒否された場合は、「rejectedMessageHandlersプロパティ」および「デフォルトのエラー・ディレクトリ」で説明したデフォルトまたはユーザー指定の拒否されたファイルのディレクトリに格納されます。 ただし、ファイルが削除されない場合は、サーバーの再起動時に再び取得されます。

インバウンド・メッセージの処理中にシステム・サーバーが停止した場合、すべてのメッセージ・レコードを確実にリカバリするには、サーバーの再起動時に手動でリカバリを実行する必要があります。 たとえば、ファイルに10のメッセージがあり、メッセージが3つ処理された後にサーバーが停止したとします。そのため、4番目のメッセージは配信されません。サーバーが再起動されて5番目のメッセージ(最後に正常に拒否されたメッセージのオフセット)の処理が開始されたときに、4番目のメッセージを手動でリカバリしてすべてのメッセージを保持する必要があります。

拒否されたメッセージ・レコードをリカバリするには、次の手順を実行します。

  1. Oracle BPEL Controlにログインします。

  2. 「BPELプロセス」タブをクリックします。

  3. 「関連タスク」セクションの「手動リカバリの実行」をクリックします。

  4. 「リカバリ」をクリックします。

2.2.1.10 インバウンド・サービス名WSDLファイル

ファイル・アダプタの構成が終了すると、インバウンド方向にWSDLファイルが生成されます。ファイル名は、図1-4に示すアダプタ構成ウィザードの「サービス名」ウィンドウで指定したサービス名と同じです。ウィザードを再起動して、いつでも操作定義を変更できます。

ActivationSpecパラメータには、インバウンド構成情報が含まれています。ActivationSpecと一連のインバウンド・ファイル・アダプタ・プロパティは、インバウンドWSDLファイルの一部です。

インバウンドWSDLには、次の情報が含まれます。

<pc:inbound_binding />
  <operation name="Read">
    <jca:operation
      PhysicalDirectory="C:/ora_home/integration/bpm/samples/tutorials/121.FileAdapter/ComplexStructure/inputDir/"
      ActivationSpec="oracle.tip.adapter.file.inbound.FileActivationSpec"
      PhysicalArchiveDirectory="C:/ora_home/integration/bpm/samples/tutorials/121.FileAdapter/ComplexStructure/archiveDir/"
      DeleteFile="true"
      IncludeFiles=".+\.txt"
      PollingFrequency="5"
      MinimumAge="0"
      OpaqueSchema="false" >
    </jca:operation>
    <input>
      <jca:header message="hdr:InboundHeader_msg" part="inboundHeader"/>
    </input>
  </operation>
</binding>

ActivationSpecパラメータは、設計時にアダプタ構成ウィザードで指定され、インバウンドWSDLのバインディング要素に表示されます。インバウンド・ファイル・アダプタでは、次の構成パラメータが使用されます。

  • PollingFrequency

    このパラメータは、特定の入力ディレクトリで新しいファイルをポーリングする頻度を指定します。パラメータ・タイプはintで必須です。 デフォルト値は1です。

  • PhysicalDirectory

    このパラメータは、ポーリングする物理入力ディレクトリを指定します。パラメータ・タイプはStringです。ファイルが配置されるインバウンド・ディレクトリは必須です。物理ディレクトリまたは論理ディレクトリを指定する必要があります。

  • LogicalDirectory

    このパラメータは、ポーリングする論理入力ディレクトリを指定します。パラメータ・タイプはStringです。

  • PublishSize

    このパラメータは、ファイルに複数のメッセージがあるかどうかと、BPELプロセスに1度に公開するメッセージ数を特定します。パラメータ・タイプはintで必須ではありません。デフォルト値は1です。


    注意:

    アダプタ・サービスのWSDLファイルには、メッセージの公開に使用するバッチ数として負の値を入力しないでください。 たとえば、PublishSize="-1"などは入力しないでください。 負の値を入力すると、Oracle JDeveloperからプロセスのデプロイを試行するときに検証エラーとなります。 「アダプタ構成ウィザード」では、このパラメータに負の値を入力できないことに注意してください。

  • PhysicalArchiveDirectory

    このパラメータは、正常に処理されたファイルのアーカイブ場所を指定します。パラメータ・タイプはStringで必須ではありません。

  • LogicalArchiveDirectory

    このパラメータは、正常に処理されたファイルをアーカイブする論理ディレクトリを指定します。パラメータ・タイプはStringで必須ではありません。

  • IncludeFiles

    このパラメータは、ポーリング中に取得するファイル・タイプのパターンを指定します。パラメータ・タイプはStringで必須ではありません。

  • ExcludeFiles

    このパラメータは、ポーリング中に除外するファイル・タイプのパターンを指定します。パラメータ・タイプはStringで必須ではありません。

2.2.1.11 インバウンド・ヘッダーWSDLファイル

第2.2.1.10項「インバウンド・サービス名WSDLファイル」で説明されているWSDLファイルには、どのメッセージとどの部分が操作ヘッダーを定義するかを示す2つの属性が含まれています。

<jca:header message="hdr:InboundHeader_msg" part="inboundHeader"/>

これらの属性はfileAdapterInboundHeader.wsdlファイルで定義されます。このファイルには、処理されるファイルの名前やそのディレクトリ・パスなどの情報も含まれています。 このファイルはサービス名WSDLファイルとともに作成され、Oracle JDeveloperの「アプリケーション」セクションに表示されます。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>
        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FILEAPP="http://xmlns.oracle.com/pcbpel/adapter/file/">
          <element name="InboundFileHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                        <element name="directory" type="string"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>

    <!-- Header Message -->
    <message name="InboundHeader_msg">
      <part element="tns:InboundFileHeaderType" name="inboundHeader"/>
   </message>
</definitions>

ヘッダー変数の詳細は、Oracle JDeveloperオンライン・ヘルプでinvokeアクティビティのトピックを参照してください。 図2-10のように「ヘルプ」をクリックします。

図2-10 「編集 Invoke」ダイアログ・ボックス

図2-10の説明が続きます
「図2-10 「編集 Invoke」ダイアログ・ボックス」の説明

2.2.1.12 同時ファイル読取り機能

ファイル・アダプタでは、invokeアクティビティを使用して単一ファイルを同期的に読み取ることもできます。 ファイルを同期的に読み取るには、図2-2に示すように「同期Read File」操作を選択します。

図2-11 同期読取り操作のウィンドウ

図2-11の説明が続きます
「図2-11 同期読取り操作のウィンドウ」の説明

「アダプタ構成ウィザード」のすべてのウィンドウは「Read File」操作の場合と同様ですが、図2-12に示すように「ファイル名」ウィンドウが異なります。 「ファイル名」フィールドでは、読み取るファイルの名前を指定できます。

図2-12 「ファイル名」ウィンドウ

図2-12の説明が続きます
「図2-12 「ファイル名」ウィンドウ」の説明

2.2.2 ファイル・アダプタのWrite Fileの説明

アウトバウンド方向では、ファイル・アダプタによりBPELプロセスまたはESBサービスからのメッセージが受信され、ファイルシステムのファイルに書き込まれます。この項では、ファイル・アダプタのアウトバウンド・ファイル書込み機能の概要を説明します。 BPELプロセスまたはESBサービスでファイル・アダプタを使用するよう構成するには、「アダプタ構成ウィザード」を使用します。これにより、アダプタ構成ウィザードで指定するサービス名と同一のアウトバウンドWSDLファイルが作成されます。fileAdapterOutboundheader.wsdlという名前のアウトバウンド・ヘッダー・ファイルも作成されます。

この項には、次の項目が含まれます。

2.2.2.1 アウトバウンド操作

ファイル・アダプタを使用したアウトバウンド操作では、「Write File」操作を選択します。 図2-13にこの選択内容を示します。

図2-13 「Write File」操作の選択

図2-13の説明が続きます
「図2-13 「Write File」操作の選択」の説明

2.2.2.2 アウトバウンド・ファイル・ディレクトリの作成

アウトバウンド操作では、アウトバウンド・ディレクトリ、使用するアウトバウンド・ファイル・ネーミング規則、および必要な場合は使用するバッチ・ファイル規則も指定できます。

図2-14に示す「アダプタ構成ウィザード」の「ファイル構成」ウィンドウでは、発信ファイルのディレクトリやアウトバウンド・ファイル・ネーミング規則を指定できます。

図2-14 アダプタ構成ウィザード: 発信ファイルのパラメータ

図2-14の説明が続きます
「図2-14 アダプタ構成ウィザード: 発信ファイルのパラメータ」の説明

次の項では、指定するファイル構成情報について説明します。

Oracle BPEL Process Managerでのアウトバウンドの物理または論理ディレクトリ・パスの指定

アウトバウンド・ディレクトリ名を物理または論理パスとして指定できます。物理パスはc:\outputDirのような値です。

論理アウトバウンド・ディレクトリ名がOutputFileDirの場合、論理パラメータを指定すると、生成されるWSDLファイルは次のようになります。

<jca:binding />
  <operation name="Write">
    <jca:operation
      InteractionSpec="oracle.tip.adapter.file.outbound.FileInteractionSpec"
      LogicalDirectory="OutputFileDir"
      FileNamingConvention="po_%SEQ%.xml">
    </jca:operation>
  .....

bpel.xmlファイルのBPELパートナ・リンクで、パートナ・リンクの「プロパティ」タブを使用してアウトバウンドのパートナ・リンク・バインディング・プロパティを指定します。これにより、論理ディレクトリ名と実際の物理ディレクトリ名のマッピングが解決されます。

<?xml version = '1.0' encoding = 'UTF-8'?>
<BPELSuitcase>
  <BPELProcess id="ComplexStructure" src="ComplexStructure.bpel">
    <partnerLinkBindings>
      <partnerLinkBinding name="InboundPL">
        <property name="wsdlLocation">ComplexStructureInbound.wsdl</property>
      </partnerLinkBinding>
    <partnerLinkBinding name="OutboundPL">
      <property name="wsdlLocation">ComplexStructureOutbound.wsdl</property>
      <property name="OutputFileDir">C:/ora_home/integration/bpm/samples/tutorials/ 
121.FileAdapter/ComplexStructure/outputDir/</property> 
  </partnerLinkBinding>
</partnerLinkBindings>
    <activationAgents>
    <activationAgentclassName=
"oracle.tip.adapter.fw.agent.jca.JCAActivationAgent"partnerLink="InboundPL">
    <property name="portType">Read_ptt</property>
   </activationAgent>
  </activationAgents>
 </BPELProcess>
</BPELSuitcase>

注意:

アウトバウンド・ファイル名の長さ(ファイル名と完全なディレクトリ・パスを合せた長さ)は200文字に制限してください。これは厳密な制限ではありませんが推奨事項です。アウトバウンド・ファイルの名前が長い(215文字など)場合、アウトバウンド・ディレクトリにその名前の空のファイルが作成されます。

Oracle Enterprise Service Busでのアウトバウンドの物理または論理ディレクトリ・パスの指定

Oracle Enterprise Service Busでは、アウトバウンドのディレクトリ名を物理パスまたは論理パスとして指定できます。物理パスはc:\inputDirなどの値です。

図2-3に示す「ファイル・ディレクトリ」ウィンドウで設計時に論理名を指定し、「エンドポイント・プロパティ」で論理および物理マッピングを指定できます。 たとえば、WriteFileはアウトバウンド・アダプタ・サービスです。 設計時には、論理ディレクトリ名としてOutDirを指定しています。 「アダプタ構成ウィザード」を完了してWriteFile_esbsvcファイルをクリックすると、図2-4のようなアウトバウンド・ファイル・アダプタのウィンドウが表示されます。

図2-15 アウトバウンド・ファイル・アダプタのサンプル・ウィンドウ

図2-15の説明が続きます
「図2-15 アウトバウンド・ファイル・アダプタのサンプル・ウィンドウ」の説明

「エンドポイント・プロパティ」セクションで「+」記号をクリックすると、図2-5に示す「エンドポイント・プロパティの選択」ダイアログ・ボックスが表示されます。

図2-16 「エンドポイント・プロパティの選択」ダイアログ・ボックス

図2-16の説明が続きます
「図2-16 「エンドポイント・プロパティの選択」ダイアログ・ボックス」の説明

「OutDir」プロパティを選択して「OK」をクリックします。 これで、図2-6のように「値」フィールドで物理ディレクトリ名を指定できます。

図2-17 「エンドポイント・プロパティ」セクション

図2-17の説明が続きます
「図2-17 「エンドポイント・プロパティ」セクション」の説明

動的なアウトバウンド・ディレクトリ名の指定

アウトバウンド操作の場合は、動的なアウトバウンド・ディレクトリ名を指定できます。 次の例に示すように、fileAdapterOutboundHeader.wsdldirectoryパラメータを使用し、変数を使用して動的なアウトバウンド・ディレクトリ名を指定できます。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>
        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FILEAPP="http://xmlns.oracle.com/pcbpel/adapter/file/">
            <element name="OutboundFileHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                        <element name="directory" type="string"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>
    <!-- Header Message -->
    <message name="OutboundHeader_msg">       <part element="tns:OutboundFileHeaderType" name="outboundHeader"/>    </message>
</definitions>

fileAdapterOutboundHeader.wsdlファイルにdirectoryパラメータを追加する必要があります。 fileAdapterOutboundHeader.wsdlファイルは読取り専用であり、Oracle JDeveloperでは変更できません。 そのため、ファイルを開いて個別に変更する必要があります。

fileAdapterOutboundHeader.wsdlファイルの変更後、メッセージ・タイプOutboundHeader_msgの変数を作成して値を割り当てます。 手順は次のとおりです。

  1. invokeアクティビティをダブルクリックします。

  2. 「アダプタ」タブをクリックします。

  3. 「変数の参照」アイコンをクリックします。

  4. 「変数の選択」ダイアログ・ボックスで「オブジェクトの作成」アイコンをクリックします。

    file_adptr_icon.gifの説明が続きます
    図file_adptr_icon.gifの説明

  5. 図2-18の「変数の作成」ダイアログ・ボックスで、「メッセージ・タイプ」を選択して「メッセージ・タイプの参照」アイコンをクリックします。

    図2-18 「変数の作成」ダイアログ・ボックス

    図2-18の説明が続きます
    「図2-18 「変数の作成」ダイアログ・ボックス」の説明

  6. 図2-19のように「OutboundHeader_msg」を選択し、「OK」を数回クリックしてinvokeアクティビティのダイアログ・ボックスを終了します。

    図2-19 「タイプの選択」ダイアログ・ボックス

    図2-19の説明が続きます
    「図2-19 「タイプの選択」ダイアログ・ボックス」の説明

  7. assignアクティビティをダブルクリックし、「コピー操作」タブをクリックします。

  8. 「作成」「コピー操作」を順番にクリックします。

  9. 「コピー操作の作成」ダイアログ・ボックスでは変数または式を選択できます。 式の場合は、図2-20のように、「タイプ」から「式」を選択してディレクトリ名とパスを指定します。 このディレクトリに出力ファイルが書き込まれます。

    図2-20 「コピー操作の作成」ダイアログ・ボックス

    図2-20の説明が続きます
    「図2-20 「コピー操作の作成」ダイアログ・ボックス」の説明

  10. 「OK」を数回クリックしてassignアクティビティのダイアログ・ボックスを終了します。


注意:

動的ディレクトリを使用する場合は、NumberMessagesElapsedTimeおよびFileSizeなどのパラメータがアウトバウンド・アダプタ・サービスのWSDLファイルで定義されていないことを確認してください。 これらのパラメータは、動的ディレクトリではサポートされていません。

アウトバウンド・ファイル・ネーミング規則の指定

発信ファイルに使用するネーミング規則を指定します。po.txtなどの完全に静的な名前は入力できません。これは発信ファイル名の一意性を保つためで、ファイルが意図せず上書きされるのを防ぎます。そのかわり、発信ファイル名は静的部分と動的部分で構成されている必要があります。

図2-14に示したファイルの例では、接頭辞と接尾辞部分は静的(たとえばpo_および.xml)です。名前の%SEQ%変数は動的部分で、順序番号やタイムスタンプ(タイムスタンプのファイルを作成する場合の変数はpo_%yyMMddHHmmss%.xml)になります。

システムが予期せぬときに停止した場合には、ファイルに順序番号が書き込まれます。発信ファイルのネーミング規則として、po_で始まり順序番号と拡張子txtが続く名前を選択する場合には、po_%SEQ%.txtと指定する必要があります。

発信ファイルのネーミング規則として、po_で始まりyyyy.MM.ddというパターンのタイムスタンプと拡張子txtが続く名前を選択する場合には、po_%yyyy.MM.dd%.txtと指定する必要があります。たとえば、発信ファイル名はpo_2004.11.29.txtになります。

アウトバウンドの同期的読取りには正規表現を使用できません。そのような場合には、正確なファイル名がわかっている必要があります。

タイムスタンプは日付と時間のパターンの文字列で指定します。日付と時間のパターン文字列では、引用符で囲まれていないAからZおよびaからzの文字は、日付または時間の文字列のコンポーネントを表すパターン文字と認識されます。テキストは、解釈されないように一重引用符(')で囲むことができます。文字''は一重引用符を表します。その他すべての文字は解釈されません。

表2-6にJavaのパターン文字を定義します。

表2-6 Javaのパターン文字

文字 日付または時間コンポーネント 表示内容

G

紀元

テキスト

AD

y

1996; 96

M

年における月

JulyJul07

w

年における週

数値

27

W

月における週

数値

2

D

年における日

数値

189

d

月における日

数値

10

F

月における曜日

数値

2

E

週における日

テキスト

TuesdayTue

a

午前/午後

テキスト

PM

H

1日における時間(0-23)

数値

0

k

1日における時間(1-24)

数値

24

K

午前/午後における時間(0-11)

数値

0

h

午前/午後における時間(1-12)

数値

12

m

1時間における分

数値

30

s

1分における秒

数値

55

S

ミリ秒

数値

978

z

タイムゾーン

一般的なタイムゾーン

Pacific Standard TimePSTGMT-08:00

Z

タイムゾーン

RFC 822タイムゾーン

-0800


次にパターンの異なる表示内容を示します。

  • テキスト

    書式設定において、パターン文字が4文字以上の場合は、完全な表記が使用されます。それ以外の場合、可能であれば、省略表記が使用されます。解析では、パターン文字の数にかかわらず、どちらの表記も使用できます。

  • 数値

    書式設定において、パターン文字の数は最小桁数になり、これに満たない場合は最小桁数まで0が表示されます。解析において、2つの隣接したフィールドを区別する必要がない場合、パターン文字の数は無視されます。

  • 書式設定において、パターン文字が2文字の場合は、年は2桁に切り捨てられます。それ以外の場合は数値として解釈されます。

解析において、パターン文字が3文字以上の場合は、桁数にかかわらず、年は文字どおりに解釈されます。パターンMM/dd/yyyyを使用すると、01/11/12Jan 11, 12 A.D.と解析されます。

年のパターンが省略されている(yまたはyy)解析において、省略された年は複数の世紀に対して解釈されます。日付は、時間インスタンス作成の80年前から20年後までの間の日付に調整されます。たとえば、パターンMM/dd/yyを使用してJan 1, 1997を作成した場合、文字列05/04/64May 4, 1964と解釈される一方で、文字列01/11/12Jan 11, 2012と解釈されます。解析中、数字が2つ含まれる文字列のみがデフォルトの世紀に解析されます。1桁の文字列、3桁以上の文字列またはすべてが数字ではない2桁の文字列(たとえば-1)など、それ以外の数値文字列は文字どおりに解釈されます。そのため、01/02/3または01/02/003は、同じパターンを使用してJan 2, 3 ADと解析されます。また、01/02/-3Jan 2, 4 BCと解析されます。

  • パターン文字が3桁以上の場合、月はテキストとして解釈されます。それ以外の場合は数値として解釈されます。

  • 一般的なタイムゾーン

    タイムゾーンに名前がある場合はテキストとして解釈されます。GMTオフセット値を表すタイムゾーンの場合、次の構文が使用されます。

GMTOffsetTimeZone:
      GMT Sign Hours : Minutes
   Sign: one of
      + -
   Hours:
      Digit
      Digit Digit
   Minutes:
      Digit Digit
   Digit: one of
      0 1 2 3 4 5 6 7 8 9

Hours0から23の間で、Minutes00から59の間です。書式設定はロケールに依存せず、数字はUnicode標準のBasic Latinブロックから取得する必要があります。

解析では、RFC 822タイムゾーンも使用できます。

書式設定では、RFC 822の4桁のタイムゾーンが使用されます。

RFC822TimeZone:
      Sign TwoDigitHours Minutes
   TwoDigitHours:
      Digit Digit

TwoDigitHours00から23の間である必要があります。その他の定義は、一般的なタイムゾーンと同じです。

解析では、一般的なタイムゾーンも使用できます。

動的なアウトバウンド・ファイル名の指定

fileAdapterOutboundHeader.wsdlOutboundHeader_msgメッセージ名を使用して、動的なアウトバウンド・ファイル名の指定に変数を使用することもできます。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>
        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FILEAPP="http://xmlns.oracle.com/pcbpel/adapter/file/">
            <element name="OutboundFileHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>
    <!-- Header Message -->
    <message name="OutboundHeader_msg">
      <part element="tns:OutboundFileHeaderType" name="outboundHeader"/>
   </message>
</definitions>

メッセージ・タイプOutboundHeader_msgの変数を作成して値を割り当て、invokeアクティビティの「アダプタ」タブで使用します。次に例を示します。

 <variables>
      <variable name="fileHeader" messageType="file:OutboundHeader_msg"/>
    [..]

    <assign>
      <copy>
        <from>*testfile.txt*</from>
        <to variable="fileHeader" part="outboundHeader"
            query="/file:OutboundFileHeaderType/file:fileName"/>
      </copy>
    </assign>     <invoke name="FileSend" partnerLink="outboundPL"
             portType="out:FileWrite_PortType" operation="Write"
             inputVariable="payload"
    bpelx:inputHeaderVariable="fileHeader"/>

詳細は、JDeveloper BPEL Designerの「アダプタ」タブにあるオンライン・ヘルプを参照してください。

複数のアウトバウンド・メッセージのバッチ処理

最も簡単なシナリオの場合、1つのメッセージに1つのファイルの書込みを指定します。また、バッチ・ファイル書込みに関するアウトバウンドの規則も指定できます。これにより、1つのバッチ・ファイルで公開するメッセージ数を指定できます。 次に示すバッチ・ファイルの設定は、図2-14の「ファイル構成」ウィンドウで指定されています。

  • メッセージ数の到達

    到達した際に新しい発信ファイルを作成する値を指定します。

  • 経過時間の超過

    到達した際に新しい発信ファイルを作成する時間を指定します。

  • ファイル・サイズの超過

    到達した際に新しい発信ファイルを作成するファイル・サイズを指定します。 たとえば、受信したメッセージ数に3を、ファイル・サイズに1MBという値を指定したとします。合計すると1MB以上になる2つのメッセージや、1MBに満たない3つのメッセージを受信した場合に、出力ファイルが作成されます。

バッチ処理中にファイル・アダプタになんらかの問題が発生した場合、リカバリでは中断した場所からバッチ処理が開始されます。

ファイルのパージ

BPELプロセス固有の制御ファイルはパージできません。 たとえば、アウトバウンド・ファイルに順序番号1を指定して再開したり、エラーのあるファイルを最後に公開されたメッセージではなく先頭から再処理(デバッチ処理)することはできません。

2.2.2.3 ネイティブ・データ・トランスレーション

次に表示される「アダプタ構成ウィザード」のウィンドウは、図2-21の「メッセージ」ウィンドウです。このウィンドウでは、トランスレーション用のXSDスキーマ・ファイルを選択できます。

図2-21 スキーマの指定

図2-21の説明が続きます
「図2-21 スキーマの指定」の説明

インバウンド方向のスキーマの指定と同様に、このウィンドウでは次のタスクを実行できます。

  • ネイティブ・フォーマット・トランスレーションの要不要の指定

  • トランスレーション用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ウィンドウの詳細は、第2.2.1.7項「ネイティブ・データ・トランスレーション」を参照してください。

2.2.2.4 アウトバウンド・エラー処理

インバウンド・ファイルと同様に、アウトバウンド・ファイルも何度も配信されることはありません。FTPを介した大きなファイルの配信も保証されています。 システムが予期せぬときに停止した場合、再起動時のファイル・アダプタの書込み機能により、前回の実行時に中断した場所から処理が開始されるため、メッセージが重複することはありません。ターゲット・ホストが利用できない場合、ファイル・アダプタではドキュメント送信の再試行が行われます。 たとえば、書込みの試行対象のディレクトリが読取り専用の場合でも、ファイル・アダプタにより書込みが再試行されます。

Oracle BPEL Process Managerの場合、パートナ・リンクの「プロパティ」タブで、パートナ・リンクの2つの試行プロパティを構成する必要があります(bpel.xmlファイルが更新されます)。

<partnerLinkBinding name="WriteFile">
  <property name="wsdlLocation">WriteFile.wsdl</property>
  <property name="retryMaxCount">10</property>
  <property name="retryInterval">60</property>

書込み操作が成功します(タイミングよく問題が解決された場合)。 再試行の期間中に問題が解決されない場合、BPELプロセスにバインディング・フォルトが返されます。

Oracle Enterprise Service Busの場合は、次のエンドポイント・プロパティを構成できます。

  • OutboundRetryCount

  • OutboundRetryInterval

  • OutboundRetryEnabled

この3つのプロパティは、esb_config.iniファイル、ESB Console、または図2-6のようにアウトバウンド・アダプタ・サービスの「エンドポイント・プロパティ」セクションを介して構成できます。 esb_config.iniファイルに指定されているデフォルト値を次に示します。

OutboundRetryCount = 3
OutboundRetryInterval = 5
OutboundRetryEnabled = true

2.2.2.5 アウトバウンド・サービス名WSDLファイル

アダプタ構成ウィザードを使用したファイル・アダプタの構成が終了すると、アウトバウンド方向にWSDLファイルが生成されます。ファイル名は、図1-4に示すアダプタ構成ウィザードの「サービス名」ウィンドウで指定したサービス名と同じです。ウィザードを再起動して、いつでも操作定義を変更できます。

WSDLファイルのInteractionSpecパラメータには、設計時にアダプタ構成ウィザードで指定したアウトバウンド構成情報が含まれています。InteractionSpecパラメータと一連のアウトバウンド・ファイル・アダプタ・プロパティは、アウトバウンドWSDLファイルの一部です。アウトバウンドWSDLには、次の情報が含まれます。

<jca:binding />
  <operation name="Write">
    <jca:operation
      PhysicalDirectory="E:\Customer\out"
      InteractionSpec="oracle.tip.adapter.file.outbound.FileInteractionSpec"
      FileNamingConvention="po_%SEQ%.xml"
      NumberMessages="1"
      ElapsedTime="60"
      FileSize="1000000"
      OpaqueSchema="false" >
    </jca:operation>
    <input>
      <jca:header message="hdr:OutboundHeader_msg" part="outboundHeader"/>
    </input>
  </operation>
</binding>

アウトバウンド・ファイル・アダプタでは、次の構成パラメータが使用されます。

  • PhysicalDirectory

    このパラメータは、出力ファイルを書き込む物理ディレクトリを指定します。パラメータ・タイプはStringです。発信ファイルが書き込まれるアウトバウンド・ディレクトリは必須です。物理ディレクトリまたは論理ディレクトリを指定する必要があります。

  • LogicalDirectory

    このパラメータは、出力ファイルを書き込む論理ディレクトリを指定します。パラメータ・タイプはStringです。

  • NumberMessages

    このパラメータは、アウトバウンドのバッチ処理に使用されます。この発信ファイルは、メッセージ数の条件が満たされると作成されます。パラメータ・タイプはStringで必須ではありません。デフォルト値は1です。

  • ElapsedTime

    このパラメータは、アウトバウンドのバッチ処理に使用されます。指定された時間が経過すると、発信ファイルが作成されます。パラメータ・タイプはStringで必須ではありません。デフォルト値は1です。

  • FileSize

    このパラメータは、アウトバウンドのバッチ処理に使用されます。この発信ファイルは、ファイル・サイズの条件が満たされると作成されます。パラメータ・タイプはStringで必須ではありません。 デフォルト値は1000KBです。

  • FileNamingConvention

    これは、アウトバウンドのWrite操作ファイルのネーミング規則用のパラメータです。パラメータ・タイプはStringで必須です。

2.2.2.6 アウトバウンド・ヘッダーWSDLファイル

第2.2.2.5項「アウトバウンド・サービス名WSDLファイル」で説明されているWSDLファイルには、どのメッセージとどの部分が操作ヘッダーを定義するかを示す2つの属性が含まれています。

<jca:header message="hdr:OutboundHeader_msg" part="outboundHeader"/>

fileAdapterOutboundHeader.wsdlファイルでは、これらの属性とともに、アウトバウンド・ファイル名の情報も定義されます。 このファイルはサービス名WSDLファイルとともに作成され、Oracle JDeveloperの「アプリケーション・ナビゲータ」に表示されます。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/file/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/file/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FILEAPP="http://xmlns.oracle.com/pcbpel/adapter/file/">
            <element name="OutboundFileHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>

    <!-- Header Message -->
    <message name="OutboundHeader_msg">
      <part element="tns:OutboundFileHeaderType" name="outboundHeader"/>
   </message>
</definitions>

2.2.3 FTPアダプタのGet Fileの説明

インバウンド方向では、FTPアダプタがファイル・アダプタのRead File操作と同じ機能を果し、ファイルシステムからファイルのポーリングおよび取得を行い処理します。主な違いは、FTPアダプタがリモートでのファイル交換に使用されることです。 このため、図2-22に示すように、「アダプタ構成ウィザード」では後で使用するFTPサーバーへの接続情報が求められます。

図2-22 FTPサーバーの接続情報の指定

図2-22の説明が続きます
「図2-22 FTPサーバーの接続情報の指定」の説明

図2-22で指定したFTPサーバー接続を作成するには、oc4j-ra.xmlデプロイメント・ディスクリプタ・ファイルでアダプタ・インスタンスのJNDI名とFTPサーバー接続情報を編集する必要があります。 oc4j-ra.xmlファイルの場所は、インストール・タイプに応じて異なります。 表2-7に、インストール・タイプおよび対応するoc4j-ra.xmlファイルの場所を示します。

表2-7 oc4j-ra.xmlファイルの場所

インストール・タイプ ファイルの場所

SOA Basic Installation

Oracle_Home\j2ee\home\application-deployments\default\FtpAdapter

Oracle Enterprise Service Bus on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\application-deployments\default\FtpAdapter

Oracle BPEL Process Manager on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\application-deployments\default\FtpAdapter


次にoc4j-ra.xmlの例を示します。

<?xml version="1.0"?>
<!DOCTYPE oc4j-connector-factories PUBLIC "-//Oracle//DTD Oracle Connector
  9.04//EN" "http://xmlns.oracle.com/ias/dtds/oc4j-connector-factories-9_04.dtd">

<oc4j-connector-factories>
    <connector-factory location="eis/Ftp/FtpAdapter" connector-name="FTP Adapter">
        <config-property name="host" value="stada55.us.oracle.com"/>
        <config-property name="port" value="21"/>
        <config-property name="username" value="anonymous"/>
        <config-property name="password" value="password"/>
    </connector-factory>
</oc4j-connector-factories>

アダプタ・インスタンスJNDI名はeis/Ftp/FtpAdapterとして、ホスト、ポート、ユーザー名およびパスワードなどの接続情報は構成プロパティとして指定されます。


注意:

FTPアダプタでは、大きなファイルの変換時には、FTPコマンドRESTARTRECOVERYを使用できません。

ログイン後、Get File(読取り)操作と配信するファイル・タイプを選択します。 図2-23にこの選択内容を示します。

図2-23 「Get File」操作の選択

図2-23の説明が続きます
「図2-23 「Get File」操作の選択」の説明

インバウンドおよびアウトバウンドのファイル転送では、ra.xmlファイルにserverTypeプロパティが含まれます。 ra.xmlファイルの場所は、インストール・タイプに応じて異なります。 表2-8に、インストール・タイプおよび対応するra.xmlファイルの場所を示します。

表2-8 ra.xmlファイルの場所

インストール・タイプ ファイルの場所

SOA Basic Installation

Oracle_Home\j2ee\home\connectors\FtpAdapter\FtpAdapter\META-INF

Oracle Enterprise Service Bus on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\connectors\FtpAdapter\FtpAdapter\META-INF

Oracle BPEL Process Manager on Oracle Application Server Middle tier

Oracle_Home\j2ee\homemid\connectors\FtpAdapter\FtpAdapter\META-INF


serverTypeプロパティは、データ転送時に行セパレータを判別するために自動的に使用されます。 プロパティ値としてunixwinまたはmacを指定できます。 これらの値は、FTPサーバーが稼働しているオペレーティング・システムを表します。 デフォルトでは、serverTypeプロパティの値はunixです。

<config-property-name>serverType</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>unix</config-property-value>

macを指定すると、行セパレータとして\rが使用されます。 unixを指定すると\nが使用され、winを指定すると\r\nが使用されます。

これ以降のGet File操作用の「アダプタ構成ウィザード」のウィンドウは、FTPアダプタのRead File操作用のウィンドウと同じです。 表2-9に、表示されるウィンドウと、各機能が説明されている項を示します。

表2-9 Get File操作の「アダプタ構成ウィザード」のウィンドウ

ウィンドウ 参照先

ファイル・ディレクトリ(図2-3

第2.2.1.2項「インバウンド・ファイル・ディレクトリの指定」


ファイルのフィルタ処理(図2-7

第2.2.1.3項「ファイルの検索とバッチ処理」


ファイル・ポーリング(図2-8

第2.2.1.4項「ファイル・ポーリング」


メッセージ(図2-9

第2.2.1.7項「ネイティブ・データ・トランスレーション」



上級ユーザーは、その他のアダプタ構成ウィザードのウィンドウを使用することもできます。 それが図2-24のウィンドウで、図2-8に表示されている「ファイル・ポーリング」ウィンドウにおいて、次に示すいずれか、あるいは両方の選択を行った後にのみ表示されます。

  • 「正常な取得後にファイルを削除」チェック・ボックスの選択を解除

  • 「ファイルの最小経過時間」フィールドの値を0より大きな値に設定

図2-24 ファイル変更時間

図2-24の説明が続きます
「図2-24 ファイル変更時間」の説明

このウィンドウでは、リモートFTPサーバー上のファイルの変更時間を取得する方法を、次に示すいずれかの方法から指定できます。

  • ファイルシステム

    このオプションを使用すると、ファイルシステムのリスト・コマンドを使用してファイルの変更時間を日付/時間の書式で取得できます。 ただし、このオプションはあまり使用されず、サポートしていないFTPサーバーもあります。 使用しているサーバーでファイルシステムのリスト・コマンドがサポートされているかどうか、どのコマンドライン構文を使用するか、およびどのように出力を解析するかは、FTPサーバーのドキュメントを参照してください。

    たとえば、ファイルシステムのリスト・コマンドquote mdtm filenameがサポートされており、次の情報が返ってきたとします。

    213 20050602102633
    
    

    開始索引、終了索引およびファイル変更時間の日付/時間の書式を、カンマ区切りの単一の値(4,18,yyyyMMddHHmmssなど)として「日付書式/時間書式」フィールドに指定します。

    ここで

    • 4はファイル変更時間の開始索引です。

    • 18はファイル変更時間の終了索引です。

    • yyyyMMddHHmmssは、quote mdtm filenameコマンドで取得されたファイル変更時間の日付/時間の書式です。

    結果のservice_name.wsdlファイルには、次のパラメータおよび値が含まれます。

    FileModificationTime="FileSystem"
    ModificationTimeFormat="4,18,yyyyMMddHHmmss"
    
    

    タイムゾーンの問題を処理するには、タイムスタンプの違いを理解している必要があります。 FTPサーバーのタイムゾーンは、Windowsの「日付と時刻のプロパティ」(たとえば、Windowsのタスク・バーに表示されている時刻をダブルクリック)を使用して決定されます。FTPサーバーとFTPアダプタが稼働しているシステムの時差をミリ秒に換算し、bpel.xmlファイルのプロパティにその値を追加します。

    <activationAgents>
      <activationAgent ...>
        <property name="timestampOffset">2592000000</property>
    
    
  • ディレクトリ・リスティング

    このオプションを使用すると、FTPディレクトリ・リスティング・コマンドを使用してファイル変更時間から日付/時間書式を取得できます。たとえば、ディレクトリ・リスティング・コマンド(ls -l)で次の情報が返ってきたとします。

    12-27-04  07:44AM                 2829 NativeData2.txt
    
    

    開始索引、終了索引およびファイル変更時間の日付/時間の書式を、カンマ区切りの単一の値(0,17, MM-dd-yy hh:mmaなど)として、「旧ファイルの日付書式/時刻書式」フィールドまたは「最新ファイルの日付書式/時刻書式」フィールドに指定します。

    ここで

    • 0はファイル変更時間の開始索引です。

    • 17はファイル変更時間の終了索引です。

    • MM-dd-yy hh:mmaは、ls -lコマンドで取得されたファイル変更時間の日付/時間のフォーマットです。この例では、「最新ファイルの日付書式/時刻書式」フィールドに値が入力されています。このフィールドはネーミング規則に準拠しており、書式が最新のファイルから取得されたことを意味します。一方、「旧ファイルの日付書式/時刻書式」フィールドでは最も古いファイルから書式が取得されます。

    結果のservice_name.wsdlファイルには、次のパラメータおよび値が含まれます。

    FileModificationTime="DirListing"
    ModificationTimeFormat="0,17, MM-dd-yy hh:mma"
    
    

    タイムゾーンの問題を処理するには、タイムスタンプの違いを理解している必要があります。 FTPサーバーのタイムゾーンは、Windowsの「日付と時刻のプロパティ」(たとえば、Windowsのタスク・バーに表示されている時刻をダブルクリック)を使用して決定されます。FTPサーバーとFTPアダプタが稼働しているシステムの時差をミリ秒に換算し、bpel.xmlファイルのプロパティにその値を追加します。

    <activationAgents>
      <activationAgent ...>
        <property name="timestampOffset">2592000000</property>
    
    
  • ファイル名サブストリング

    このオプションを使用すると、ファイル名から変更時間を取得できます。たとえば、ファイル名がfixedLength_20050324.txtの場合、次の値を指定できます。

    • 「サブストリング開始索引」フィールドの開始索引(12など)

    • 「終了索引」フィールドの終了索引(20など)

    • ファイル名でファイル変更時間を表すためにJavaのSimpleDateFormatに準拠している「日付書式/時間書式」フィールドの日付と時間の書式(yyyyMMddなど)

    結果のservice_name.wsdlファイルには、次のパラメータおよび値が含まれます。

    FileModificationTime="Filename"
    FileNameSubstringBegin="12"
    FileNameSubstringEnd="20"
    ModificationTimeFormat="yyyyMMdd"
    
    

「アダプタ構成ウィザード」を完了すると、Oracle JDeveloperの「アプリケーション」セクションに構成ファイルが作成されます。

作成されるインバウンド・サービスWSDLファイル名もファイル・アダプタと同様です。主な違いは、操作タイプとファイル・タイプです。

<pc:inbound_binding />
   <operation name="Get">
<jca:operation
   FileType="binary"

ftpAdapterInboundHeader.wsdlという名前のインバウンド・ヘッダーWSDLファイルは次のようになります。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FTPAPP="http://xmlns.oracle.com/pcbpel/adapter/ftp/">
            <element name="InboundFTPHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                     </sequence>
                </complexType>
            </element>
        </schema>
    </types>

    <!-- Header Message -->
    <message name="InboundHeader_msg">
      <part element="tns:InboundFTPHeaderType" name="inboundHeader"/>
   </message>
</definitions>

エラー処理および保証付き配信機能の詳細は、第2.2.1.8項「エラー処理」および第2.2.1.9項「保証付き配信およびサーバー障害からのリカバリ」を参照してください。

2.2.4 FTPアダプタのPut Fileの説明

アウトバウンド方向では、FTPアダプタはファイル・アダプタのWrite File操作と同じ機能を果します。 BPELプロセスまたはESBサービスからメッセージを受信し、ファイル内のメッセージをファイルシステム(この場合はリモート)に書き込みます。 このため、図2-22に示すように、「アダプタ構成ウィザード」ではアダプタ・インスタンスJNDI名でFTPサーバーに接続するよう求められます。

ログイン後、Put File(書込み)操作と配信するファイル・タイプを選択します。 図2-25にこの選択内容を示します。

図2-25 「Put File」操作の選択

図2-25の説明が続きます
「図2-25 「Put File」操作の選択」の説明

これ以降のPut File操作用のアダプタ構成ウィザードのウィンドウは、ファイル・アダプタのWrite File操作用のウィンドウと同じです。 表2-10に、表示されるウィンドウと、各機能が説明されている項を示します。

表2-10 Put File操作の「アダプタ構成ウィザード」のウィンドウ

ウィンドウ 参照先

ファイル構成(図2-14

第2.2.2.2項「アウトバウンド・ファイル・ディレクトリの作成」


メッセージ(図2-21

第2.2.2.3項「ネイティブ・データ・トランスレーション」



「アダプタ構成ウィザード」を完了すると、Oracle JDeveloperの「アプリケーション」セクションに構成ファイルが作成されます。

作成されるアウトバウンド・サービスWSDLファイル名もファイル・アダプタと同様です。主な違いは、操作タイプとファイル・タイプです。

<pc:inbound_binding />
   <operation name="Put">
<jca:operation
   FileType="binary"

ftpAdapterOutboundHeader.wsdlという名前のアウトバウンド・ヘッダーWSDLファイルは次のようになります。

<definitions
     name="fileAdapter"
     targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
     xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
     xmlns="http://schemas.xmlsoap.org/wsdl/" >
    <types>
        <schema attributeFormDefault="qualified" elementFormDefault="qualified"
                targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ftp/"
                xmlns="http://www.w3.org/2001/XMLSchema"
                xmlns:FTPAPP="http://xmlns.oracle.com/pcbpel/adapter/ftp/">
            <element name="OutboundFTPHeaderType">
                <complexType>
                    <sequence>
                        <element name="fileName" type="string"/>
                    </sequence>
                </complexType>
            </element>
        </schema>
    </types>

    <!-- Header Message -->
    <message name="OutboundHeader_msg">
      <part element="tns:OutboundFTPHeaderType" name="outboundHeader"/>
   </message>
</definitions>

エラー処理機能の詳細は、第2.2.2.4項「アウトバウンド・エラー処理」を参照してください。

2.3 FTPアダプタでのセキュアFTPの使用

FTPアダプタでは、SolarisでセキュアFTP機能を使用できます。この項では、セキュアFTP機能の概要と、この機能のインストールおよび構成方法を説明します。

この項には、次の項目が含まれます。


注意:

FTPアダプタでは、SolarisでのみセキュアFTP機能を使用できます。

2.3.1 セキュアFTPの概要

機密データがリモート・サーバーへ転送される環境(クレジット・カード情報のHTTPサーバーへの送信など)では、セキュリティの問題は非常に重要です。このような場合、セキュリティには主に次の2つの要件があります。

  • データ交換をしているリモート・サーバーの信頼性

  • データの傍受を試みる第三者からの保護

Secure Socket Layer(SSL)の証明書と暗号化は、この2つのセキュリティ要件を満たすことに重点が置かれています。FTPのコンテキストでSSLが使用される場合、そのセキュリティ・メカニズムはFTPS(またはFTP over SSL)と呼ばれます。

SSL環境でクライアントの信頼を得るために、サーバーは認識済の認証局から証明書(X.509証明書など)を取得します。 第2.3.3項「vsftpdのインストールおよび構成」でFTPサーバーのvsftpdを設定する際には、OpenSSLを使用してサーバーの証明書を作成します。どのクライアントも、初めは少数のパーティしか信頼しません。サーバーが信頼されているパーティの1つである場合、またはサーバーの証明書がそれらのパーティのいずれかで発行されたものである場合、間接的であるにしても信頼を得たことになります。たとえば、サーバーの証明書が、認証局Bから発行された証明書を持つ認証局Aから発行されたもので、クライアントがBを信頼していればそれで問題ありません。 図2-7に示す設定では、サーバーの証明書は信頼できる証明書として、直接クライアントの証明書ストア(またはOracleウォレット)にインポートされています。

送信前に暗号化し、受信後に復号することで、転送するデータは盗用されなくなります。データが大量な場合、(データの暗号化と復号に同じ鍵を使用する)対称型暗号化は公開鍵と秘密鍵を使用する方法よりもはるかに高速です。対称型暗号化はFTPSで使用される方法です。ただし、クライアントとサーバーがデータの暗号化や復号に同じ鍵を使用するには、共通の鍵について合意する必要があります。通常、クライアントが次のタスクを実行することで合意が成立します。

  • セッション鍵の生成(データの暗号化と復号に使用)

  • サーバーの証明書の一部であるサーバーの公開鍵を使用したセッション鍵の暗号化

  • サーバーへの鍵の送信

サーバーは秘密鍵を使用してこのセッション鍵を複合化し、クライアントに送信する前にそのセッション鍵を使用してファイル・データを暗号化します。

これ以降では、セキュアFTPのインストールおよび構成方法を説明します。

2.3.2 OpenSSLのインストールおよび構成

OpenSSLは、SSLプロトコルのオープン・ソースの実装です。OpenSSLは基本的な暗号機能を実装し、ユーティリティ関数を提供します。SolarisホストをFTPサーバーとして使用するには、OpenSSLをインストールおよび構成します。

  1. 次のURLに移動します。

    http://www.openssl.org/source
    
    
  2. 使用可能なファイルのリストでopenssl-0.9.7g.tar.gzを検索します。次に例を示します。

     3132217 Apr 11 17:21:51 2005 openssl-0.9.7g.tar.gz (MD5) (PGP sign)
    
    
  3. 次のファイルをダウンロードします。

    • openssl-0.9.7g.tar.gz

    • openssl-0.9.7g.tar.gz.md5(MD5リンクの先)

    • openssl-0.9.7g.tar.gz.asc(PGP signリンクの先)

  4. gunzipを使用して次のファイルを解凍します。

    gunzip openssl-0.9.7g.tar.gz
    
    
  5. 次のtarファイルを解凍します。

    tar xvf openssl-0.9.7g.tar
    
    
  6. 次の場所にディレクトリを変更します。

    cd openssl-0.9.7g
    
    
  7. 次のコマンドを実行します。

    ./config --prefix=/usr --openssldir=/usr/local/openssl
    
    
  8. Bourneシェルに変更します(まだ使用していない場合)。

    sh
    
    
  9. PATHを構成およびエクスポートします。

    PATH=${PATH}:/usr/ccs/bin; export PATH
    
    
  10. 次のコマンドを実行します。

    make
    
    
  11. Bourneシェルを終了します。

    exit
    
    
  12. 次のコマンドを実行します。

    make test
    
    
  13. スーパーユーザーとしてログインします。

    msu
    
    
  14. 必要な場合にはパスワードを入力します。

  15. 次のコマンドを実行します。

    make install
    

2.3.3 vsftpdのインストールおよび構成

vsftpdサーバーは、UNIXシステム用のセキュアで高速なFTPサーバーです。SolarisホストをFTPサーバーとして使用するには、vsftpdをインストールおよび構成します。

  1. 次の場所に移動します。

    ftp://vsftpd.beasts.org/users/cevans/
    
    
  2. vsftpd-2.0.3をダウンロードします(tarファイルおよび署名ファイル(.ascファイル)が必要です)。次に例を示します。

    [BINARY]     vsftpd-2.0.3.tar.gz. . . . . . . . . . .    [Mar 19 21:26]    149K
    [FILE]       vsftpd-2.0.3.tar.gz.asc. . . . . . . . .    [Mar 19 21:26]    189B
    
    
  3. gunzipを使用して次のファイルを解凍します。

    gunzip vsftpd-2.0.3.tar.gz
    
    
  4. tarファイルを解凍します。

    tar xvf vsftpd-2.0.3.tar
    
    
  5. 次の場所にディレクトリを変更します。

    cd vsftpd-2.0.3
    
    
  6. builddefs.hファイルを次のように変更します。

    #undef VSF_BUILD_SSL
    
    

    変更後

    #define VSF_BUILD_SSL
    
    
  7. スーパーユーザーとしてログインします。

    msu
    
    
  8. 必要な場合にはパスワードを入力します。

  9. /etcディレクトリに、vsftpd.confという名前のファイルを次の設定で作成します。

    # Standalone mode
    listen=YES
    max_clients=200
    max_per_ip=4
    # Access rights
    anonymous_enable=YES
    #chroot_local_user=YES
    #userlist_enable=YES
    ftp_username=ftp
    local_enable=YES
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    chown_uploads=YES
    chown_username=ftp
    # Security
    anon_world_readable_only=NO
    allow_anon_ssl=YES
    ssl_enable=YES
    connect_from_port_20=YES
    hide_ids=YES
    pasv_min_port=50000
    pasv_max_port=60000
    # Features
    ftpd_banner="Welcome to the FTP Service"
    xferlog_enable=YES
    ls_recurse_enable=NO
    ascii_download_enable=NO
    async_abor_enable=YES
    # Performance
    one_process_model=NO
    idle_session_timeout=120
    data_connection_timeout=300
    accept_timeout=60
    connect_timeout=60
    anon_max_rate=50000
    
    

    注意:

    vsftpd.confファイルのコピーが、vsftpd-2.0.3ディレクトリ構造のいくつかの場所に表示されます。 それらのファイルの1つを使用して/etcディレクトリにvsftpd.confファイルを作成する場合は、手順9で説明されているパラメータと設定のみが含まれていることを確認してください。

  10. 次のコマンドを実行します。

    mkdir /var/ftp
    useradd -d /var/ftp ftp
    chown root /var/ftp
    chmod og-w /var/ftp
    mkdir /usr/share/empty
    mkdir /usr/share/ssl
    mkdir /usr/share/ssl/certs
    
    
  11. 次のコマンドを実行します。

    openssl req -x509 -nodes -newkey rsa:1024 -keyout /usr/share/ssl/certs/vsftpd.pem -out /usr/share/ssl/certs/vsftpd.pem
    
    
  12. vsftpd-2.0.3ディレクトリからvsftpdデーモンを実行します。

    ./vsftpd
    

2.3.4 Oracleウォレットの作成

Oracle Wallet Managerは、Oracleウォレット内のセキュリティ証明書を管理および編集するためのアプリケーションです。ウォレットはパスワードで保護されたコンテナで、秘密鍵、証明書、信頼できる証明書など、SSLで強力な認証に使用される認証や署名された資格証明が格納されます。

  1. Oracle Wallet Managerで新しいウォレットを作成します。

  2. 第2.3.3項「vsftpdのインストールおよび構成」の手順11で、vsftpd.pemをこのウォレットの信頼できる証明書としてインポートします。

  3. このウォレットをPKCS # 12(.p12)形式で保存します。

Oracle Wallet Managerの使用方法の詳細は、『Oracle Application Server管理者ガイド』を参照してください。

2.3.5 FTPアダプタの設定

次のタスクを実行してFTPアダプタを設定します。

  1. Solarisホストで次のコマンドを実行します。

    mkdir /var/ftp/inDir
    mkdir /var/ftp/outDir
    chmod 777 /var/ftp/inDir /var/ftp/outDir
    
    
  2. FTPアダプタのoc4j-ra.xmlファイルにFTP接続パラメータを指定します。このファイルの場所は、選択したインストール・タイプによって異なります。 oc4j-ra.xmlファイルの場所は、表2-7を参照してください。

    次にoc4j-ra.xmlの例を示します。

    <connector-factory location="eis/Ftp/FtpAdapter" connector-name="FTP Adapter">
      <config-property name="host" value="usunnbf29.us.oracle.com"/>
      <config-property name="port" value="21"/>
      <config-property name="username" value="ftp"/>
      <config-property name="password" value="password"/>
      <config-property name="useFtps" value="true"/>
      <config-property name="walletLocation" value="D:\wallet\ewallet.p12"/>
      <config-property name="walletPassword" value="welcome1"/>
      <config-property name="channelMask" value="both"/>
      <config-property name="securePort" value="990"/>
    </connector-factory>
    
    
    パラメータ 説明
    useFtps Trueに設定します。この設定は、FTP over SSLを使用する場合に必要です。 デフォルト値はFalseです。
    walletLocation 第2.3.4項「Oracleウォレットの作成」で作成されたウォレットの場所。
    walletPassword ウォレットのパスワード。
    channelMask チャネルのタイプ。制御チャネルまたはデータ・チャネル。可能な値はbothcontroldataまたはnoneです。デフォルト値はbothです。
    securePort FTP over SSLのポート。デフォルトは990です。

  3. oc4j-ra.xmlファイルを変更したら、Oracle BPEL Serverを再起動します。

    これでセキュアFTPのインストールおよび構成が完了し、FTPアダプタでこの機能を使用する準備ができました。

2.4 FTPアダプタでのSFTPの使用

SSHファイル転送プロトコル(SFTP)は、ネットワークを介したセキュアなファイル転送を可能にするネットワーク・プロトコルです。 FTPアダプタでは、WindowsおよびLinuxでSFTP機能を使用できます。 この項では、SFTP機能の概要と、この機能のインストールおよび構成方法を説明します。

この項には、次の項目が含まれます。

2.4.1 SFTPの概要

SFTPは、クライアントが基礎となるSSHトランスポートを介してファイルを安全に転送できるようにするネットワーク・プロトコルです。 SFTPはFTP over SSHともファイル転送プロトコル(FTP)とも異なります。 図2-27に、SSHクライアントとSSHサーバーの間の通信プロセスを示します。

SFTPの機能は、次のとおりです。

2.4.1.1 暗号化

SSHプロトコルでは、暗号化に公開鍵暗号を使用します。 次のリストに、データがどのように暗号化されるかを示します。

  1. SSHサブシステムにより、Data Encryption Standard(DES)やBlowfishなどの対称鍵暗号の1つを使用してセッション鍵が生成されます。 現在、SSHプロトコルではDiffie-Hellman鍵交換アルゴリズムを使用してセッションの対称鍵が導出されています。

  2. セッション鍵を使用してデータが暗号化されます。

  3. 受信者の公開鍵を使用してセッション鍵が暗号化されます。 受信者はすでに秘密鍵を持っているため、Rivest-Shamir-Adleman(RSA)やDigital Signature Algorithm(DSA)など、必要なPKIアルゴリズムを使用してメッセージを復号化できます。

2.4.1.2 認証

本来、SSHプロトコルでは、パスワードまたはセッション鍵をネットワークでの転送時に暗号化することでパスワード認証をサポートしています。 また、SSHプロトコルでは「既知のホスト」というメカニズムを使用して、IPスプーフィングなどの脅威を防止します。 クライアントとサーバーの両方がこのメカニズムを使用することで、あらゆる種類の通信を行う前に相互にアイデンティティを証明する必要があります。

2.4.1.3 整合性

SSHプロトコルは、Message Digest Algorithm 5(MD5)やSecure Hash Algorithm(SHA-1)など、広範囲に信頼されているバルク・ハッシュ・アルゴリズムを使用することで、挿入攻撃を防止します。 第2.4.1.1項「暗号化」で説明したアルゴリズムを使用してデータ整合性チェックサムを実装することで、送信中のデータが故意に改ざんされるのを防止できます。

2.4.1.4 データ圧縮

SSHプロトコルは、オープン・ソースのプラットフォーム間データ圧縮アルゴリズムであるzlibをサポートしています。 SSHでは、ネットワーク帯域幅を低減するためにzlibを使用して通信中のデータが圧縮されます。

2.4.2 OpenSSH for Windowsのインストールと構成

OpenSSH for Windowsは、WindowsでのSSHプロトコルの無償実装です。 Windows XPでOpenSSHをインストールおよび構成するには、次の手順を実行します。

  1. Administrator権限を持つユーザーとしてログインします。

  2. 次のサイトからsetup.exeをダウンロードします。

    http://www.cygwin.com
    
    
  3. setup.exeを実行します。 「Cygwin Net Release Setup」ウィンドウが表示されます。

  4. 「Next」をクリックします。 「Choose Installation type」ウィンドウが表示されます。

  5. ダウンロード・ソースとして「Install from Internet」を選択し、「Next」をクリックします。 「Choose Installation Directory」ウィンドウが表示されます。

  6. 「Root Directory」はC:\cygwinのままにしておきます。 「Install For」および「Default Text File Type」フィールドも、デフォルト・オプションのままにしておきます。

  7. 「Next」をクリックします。 「Select Local Package Directory」ウィンドウが表示されます。

  8. 「Browse」をクリックし、ローカル・パッケージ・ディレクトリとして「C:\cygwin」を選択します。

  9. 「Next」をクリックします。 「Select Connection Type」ウィンドウが表示されます。

  10. インターネット接続の設定を選択して「Next」をクリックします。 「Choose Download Site(s)」ウィンドウが表示されます。

  11. 「Available Download Sites」リストからサイトを選択して「Next」をクリックします。 「Select Packages」ウィンドウが表示されます。

  12. 「View」をクリックして、インストール可能な全パッケージのリストを表示します。

  13. デフォルトで選択されていない場合は「openssh」を選択します。

  14. opensshの「Binaries」ボックスを選択します。

  15. 「Next」をクリックしてインストールを開始します。

  16. Windows XPデスクトップで、「マイ コンピュータ」を右クリックして「プロパティ」を選択します。

  17. 「詳細設定」タブをクリックし、「環境変数」をクリックします。

  18. 「新規」をクリックし、「変数名」フィールドにCYGWIN「変数値」フィールドにntsecと入力します。

  19. システム・パスにC:\cygwin\binを追加します。

  20. 「cygwin」ウィンドウを開きます。

  21. ssh-host-configと入力します。

  22. 次のプロンプトが表示されます。

    1. Shall privilege separation be used? (yes/no)

      yesと入力します。

    2. Shall this script create a local user 'sshd' on this machine?

      yesと入力します。

    3. Do you want to install sshd as service?

      (Say "no" if it's already installed as service) (yes/no)

      yesと入力します。

    4. Which value should the environment variable CYGWIN have when sshd starts? It's recommended to set at least "ntsec" to be able to change user context without password. Default is "binmode ntsec tty".

      ntsecと入力します。

  23. net start sshdと入力してsshdサービスを開始します。

  24. 「cygwin」ウィンドウで次のコマンドを実行して、Windowsのローカル・ユーザー・アカウントをcygwinにレプリケートします。

    mkpasswd --local > /etc/passwd
    mkgroup --local > /etc/group
    
    
  25. 設定をテストするために、「cygwin」ウィンドウにssh localhostと入力します。

2.4.3 SFTPを使用するためのFTPアダプタの設定

SFTP機能を使用するには、oc4j-ra.xmlファイルを変更する必要があります。 oc4j-ra.xmlファイルの場所は、表2-7を参照してください。

表2-11に、oc4j-ra.xmlファイルで値を指定する必要のあるパラメータを示します。 これらのパラメータの値は、認証のタイプとOpenSSHの場所に応じて異なります。

表2-11 SFTPのパラメータ

パラメータ 説明

useSftp

trueを指定します。

必須: Yes

デフォルト値: false

<config-property name="useSftp" value="false"/>

authenticationType

パスワードベース認証の場合はPASSWORD、公開鍵認証の場合はPUBLICKEYを指定します。

パスワードベース認証の場合は、oc4j-ra.xmlファイルに指定されているユーザー名とパスワードが使用されます。 oc4j-ra.xmlファイルに指定されているのと同じ名前およびパスワードを持つWindowsユーザーが存在することを確認してください。 また、ユーザーには管理権限が必要です。

公開鍵認証の場合は、privateKeyFileパラメータを秘密鍵ファイルの場所に設定する必要があります。

必須: Yes

<config-property name="authenticationType" value="password"/>

preferredKey ExchangeAlgorithm

diffie-hellman-group1-sha1またはdiffie-hellman-group-exchange-sha1を指定します。

これはオプション・パラメータであり、ユーザーはメッセージ暗号化に使用するセッション鍵を交換する際にデフォルトの鍵交換プロトコルを選択できます。

必須: No

デフォルト値: diffie-hellman-group1-sha1

<config-property name="preferredKeyExchangeAlgorithm" value="diffie-hellman-group1-sha1"/>

preferred CompressionAlgorithm

noneまたはzlibを指定します。

このパラメータにより、通信中のデータを圧縮するかどうかを選択できます。

必須: No

<config-property name="preferredCompressionAlgorithm" value="none"/>

preferred DataIntegrityAlgorithm

hmac-md5またはhmac-sha1を指定します。

このパラメータにより、データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択できます。

必須: No

デフォルト値: hmac-md5

<config-property name="preferredDataIntegrityAlgorithm" value="hmac-md5"/>

preferredPKIAlgorithm

ssh-rsaまたはssh-dsaを指定します。

このパラメータにより、通信に使用する非対称型暗号を構成できます。

必須: No

デフォルト値: ssh-rsa

<config-property name="preferredPKIAlgorithm" value="ssh-rsa"/>

privateKeyFile

秘密鍵ファイルへのパスを指定します。 authenticationTypeパラメータをPUBLICKEYに設定した場合は、このパラメータが必須です。

必須: No

<config-property name="privateKeyFile" value=""/>

preferredCipherSuite

次に示す暗号から1つ指定します。

  • twofish192-cbc

  • cast128-cbc

  • twofish256-cbc

  • aes128-cbc

  • twofish128-cbc

  • 3des-cbc

  • blowfish-cbc

  • aes256-cbc

  • aes192-cbc

必須: No

デフォルト値: blowfish-cbc

<config-property name="preferredCipherSuite" value="blowfish-cbc"/>

transportProvider

socketまたはHTTPを指定します。

SSHサーバーがファイアウォールの内側にある場合はsocketを指定します。 SSHサーバーがファイアウォールの外側にある場合、またはサーバーがHTTPサーバーを介して公開される場合は、HTTPを指定します。

HTTPを選択した場合は、次のパラメータの値を指定する必要があります。

  • proxyHost

  • proxyPort

  • proxyUser

  • proxyPassword

  • useProxy

必須: Yes

<config-property name="transportProvider" value="socket"/>


2.4.3.1 パスワード認証を使用するためのFTPアダプタの構成

FTPアダプタをパスワード認証用に設定するには、次の手順を実行します。

  1. oc4j-ra.xmlファイルで、表2-11に示したパラメータの値を指定します。 authenticationTypeパラメータがpasswordに設定されていることを確認してください。

  2. oc4j-ra.xmlファイルを変更した後、サーバーを再起動します。

次の例に、パスワード認証パラメータを指定したサンプルoc4j-ra.xmlファイルを示します。

<config-property name="useSftp" value="true"/>
<config-property name="authenticationType" value="password"/>
<config-property name="preferredKeyExchangeAlgorithm" value="diffie-hellman-group1-sha1"/>
<config-property name="preferredCompressionAlgorithm" value="none"/>
<config-property name="preferredDataIntegrityAlgorithm" value="hmac-md5"/>
<config-property name="preferredPKIAlgorithm" value="ssh-rsa"/>
<config-property name="privateKeyFile" value=""/>
<config-property name="preferredCipherSuite" value="blowfish-cbc"/>
<config-property name="transportProvider" value="socket"/>

2.4.3.2 公開鍵認証を使用するためのFTPアダプタの構成

公開鍵認証の場合は、最初にOpenSSHを構成してからFTPアダプタを設定する必要があります。 FTPアダプタの設定は、OpenSSHがファイアウォールの内側で実行されるかどうかに応じて異なります。 OpenSSHがファイアウォールの内側で実行される場合は、次の項を参照してください。

OpenSSHがファイアウォールの外側で実行される場合は、次の項を参照してください。

公開鍵認証を使用するためのOpenSSHの構成

次の手順を実行します。

  1. C:\cygwin\etcフォルダに移動します。 必要な場合は、公開鍵認証を強制するようにsshd_configファイルを構成します。 詳細は、opensshのヘルプまたはマニュアルを参照してください。

  2. C:\cygwin\binディレクトリに移動します。

  3. 次のコマンドを実行して鍵のペアを生成します。

    ssh-keygen -t rsa
    
    
  4. 鍵の保存先ファイルを求めるプロンプトに対して/etc/id_rsaと入力します。

  5. パスフレーズを入力します。

  6. パスフレーズを再入力します。

  7. /etcディレクトリに移動し、公開鍵ファイル(id_rsa.pub)と秘密鍵ファイル(id_rsa)の両方が生成されたことを確認します。

  8. 次のコマンドを実行して公開鍵ファイルのコピーを作成します。

    cp id_rsa.pub authorized_keys
    
    
  9. 秘密鍵ファイルのコピーを安全な場所(C:\my-secured-folder\など)に作成します。 FTPアダプタ構成では、この秘密鍵ファイルが参照されます。

  10. 次のコマンドを実行してOpenSSHサーバーを再起動します。

    net stop sshd
    net start sshd
    
    

OpenSSHがファイアウォールの内側で実行されている場合に公開鍵認証を使用するためのFTPアダプタの構成

FTPアダプタを公開鍵認証用に設定するには、次の手順を実行します。

  1. oc4j-ra.xmlファイルで、表2-11に示したパラメータの値を指定します。 authenticationTypeパラメータがpublickeyに、transportProviderパラメータがsocketに設定されていることを確認します。 privateKeyFileパラメータには、秘密鍵ファイルの場所が含まれている必要があります。

  2. oc4j-ra.xmlファイルを変更した後、サーバーを再起動します。

次の例に、公開鍵認証パラメータを指定したサンプルoc4j-ra.xmlファイルを示します。

<config-property name="useSftp" value="true"/>
<config-property name="authenticationType" value="publickey"/>
<config-property name="preferredKeyExchangeAlgorithm" value="diffie-hellman-group1-sha1"/>
<config-property name="preferredCompressionAlgorithm" value="none"/>
<config-property name="preferredDataIntegrityAlgorithm" value="hmac-md5"/>
<config-property name="preferredPKIAlgorithm" value="ssh-rsa"/>
<config-property name="privateKeyFile" value="C:\my-secured-folder\id_rsa"/>
<config-property name="preferredCipherSuite" value="blowfish-cbc"/>
<config-property name="transportProvider" value="socket"/>

OpenSSHがファイアウォールの外側で実行されている場合に公開鍵認証を使用するためのFTPアダプタの構成

OpenSSHがファイアウォールの外側で実行されている場合に、FTPアダプタを公開鍵認証用に設定するには、次の手順を実行します。

  1. oc4j-ra.xmlファイルで、表2-11に示したパラメータの値を指定します。 authenticationTypeパラメータがpublickeyに、transportProviderパラメータがHTTPに設定されていることを確認します。 privateKeyFileパラメータには、秘密鍵ファイルの場所が含まれています。

  2. oc4j-ra.xmlファイルに次のプロキシ関連パラメータも指定します。

    • proxyHost: プロキシ・ホスト名

    • proxyPort: プロキシのポート番号

    • proxyUsername: プロキシのユーザー名

    • proxyPassword: プロキシのパスワード

    • useProxy: プロキシを使用する場合はtrue

  3. oc4j-ra.xmlファイルを変更した後、サーバーを再起動します。

次の例に、公開鍵認証パラメータとプロキシ・パラメータを指定したサンプルoc4j-ra.xmlファイルを示します。

<config-property name="proxyHost" value="proxy.host.com"/>
<config-property name="proxyPort" value="80"/>
<config-property name="proxyUsername" value="anonymous"/>
<config-property name="proxyPassword" value="tiger@scott.com"/>
<config-property name="useProxy" value="true"/>
<config-property name="useSftp" value="true"/>
<config-property name="authenticationType" value="publickey"/>
<config-property name="preferredKeyExchangeAlgorithm" value="diffie-hellman-group1-sha1"/>
<config-property name="preferredCompressionAlgorithm" value="none"/>
<config-property name="preferredDataIntegrityAlgorithm" value="hmac-md5"/>
<config-property name="preferredPKIAlgorithm" value="ssh-rsa"/>
<config-property name="privateKeyFile" value="C:\my-secured-folder\id_rsa"/>
<config-property name="preferredCipherSuite" value="blowfish-cbc"/>
<config-property name="transportProvider" value="HTTP"/>

2.5 HTTPプロキシを使用するためのFTPアダプタの構成

FTPアダプタは、HTTPプロキシについてのみプロキシをサポートします。 HTTPプロキシ・サポートは、プレーンFTPモードおよびSFTPモードという2つのモードで使用できます。 この項では、プレーンFTPモードとSFTPモードで実行するようにFTPアダプタを構成する方法について説明します。 この項には、次の項目が含まれます。

2.5.1 プレーンFTPモード用の構成

FTPアダプタをプレーンFTPモードで実行する場合は、oc4j-ra.xmlファイルで特定のパラメータの値を指定する必要があります。 oc4j-ra.xmlファイルの場所は、表2-7を参照してください。 表2-12に、変更する必要のあるパラメータを示します。

表2-12 プレーンFTPモードのパラメータ

パラメータ 説明

host

リモートFTPサーバー名。

<config-property name="host" value="my.host.com"/>

port

FTP制御ポート番号。

<config-property name="port" value="21"/>

username

FTPユーザー名。

<config-property name="username" value="scott"/>

password

FTPパスワード。

<config-property name="password" value="password"/>

proxyHost

プロキシ・ホスト名。

<config-property name="proxyHost" value="proxy.host.com"/>

proxyPort

プロキシ・ポート番号。

<config-property name="proxyPort" value="80"/>

proxyUsername

プロキシ・ユーザー名。

<config-property name="proxyUsername" value="anonymous"/>

proxyPassword

プロキシ・パスワード。

<config-property name="proxyPassword" value="tiger@scott.com"/>

proxyType

プロキシ・タイプ。 サポートされるのはHTTPプロキシ・タイプのみです。

<config-property name="proxyType" value="http"/>

proxyDefinitionFile

プロキシ定義ファイルの絶対パス。

このパラメータはオプションです。

詳細は、第2.5.1.1項「プロキシ定義ファイル」を参照してください。

<config-property name="proxyDefinitionFile" value="c:\ proxydefinitions.xml"/>

useProxy

プロキシを使用する場合はtrueを指定します。

<config-property name="useProxy" value="true"/>


次の例にサンプルoc4j-ra.xmlファイルを示します。

<connector-factory location="eis/Ftp/FtpAdapter" connector-name="Ftp Adapter">
<config-property name="host" value="my.host.com"/><config-property name="port" value="21"/>
<config-property name="username" value="user"/>
<config-property name="password" value="password"/>
<config-property name="proxyHost" value="proxy.host.com"/>
<config-property name="proxyPort" value="80"/>
<config-property name="proxyUsername" value="anonymous"/>
<config-property name="proxyPassword" value="tiger@scott.com"/>
<config-property name="proxyType" value="http"/>
<config-property name="proxyDefinitionFile" value="c:\proxydefinitions.xml"/>
<config-property name="useProxy" value="true"/>
</connector-factory>

2.5.1.1 プロキシ定義ファイル

すべてのプロキシ固有情報をプロキシ定義ファイルで指定し、このファイルを使用するようにoc4j-ra.xmlファイルのproxyDefinitionFileパラメータでアダプタを構成できます。 プロキシ定義ファイルはXMLフォーマットで記述され、XMLスキーマに基づきます。 例2-1に、プロキシ定義ファイルのXMLスキーマを示します。 プロキシ定義ファイルは、このXMLスキーマに基づく必要があります。

例2-1 プロキシ定義ファイルのXMLスキーマ

<?xml version = \"1.0\" encoding = \"UTF-8\"?>
<schema targetNamespace = "http://ns.oracle.com/ip/af/ftp/proxy" xmlns = "http://www.w3.org/2001/XMLSchema" xmlns:proxy="http://ns.oracle.com/ip/af/ftp/proxy">

         <element name="ProxyDefinitions" type="proxy:ProxyDefinitionsType"/>              <complexType name="ProxyDefinitionsType">
                      <sequence>
                           <element name="Proxy" type="proxy:ProxyDefinition"
                            minOccurs="0" maxOccurs="unbounded"/>
                      </sequence>
              </complexType>

              <complexType name="ProxyDefinition">
                      <sequence>
                           <element name="Step" type="proxy:StepType"
                            minOccurs="1" maxOccurs="unbounded"/>
                      </sequence>
                      <attribute name="key" type="ID" use="required"/>
                      <attribute name="description" type="string"
                       use="required"/>
                      <attribute name="type" type="proxy:Protocol"
                       use="optional"/>
              </complexType>

              <complexType name="StepType">
                  <simpleContent>
                     <extension base="string">
                         <attribute name="command" type="string" use="required"/>
                         <attribute name="args" type="string" use="required"/>
                     </extension>
                  </simpleContent>
              </complexType>

               <simpleType name="Protocol">
                    <restriction base="string">
                          <enumeration value="ftp" />
                          <enumeration value="http" />
                    </restriction>
               </simpleType>
</schema>

例2-1に示したXMLスキーマに基づくサンプル・プロキシ定義ファイルは、例2-2のようになります。

例2-2 プロキシ定義ファイル

<?xml version = '1.0' standalone = 'yes'?>
<proxy:ProxyDefinitions xmlns:proxy="http://ns.oracle.com/ip/af/ftp/proxy">
<Proxy key="http" description="http" type="http">
<Step command="USER" args="remote_username" />
<Step command="PASS" args="remote_password" />
</Proxy>
</proxy:ProxyDefinitions>

例2-2のファイルを使用すると、FTPアダプタから次の一連のログイン・コマンドが送信されます。

  1. USER remote_username

  2. PASS remote_password

プロキシ定義ファイルに、oc4j-ra.xmlファイルから値を取得するように指定することもできます。 その場合は次の式を使用できます。

  • $proxy.user: oc4j-ra.xmlファイルのproxyUsernameパラメータの値に対応します。

  • $proxy.pass: oc4j-ra.xmlファイルのproxyPasswordパラメータの値に対応します。

  • $remote.user: oc4j-ra.xmlファイルのusernameパラメータの値に対応します。

  • $remote.pass: oc4j-ra.xmlファイルのpasswordパラメータの値に対応します。

  • $remote.host: oc4j-ra.xmlファイルのhostパラメータの値に対応します。

  • $remote.port: oc4j-ra.xmlファイルのportパラメータの値に対応します。

例2-3に、例2-2のXMLスキーマに基づき、oc4j-ra.xmlファイルから値を取得するサンプル・プロキシ定義ファイルを示します。

例2-3 oc4j-ra.xmlファイルから値を取得するプロキシ定義ファイル

<?xml version = '1.0' standalone = 'yes'?>
<proxy:ProxyDefinitions xmlns:proxy="http://ns.oracle.com/ip/af/ftp/proxy">
<Proxy key="http" description="http" type="http">
<Step command="USER" args="$remote.user" />
<Step command="PASS" args="$remote.pass" />
</Proxy>
</proxy:ProxyDefinitions>

2.5.2 SFTPモード用の構成

FTPアダプタをSFTPモードで実行する場合は、oc4j-ra.xmlファイルで特定のパラメータの値を指定する必要があります。 oc4j-ra.xmlファイルの場所は、表2-7を参照してください。 表2-13に、変更する必要のあるパラメータを示します。

表2-13 SFTPモードのパラメータ

パラメータ 説明

host

リモートFTPサーバー名。

<config-property name="host" value="my.host.com"/>

port

FTP制御ポート番号。

<config-property name="port" value="22"/>

username

SFTPユーザー名。

<config-property name="username" value="scott"/>

password

SFTPパスワード。

<config-property name="password" value="password"/>

proxyHost

プロキシ・サーバーのホスト名。

<config-property name="proxyHost" value="proxy.host.com"/>

proxyPort

プロキシ・ポート番号。

<config-property name="proxyPort" value="80"/>

proxyUsername

プロキシ・ユーザー名。

<config-property name="proxyUsername" value="anonymous"/>

proxyPassword

プロキシ・パスワード。

<config-property name="proxyPassword" value="tiger@scott.com"/>

useSftp

SFTPモードの場合はtrueを指定します。 SFTP機能を使用するには、この値が必須です。

<config-property name="useSftp" value="true"/>

authenticationType

PASSWORDまたはPUBLICKEY.PASSWORDを指定します。

第2.4.3項「SFTPを使用するためのFTPアダプタの設定」を参照してください。

<config-property name="authenticationType" value="password"/>

transportProvider

httpを指定します。 サポートされるのはHTTPトランスポート・プロバイダのみです。

<config-property name="transportProvider" value="http"/>


次の例にサンプルoc4j-ra.xmlファイルを示します。

<connector-factory location="eis/Ftp/FtpAdapter" connector-name="Ftp Adapter">
<config-property name="host" value="my.host.com"/>
<config-property name="port" value="22"/>
<config-property name="username" value="user"/>
<config-property name="password" value="password"/>
>config-property name="proxyHost" value="proxy.host.com"/>
<config-property name="proxyPort" value="80"/>
<config-property name="proxyUsername" value="anonymous"/>
<config-property name="proxyPassword" value="password"/>
<config-property name="useSftp" value="true"/>
<config-property name="authenticationType" value="password"/>
<config-property name="transportProvider" value="http"/>
</connector-factory>

2.6 Oracle BPEL Process ManagerでのファイルおよびFTPアダプタの使用例

Oracle BPEL Process Managerには、ファイルおよびFTPアダプタのデモが多数含まれています。そのデモのいくつかはREADMEファイルで説明されています。その他のデモはOracle BPEL Process Managerのドキュメント・セットで説明されています。この項では、これらのデモの概要と、シナリオをより詳細に説明しているマニュアルについて説明します。

この項には、次の項目が含まれます。

2.6.1 Oracle BPEL Process Managerでのファイル・アダプタの使用例

この項では、ファイル・アダプタのデモの概要を説明します。

この項には、次の項目が含まれます。

2.6.1.1 ファイルの読取り

いくつかのファイル読取りのデモを参照できます。

  • 複雑な構造のデモにより、ファイル・アダプタのファイルの読取りおよび書込み機能の使用方法が説明されます。 複雑な構造のサンプルは、次の場所にあります。

    Oracle_Home\bpel\samples\tutorials\121.FileAdapter\ComplexStructure
    
    
  • 簡単なファイル読取りのデモは、大規模なチュートリアルの一部として提供されています。このチュートリアルは、同期および非同期サービス、実行のパラレル・フロー、条件付きブランチ化ロジック、フォルト処理や例外管理、トランスフォーメーション、ファイル・アダプタ、データベース・アダプタ、ヒューマン・ワークフロー、通知およびセンサー機能など、複雑な処理の設計や実行を支援します。ファイルの読取り部分では、ファイル・アダプタを構成し、ディレクトリのファイルからインバウンドの注文リクエストを読み取ることができます。ファイル・アダプタのファイル読取り機能を取り扱うチュートリアルは、『Oracle BPEL Process Manager Order Bookingチュートリアル』を参照してください。

2.6.1.2 メッセージのデバッチ処理

このデモでは、ファイル・アダプタによる、カスタム形式で定義された複数のメッセージを含むネイティブ・データの処理方法を説明します。 ファイル・アダプタでは、2つのレコードを持つ1つのインバウンド・ファイルが取り込まれ、各レコードが独自のファイルに書き込まれます。メッセージのデバッチ処理のデモを参照するには、次の場所へ移動します。

Oracle_Home\bpel\samples\tutorials\121.FileAdapter\Debatching

2.6.1.3 デリミタ付きコンテンツ・ファイルの読取り

このデモでは、アドレス帳のCSV形式エントリの読取り、XSLTを使用したファイル・コンテンツの変換、および固定長形式ファイルへのデータの保存がファイル・アダプタでどのように行われるかを説明します。デリミタ付きコンテンツ・ファイルのデモを参照するには、次の場所へ移動します。

Oracle_Home\bpel\samples\tutorials\121.FileAdapter\FlatStructure

2.6.1.4 位置指定(固定長)コンテンツ・ファイルの読取り

このデモでは、アドレス帳のCSV形式エントリの読取り、XSLTを使用したファイル・コンテンツの変換、および固定長形式ファイルへのデータの保存がファイル・アダプタでどのように行われるかを説明します。位置指定(固定長)のデモを参照するには、次の場所へ移動します。

Oracle_Home\bpel\samples\tutorials\121.FileAdapter\FlatStructure

2.6.1.5 ファイルの書込み

簡単なファイル書込みのデモは、第2.6.1.1項「ファイルの読取り」で説明されている大規模なチュートリアルの一部として提供されています。ファイルの書込み部分では、アウトバウンドの注文通知をディレクトリのファイルに書き込むようファイル・アダプタを構成します。

ファイル・アダプタのファイル書込み機能を取り扱うデモは、『Oracle BPEL Process Manager Order Bookingチュートリアル』を参照してください。

2.6.2 Oracle BPEL Process ManagerでのFTPアダプタの使用例

このデモでは、ファイル・アダプタによる、カスタム形式で定義された複数のメッセージを含むネイティブ・データの処理方法を説明します。ネイティブ・データ・インスタンスには、請求書と注文書が含まれています。

インバウンド方向では、FTPアダプタによりリモート・ファイルが取得されて処理され、デバッチ処理のBPELプロセスに請求書と注文書が別々に公開されます。

アウトバウンド方向では、注文書のみが生成されます。デバッチ処理のBPELプロセスにより請求書が注文書に変換されます。注文レコードは単純にコピーされます。すべての注文書は、別のリモート出力ファイルに書き込まれます。FTPのデモを参照するには、次の場所へ移動します。

Oracle_Home\bpel\samples\tutorials\129.FTPAdapter\FTPDebatching

2.7 Oracle Enterprise Service BusでのファイルおよびFTPアダプタの使用例

この使用例では、Oracle Enterprise Service BusがReadFileというインバウンド・ファイル・アダプタ・サービスを介して、ファイルシステムから顧客データをテキスト・ファイルとして受信します。 ReadFileアダプタ・サービスから、ReadFile_RSというルーティング・サービスにメッセージが送信されます。 ReadFile_RSからアウトバウンド・アダプタ・サービスWriteFTPにメッセージが送信されます。 WriteFTPサービスにより、メッセージが関連外部アプリケーションに配信されます。

この使用例は、次の項で構成されています。

2.7.1 前提条件

この例は、基本的なESBコンストラクト(サービスやルーティング・サービスなど)と、ESBサービスを作成およびデプロイするOracle JDeveloper環境をよく理解していることを前提としています。

メッセージのスキーマを定義するには、address-csv.xsdファイルが必要です。 このファイルは、次のディレクトリからコピーできます。

ORAHOME\bpel\samples\tutorials\121.FileAdapter\FlatStructure

2.7.2 Oracle Enterprise Service Busのアプリケーションおよびプロジェクトの作成

使用例のアプリケーションとプロジェクトを作成するには、次の手順を実行します。

  1. Oracle JDeveloperの「アプリケーション・ナビゲータ」で、「アプリケーション」を右クリックして「新規アプリケーション」を選択します。 「アプリケーションの作成」ダイアログ・ボックスが表示されます。

  2. 「アプリケーション名」フィールドにFileFTP_RWと入力して「OK」をクリックします。 「プロジェクトの作成」ダイアログ・ボックスが表示されます。

  3. 「取消」をクリックします。

  4. 「アプリケーション」ウィンドウで、「アプリケーション」を選択して「FileFTP_RW」を右クリックします。

  5. 「新規プロジェクト」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。

  6. 「カテゴリ」から「General」「Projects」を順番に選択します。

  7. 「項目」から「ESBプロジェクト」を選択して「OK」をクリックします。 「ESBプロジェクトの作成」ダイアログ・ボックスが表示されます。

  8. 「プロジェクト名」フィールドにFileRead_FTPWriteと入力します。

  9. 「OK」をクリックします。

2.7.3 スキーマ定義(XSD)ファイルのインポート

メッセージの構造を定義するXSDファイルをインポートするには、次の手順を実行します。

  1. Schemaフォルダを作成し、このフォルダにaddress-csv.xsdファイルをコピーします。

  2. 「アプリケーション・ナビゲータ」「FileRead_FTPWrite」を選択します。

  3. 「ファイル」メニューから「インポート」を選択します。 「インポート」ダイアログ・ボックスが表示されます。

  4. 「インポートするものを選択」リストから「Webソース」を選択して「OK」をクリックします。 「Webソース」ダイアログ・ボックスが表示されます。

  5. 「コピー元」フィールドの右側にある「参照」をクリックします。 「ディレクトリの選択」ダイアログ・ボックスが表示されます。

  6. Schemaフォルダにナビゲートして「選択」をクリックします。ディレクトリが選択された状態で「Webソース」ダイアログ・ボックスが表示されます。

  7. 「OK」をクリックします。

2.7.4 インバウンド・ファイル・アダプタ・サービスの作成

ローカル・ディレクトリからファイルを読み取るインバウンド・ファイル・アダプタ・サービスを作成するには、次の手順を実行します。

  1. 「コンポーネント・パレット」から設計領域へ「ファイル・アダプタ」サービスをドラッグします。 「ファイル・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

  2. 「名前」フィールドにReadFileと入力します。

  3. 「WSDL」フィールドの横にある「アダプタ・サービスのWSDLの構成」アイコンをクリックします。 「アダプタ構成ウィザード - ようこそ」ウィンドウが表示されます。

  4. 「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。

  5. 「次へ」をクリックします。 「操作」ウィンドウが表示されます。

  6. 「Read File」を選択して「次へ」をクリックします。 「ファイル・ディレクトリ」ウィンドウが表示されます。

  7. 「物理パス」オプションを選択し、「参照」をクリックしてポーリング・ディレクトリを選択します。

  8. 「次へ」をクリックします。 「ファイルのフィルタ処理」ウィンドウが表示されます。

  9. 「処理対象ファイルの名前パターン」フィールドに*.txtと入力して「次へ」をクリックします。 「ファイル・ポーリング」ウィンドウが表示されます。

  10. 「次へ」をクリックします。 「メッセージ」ウィンドウが表示されます。

  11. 「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  12. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択します。

  13. 「OK」をクリックします。

  14. 「メッセージ」ウィンドウで「次へ」をクリックします。

  15. 「終了」をクリックします。 「ファイル・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

  16. 「OK」をクリックします。 ReadFileアダプタ・サービスとともにルーティング・サービスReadFile_RSが作成されます。

2.7.5 アウトバウンドFTPアダプタ・サービスの作成

ファイルをFTPサーバーに書き込むアウトバウンドFTPアダプタ・サービスを作成するには、次の手順を実行します。

  1. 「コンポーネント・パレット」から設計領域へ「FTPアダプタ」サービスをドラッグします。 「FTPアダプタ・サービスの作成」ダイアログ・ボックスが表示されます。

  2. 「名前」フィールドにWriteFTPと入力します。

  3. 「WSDL」フィールドの横にある「アダプタ・サービスのWSDLの構成」アイコンをクリックします。 「アダプタ構成ウィザード - ようこそ」ウィンドウが表示されます。

  4. 「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。

  5. 「次へ」をクリックします。 「FTPサーバー接続」ウィンドウが表示されます。

  6. 「FTPサーバーのJNDI名」フィールドでFTPサーバーのJNDI名を指定して「次へ」をクリックします。 「操作」ウィンドウが表示されます。

  7. ファイル・タイプとして「ASCII」オプションを選択します。

  8. 操作タイプとして「Put File」オプションを選択して「次へ」をクリックします。 「ファイル構成」ウィンドウが表示されます。

  9. 「発信ファイルのディレクトリ(物理パス)」フィールドで、ファイルの書込み先ディレクトリを指定します。

  10. 「ファイル・ネーミング規則(po_%SEQ%.txt)」フィールドで、出力ファイル名のネーミング規則を指定します。 たとえば、po_%SEQ%.txtを指定します。

  11. 「次へ」をクリックします。 「メッセージ」ウィンドウが表示されます。

  12. 「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  13. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択します。

  14. 「OK」をクリックします。

  15. 「メッセージ」ウィンドウで「次へ」をクリックします。

  16. 「終了」をクリックします。

2.7.6 ルーティング・ルールの作成

ルーティング・サービスを作成するには、次の手順を実行します。

  1. 「ReadFile_RS」ルーティング・サービスをダブルクリックします。

  2. 「ルーティング・ルール」領域で「+」アイコンをクリックします。 「ターゲット・サービス操作の参照」ダイアログ・ボックスが表示されます。

  3. 「ESB」「プロジェクトのサービス」「DefaultSystem」「WriteFTP」および「Put」を順番に選択します。

  4. 「OK」をクリックします。

  5. 「<<トランスフォーメーション・マップ>>」ボックスの横にあるアイコンをクリックします。 「リクエスト・トランスフォーメーション・マップ」ダイアログ・ボックスが表示されます。

  6. 「新規マッパー・ファイルの作成」を選択して「OK」をクリックします。

    Oracle JDeveloperに「Root_To_Root.xsl」タブが追加されます。 このタブを使用すると、ファイル・データ構造を正規のデータ構造に変換するためのドキュメント・トランスフォーメーション・ファイルをグラフィカルに作成できます。

  7. 「imp1:Address」ソース要素を「imp1:Address」ターゲット要素にドラッグ・アンド・ドロップします。 「自動マップ・プリファレンス」ダイアログ・ボックスが表示されます。

  8. 「自動マップ中」オプションで、「祖先名を考慮した要素の一致」の選択を解除します。

  9. 「OK」をクリックします。

  10. 「ファイル」メニューから「保存」を選択します。

2.7.7 Oracle Enterprise Service Busへのサービスの登録

サービスをOracle Enterprise Service Busサーバーに登録するには、次の手順を実行します。

  1. 「アプリケーション・ナビゲータ」で、「FileRead_FTPWrite」を右クリックして「ESBに登録」を選択し、「LocalIntegrationServer」をクリックします。

    次のサービスが正常に登録されたことを示すメッセージが表示されます。

    • System.WriteFTP Created

    • System.ReadFile_RS Created

    • System.ReadFile Created

  2. 「OK」をクリックします。

  3. 次のように、Oracle Enterprise Service Bus ControlコンソールでOracle Enterprise Service Bus構成を確認します。

    • 現在Oracle Enterprise Service Bus Controlコンソールを開いている場合は、次のようにします。

      「リフレッシュ」ボタンをクリックし、「ReadFile_RS」をクリックします。

    • 現在Oracle Enterprise Service Bus Controlコンソールを開いていない場合は、次のようにします。

      「スタート」「すべてのプログラム」「Oracle - Oracle_Home「Oracle ESB」「ESB Control」を順番に選択して、Oracle Enterprise Service Bus Controlコンソールを開きます。

2.7.8 実行時タスク

実行時に、テキスト・ファイルをポーリング・ディレクトリにコピーします。 ファイル・アダプタによりファイルが取得されると、設計時に指定したディレクトリに書き込まれます。