Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド 10g (10.1.3.1.0) B31889-01 |
|
![]() 戻る |
![]() 次へ |
この章では、外部サービスとして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アダプタに対して使用されます。 |
Oracle BPEL Process ManagerとOracle Enterprise Service Busには、ファイルおよびFTPアダプタが組み込まれています。 ファイルおよびFTPアダプタを使用すると、ローカル・ファイルシステムやリモート・ファイルシステムのファイルを(ファイル転送プロトコル(FTP)を使用して)BPELプロセスまたはESBサービスで交換(読取りおよび書込み)できるようになります。ファイルは、XMLとXML以外のデータ形式のどちらでもかまいません。
この項には、次の項目が含まれます。
ファイルおよびFTPアダプタを使用すると、ローカルやリモートのファイルシステムのディレクトリを操作するようにBPELプロセスまたはESBサービスを構成できます。 この項では、ファイルおよびFTPアダプタの次の機能について説明します。
ファイルおよびFTPアダプタでは、次のファイル形式の読取りおよび書込みが可能で、設計時と実行時の両方でアダプタ・トランスレータ・コンポーネントが使用されます。
ファイルおよびFTPアダプタでは、ファイル・コンテンツを不透明(Opaque)オブジェクトとして処理し、コンテンツを(変換せずに)元の形式で渡すこともできます。 不透明(Opaque)オプションでは、構造をXSDで取得できないJPGやGIFなどのバイナリ・データや、変換の不要なデータが処理されます。
トランスレータにより、様々なフォーマットのネイティブ・データからXMLへの変換を、ファイルおよびFTPアダプタで実行できるようになります。ネイティブ・データは単純な形式(フラット構造)または複雑な形式(親子関係)のいずれかです。 トランスレータでは、XMLフォーマットのデータと非XML(ネイティブ)フォーマットのデータの両方を処理できます。
FTPアダプタはSolarisおよびWindows FTPサーバーをサポートしています。 また、SolarisでFTP over SSL(FTPS)を使用することもできます。
ファイルおよびFTPアダプタでは、インバウンド方向およびアウトバウンド方向でファイルの交換が行われます。交換の方向により、ファイルおよびFTPアダプタで実行されるタスクの内容は異なります。
Oracle BPEL Process ManagerまたはOracle Enterprise Service Busに送信されるインバウンド・ファイルの場合、ファイルおよびFTPアダプタでは次の操作が実行されます。
ファイルシステムのポーリングによる一致ファイルの検索
設計時に定義されたネイティブ・スキーマ(NXSD)に基づくファイル・コンテンツの読取りおよび変換
変換済コンテンツのXMLメッセージとしての公開
ファイルおよびFTPアダプタのこの機能はファイル読取り操作と呼ばれ、この機能を提供するコンポーネントはファイル・リーダーと呼ばれます。この操作は、J2EE Connector Architecture(JCA)のインバウンド相互作用と呼ばれます。
Oracle BPEL Process ManagerまたはOracle Enterprise Service Busから送信されるアウトバウンド・ファイルの場合、ファイルおよびFTPアダプタでは次の操作が実行されます。
BPELからのメッセージの受信
設計時に指定されたXMLコンテンツの書式設定
出力ファイルの生成。 出力ファイルは、基準(経過時間、ファイル・サイズおよびメッセージ数)に基づいて作成されます。 これらの基準の組合せを出力ファイル用に指定することもできます。
ファイルおよびFTPアダプタのこの機能はファイル書込み操作と呼ばれ、この機能を提供するコンポーネントはファイル・ライターと呼ばれます。この操作は、JCAアウトバウンド相互作用と呼ばれます。
インバウンドおよびアウトバウンドの方向ごとに、ファイルおよびFTPアダプタでは一連の構成パラメータが使用されます。次に例を示します。
インバウンドのファイルおよびFTPアダプタには、入力ファイルが配置されるインバウンド・ディレクトリ用のパラメータと、ディレクトリをポーリングする頻度があります。
アウトバウンドのファイルおよびFTPアダプタには、ファイルを書き込むアウトバウンド・ディレクトリ用のパラメータと、使用するファイル・ネーミング規則があります。
ファイル・ライターには、出力ファイルの作成にいくつかの条件があります。出力ファイルは、経過時間、ファイル・サイズおよび受信したメッセージ数に基づいて作成されます。
ファイル・リーダーではポーリング規則がサポートされており、いくつかの後処理オプションが用意されています。 処理後にファイルを削除するか、移動するか、またはそのまま保持するかを指定できます。ファイル・リーダーでは、単一のメッセージとしてではなく、ファイル・コンテンツを分割してバッチで公開できます。 この機能は、ファイルおよびFTPアダプタのパフォーマンス・チューニングに使用できます。ファイル・リーダーでは、ファイルが何度も配信されることはありません。
ファイルおよびFTPアダプタの読取りと書込みの機能の詳細は、後続の項を参照してください。
ファイルに複数のメッセージがある場合には、特定数のバッチでメッセージを公開することを選択できます。これはデバッチと呼ばれます。デバッチ中、再開と同時にファイル・リーダーは、前回の実行時に中断した場所から処理するため、メッセージが重複することはありません。
ファイルおよびFTPアダプタでは、アウトバウンド・ファイルやアウトバウンド・ディレクトリの論理名または物理名を動的に指定できます。 動的なアウトバウンド・ディレクトリを指定する方法は、第2.2.2.2項「アウトバウンド・ファイル・ディレクトリの作成」を参照してください。
FTPアダプタはセキュアFTPおよびSFTPをサポートしており、ネットワークを介したセキュアなファイル転送が可能です。
詳細は、第2.3項「FTPアダプタでのセキュアFTPの使用」および第2.4項「FTPアダプタでのSFTPの使用」を参照してください。
FTPアダプタのプロキシ・サポート機能を使用すると、ファイアウォール外部のFTPサーバーやプロキシ・サーバーを介してのみアクセス可能なFTPサーバーとの間でデータを転送および取得できます。 プロキシ・サーバーにより、イントラネット上のホストからインターネット上のホストに間接的に接続できます。 図2-1に、プロキシ・サーバーが接続を作成してクライアントとリモートFTPサーバーとの直接接続をシミュレートする様子を示します。
HTTPプロキシ機能を使用するには、プロキシ・サーバーでHTTP接続を介したFTP通信量をサポートしている必要があります。 また、この機能でサポートされるのはパッシブ・データ接続のみです。 FTPアダプタの構成方法は、第2.5項「HTTPプロキシを使用するためのFTPアダプタの構成」を参照してください。
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>
ファイルおよびFTPアダプタは、インバウンド・アダプタのエンドポイントのアクティブ化の制御に使用可能なファイルベースのトリガーをサポートしています。 ファイルベースのトリガーの使用方法は、第2.2.1.4項「ファイル・ポーリング」を参照してください。
ファイルおよびFTPアダプタは、Oracle BPEL Process Managerでのアクティブ/パッシブ・トポロジに対する高可用性機能をサポートしています。 この機能を使用できるようにファイルおよびFTPアダプタを構成するには、次の手順を実行します。
高可用性ファイルシステムに共有フォルダを作成します。 このフォルダには書込み権限を設定し、ファイルおよびFTPアダプタを実行する全システムからアクセス可能にする必要があります。
ORAHOME
\bpel\system\service\config
ディレクトリにあるpc.properties
ファイルを開きます。
oracle.tip.adapter.file.controldirpath
を共有フォルダ名またはUNCパスに設定します。
次に例を示します。
oracle.tip.adapter.file.controldirpath := Z:\\myshare または oracle.tip.adapter.file.controldirpath := \\Myserver\Mydirectory
Oracle BPEL Process Managerサーバーを再起動します。
ファイルおよびFTPアダプタはJCA 1.5アーキテクチャに基づいています。JCAでは、異機種間のエンタープライズ情報システム(EIS)の統合に標準アーキテクチャを提供します。ファイルおよびFTPアダプタのアダプタ・フレームワークでは、基盤となるJCA相互作用がOracle BPEL Process Manager統合のサービス(JCAバインディングを使用したWSDL)として公開されています。 OracleAS Adapterのアーキテクチャの詳細は、『Oracle Application Server Adapter概要』を参照してください。
ファイルおよび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についてサポートされている操作
操作 | 参照先 |
---|---|
ファイル・アダプタ |
- |
|
第2.2.1項「ファイル・アダプタのRead Fileの説明」 |
|
第2.2.2項「ファイル・アダプタのWrite Fileの説明」 |
FTPアダプタ |
- |
|
|
|
|
OracleAS AdapterとOracle BPEL Process Managerの統合の詳細は、『Oracle Application Server Adapter概要』を参照してください。
ファイルおよびFTPアダプタは、自動的にOracle Enterprise Service Busと統合されます。JDeveloper ESB DesignerでファイルまたはFTPアダプタ・サービスを作成すると、図1-2に示すように「アダプタ構成ウィザード」が起動します。
このウィザードでファイルおよびFTPアダプタを選択して構成できます。 構成が完了すると、Oracle JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。
「アダプタ構成ウィザード」の「操作」ウィンドウで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のウィンドウが表示され、構成情報の入力を求められます。 表2-2に実行可能な操作をリスト表示し、指定する必要のある構成情報が説明されている項を示します。
表2-2 Oracle Enterprise Service Busについてサポートされている操作
操作 | 参照先 |
---|---|
ファイル・アダプタ |
- |
|
第2.2.1項「ファイル・アダプタのRead Fileの説明」 |
|
第2.2.2項「ファイル・アダプタのWrite Fileの説明」 |
FTPアダプタ |
- |
|
|
|
|
OracleAS AdapterとOracle Enterprise Service Busの統合の詳細は、『Oracle Application Server Adapter概要』を参照してください。
この項には、次の項目が含まれます。
インバウンド方向では、ファイル・アダプタにより、ファイルシステムからのファイルのポーリングおよび読取りが行われて処理されます。この項では、ファイル・アダプタのインバウンド・ファイル読取り機能の概要を説明します。 BPELプロセスまたはESBサービスでファイル・アダプタを使用するよう構成するには、「アダプタ構成ウィザード」を使用します。これにより、アダプタ構成ウィザードで指定するサービス名と同一のインバウンドWSDLファイルが作成されます。fileAdapterInboundheader.wsdl
という名前のインバウンド・ヘッダー・ファイルも作成されます。
この項には、次の項目が含まれます。
ファイル・アダプタを使用したインバウンド操作では、図2-2に示すように「Read File」操作を選択します。
図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-5に示す「エンドポイント・プロパティの選択」ダイアログ・ボックスが表示されます。
「InputFileDir」プロパティを選択して「OK」をクリックします。 これで、図2-6のように「値」フィールドで物理ディレクトリ名を指定できます。
正常に処理されたファイルのアーカイブ
このオプションでは、正常に処理されたファイルを配置するディレクトリを指定できます。また、アーカイブ・ディレクトリを論理名として指定できます。 この場合は、「Oracle BPEL Process Managerでのインバウンドの物理または論理ディレクトリ・パスの指定」および「Oracle Enterprise Service Busでのインバウンドの物理または論理ディレクトリ・パスの指定」で説明されている論理ディレクトリから物理ディレクトリへのマッピングを行う必要があります。
取得後のファイルの削除
このオプションでは、ファイルを正常な取得後に削除するかどうかを指定できます。このチェック・ボックスが選択されていない場合、処理済のファイルはインバウンド・ディレクトリに残りますが無視されます。最後に処理されたファイルより更新日が新しいファイルのみが取得されます。 処理済のファイルと同じ名前で更新日が古いままのファイルをインバウンド・ディレクトリに配置した場合、そのファイルは取得されません。
図2-7に示す「アダプタ構成ウィザード」の「ファイルのフィルタ処理」ウィンドウでは、取得または無視するファイルの詳細を指定できます。
ファイル・アダプタは、インバウンド方向のファイル・リスナーとして機能します。ファイル・アダプタにより、ローカルまたはリモートのファイルシステム上の指定したディレクトリがポーリングされ、指定したネーミング基準に一致するファイルが検索されます。
次の項では、指定するファイル・フィルタ処理情報について説明します。
ネーミング・パターンの指定
ファイル・アダプタがインバウンド・ファイルのポーリングに使用するネーミング規則を指定します。また、処理対象外にするファイルのネーミング規則も指定できます。2つのネーミング規則を選択できます。ファイル・アダプタにより、インバウンド・ディレクトリに配置されるファイルが検索されます。
ファイル・ワイルドカード(po*.txt
)
po
で始まり.txt
で終わるすべてのファイルが取得されます。この規則はWindowsオペレーティング・システムの標準に準拠しています。
正規表現(po.*\\.txt
)
po
で始まり.txt
で終わるすべてのファイルが取得されます。この規則は、Java Development Kit(JDK)の正規表現(regex)構文に準拠しています。
注意:
|
処理対象ファイルと処理対象外ファイル
正規表現を使用する場合、「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドで指定する値は、JDKの正規表現(regex)構文に準拠している必要があります。どちらのフィールドにも、異なるregexパターンを別々に指定する必要があります。 「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドは、インバウンドWSDLファイルのIncludeFiles
およびExcludeFiles
パラメータにそれぞれ対応しています。
注意: regexパターンはJDK regexパターンに準拠しています。JDK regexパターンに準じると、任意の文字列が任意の回数発生するパターンの正しいコノテーションはピリオドとプラス記号です(.+ )。JDK regexでは、アスタリスク(*)は任意の文字が任意の回数発生する文字列のプレースホルダではありません。 |
拡張子がtxt
でpo
で始まるすべてのファイル名を取得するインバウンドのファイル・アダプタが必要で、名前パターンが正規表現の場合には、「処理対象ファイルの名前パターン」フィールドにpo.*\.txt
と指定する必要があります。次にこのregexパターンの例で使用された記号の意味を示します。
ピリオド(.
)は任意の文字を表します。
アスタリスク(*
)は任意の発生数を表します。
ピリオドが続くバックスラッシュ(\.)は、エスケープ文字のバックスラッシュで示されているように、文字としてのピリオド(.)を表します。
「処理対象外ファイルの名前パターン」フィールドも同様に構成されています。
「処理対象ファイルの名前パターン」および「処理対象外ファイルの名前パターン」フィールドに部分的に重複する正規表現を入力した場合、処理対象外ファイルの正規表現が優先されます。 たとえば、「処理対象ファイルの名前パターン」がabc*.txt
で、「処理対象外ファイルの名前パターン」がabcd*.txt
に設定されている場合、abcd*
で始まる任意のファイルが取得されます。
表2-3にJava regex構文の詳細を示します。
注意: JDK regexのパターン名を、+ 、? または* で始めることはできません。 |
一致対象 | 構文 |
---|---|
文字 |
- |
文字 |
|
バックスラッシュ文字 |
|
8進数値 |
|
8進数値 |
|
8進数値 |
|
16進数値 |
|
16進数値 |
|
タブ文字 |
|
改行文字 |
|
キャリッジ・リターン文字 |
|
用紙送り文字 |
|
警告(ベル)文字 |
|
エスケープ文字 |
|
|
|
- |
- |
文字クラス |
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
- |
定義済の文字クラス |
- |
任意の文字(行の終了文字と一致する場合もある) |
- |
数字: |
|
数字以外: |
|
空白文字: |
|
空白文字以外: |
|
単語文字: |
|
単語以外の文字: |
|
最長一致数量子 |
- |
|
|
|
|
|
|
|
|
|
|
|
|
Java regex構文の詳細は、次のサイトを参照してください。
http://java.sun.com/j2se/1.4.2/docs/api
複数のインバウンド・メッセージのデバッチ処理
2つ以上のメッセージが含まれるファイルを着信するかどうかを選択し、公開する1つのバッチ・ファイルに含まれるメッセージ数を指定できます。ファイルに複数のメッセージがありチェック・ボックスが選択されている場合は、デバッチ処理が行われます。デバッチ処理が行われないのは、ファイルのメッセージが1つのみでチェック・ボックスが選択されていない場合です。 入力ファイルがXMLフォーマットの場合、デバッチ処理はサポートされません。
図2-8に示す「アダプタ構成ウィザード」の「ファイル・ポーリング」ウィンドウでは、次に示すインバウンド・ポーリング・パラメータを指定できます。
新しいファイルを取得するためにインバウンド・ディレクトリをポーリングする頻度。
取得するファイルの最短経過時間。たとえば、これにより、大きなファイルが処理用に取得される前に、ディレクトリに完全にコピーできるようになります。経過時間は最終更新時のタイムスタンプで決定されます。 たとえば、ファイルの書込みに3分から4分かかることがわかっている場合は、最短経過時間を5分に設定します。 入力ディレクトリでファイルが検出されても、更新時間から5分経過していない場合、まだ書込みが行われている可能性があるためファイルは取得されません。
トリガー・ファイルの使用
デフォルトでは、エンドポイントがアクティブ化されると、インバウンドのファイルおよびFTPアダプタによるポーリングが開始されます。 ただし、より厳密にポーリングを制御する場合は、ファイルベースのトリガーを使用できます。 ファイルおよびFTPアダプタでは、指定のトリガー・ファイルがローカル・ディレクトリまたはリモート・ディレクトリで検出されると、そのファイルのポーリングがインバウンド・ディレクトリ内で開始されます。
たとえば、BPELプロセスがファイルをInOut
ディレクトリに書込み中であるとします。 第2のBPELプロセスは、同じディレクトリでファイルをポーリングしています。 第1のプロセスによる全ファイルの書込みが完了した後でのみ、第2のプロセスによるディレクトリのポーリングを開始する場合は、トリガー・ファイルを使用できます。 第1のプロセスを、最後にトリガー・ファイルを作成するように構成できます。 第2のプロセスは、トリガー・ファイルを検出するとインバウンド・ディレクトリのポーリングを開始します。
トリガー・ファイル・ディレクトリは、インバウンドのポーリング・ディレクトリと同一でなくてもかまいません。 ただし、トリガー・ファイル・ディレクトリとインバウンドのポーリング・ディレクトリが同一の場合は、図2-7に示した「アダプタ構成ウィザード」ウィンドウで指定したファイル・フィルタとは異なるトリガー・ファイル名を指定する必要があります。
トリガー・ファイルの内容が読み取られることはないため、インバウンドのreceiveアクティビティのペイロードとして使用しないでください。
表2-4に、インバウンド・サービスのWSDLファイルに指定する必要のあるパラメータを示します。
表2-4 トリガー・ファイルのパラメータ
パラメータ | 説明 | 例 |
---|---|---|
または
|
ファイルおよびFTPアダプタがトリガー・ファイルを検索するディレクトリの物理名または論理名。
|
|
|
トリガー・ファイル名。 |
|
次の例にサンプル・インバウンド・サービス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アダプタは、エンドポイントがアクティブ化されるたびにトリガー・ファイル・ディレクトリ内でトリガー・ファイルを検索します。 |
ファイル・アダプタにより、処理用のファイルが準備され、アダプタ・トランスレータに配信されて、トランスレーションと(必要な場合は)デバッチ処理が行われます。
処理対象のインバウンド・ファイルが多い場合や、サイズが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 Enterprise Service Bus on Oracle Application Server Middle tier |
|
Oracle BPEL Process Manager on Oracle Application Server Middle tier |
|
ファイル・アダプタではいくつかの後処理オプションをサポートしています。 ファイルの処理後、図2-8の「ファイル・ポーリング」ウィンドウで指定した場合はファイルが削除されます。 また、図2-3の「ファイル・ディレクトリ」ウィンドウで指定した場合は、完了(アーカイブ)ディレクトリにファイルを移動することもできます。
次に表示される「アダプタ構成ウィザード」のウィンドウは、図2-9の「メッセージ」ウィンドウです。このウィンドウでは、トランスレーション用のXSDスキーマ・ファイルを選択できます。
ネイティブ・フォーマット・トランスレーションが不要な場合(JPGまたはGIF画像を処理中の場合など)は、「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」チェック・ボックスを選択します。ファイルはBase64エンコーディングで渡されます。
トランスレーションにはXSDファイルが必要です。 新しいスキーマの定義、または既存のデータ型定義(DTD)やCOBOLコピーブックの変換を行う場合は、「ネイティブ・フォーマットのスキーマの定義」を選択します。これにより、ネイティブ・フォーマット・ビルダー・ウィザードが起動されます。このウィザードは、カンマ区切り値(CSV)、固定長、DTDおよびCOBOLコピーブックなどのファイル形式を使用したネイティブ・スキーマ・ファイルの作成を支援します。 ネイティブ・スキーマ・ファイルの作成後、「スキーマ・ファイルのURL」および「スキーマ要素」フィールドが入力された「メッセージ」ウィンドウが表示されます。詳細は、第7.1項「ネイティブ・フォーマット・ビルダー・ウィザードを使用したネイティブ・スキーマ・ファイルの作成」を参照してください。
ファイル・アダプタには、インバウンド・エラー処理機能がいくつかあります。
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
fatalErrorFailoverProcessプロパティ
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=""">
</xsd:element>
<xsd:element name="Designation" type="xsd:string"
nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy=""">
</xsd:element>
<xsd:element name="Car" type="xsd:string" nxsd:style="terminated"
nxsd:terminatedBy="," nxsd:quotedBy=""">
</xsd:element>
<xsd:element name="Labtop" type="xsd:string"
nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy=""">
</xsd:element>
<xsd:element name="Location" type="xsd:string"
nxsd:style="terminated" nxsd:terminatedBy=","
nxsd:quotedBy=""">
</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
Oracle BPEL Process Managerの場合、ファイルおよびFTPアダプタではインバウンド・ファイルが何度も配信されることはありません。FTPを介した大きなファイルの配信も保証されています。 なんらかの原因でシステムが停止しても、再起動時のファイル・アダプタの読取り機能により重複するメッセージの作成が回避されます。
デバッチ処理の場合、ファイルおよびFTPアダプタでは処理対象ファイルの行、列またはバイト位置が内部に格納され、BPELサーバーに障害が発生するとファイルおよびFTPアダプタにより中断した位置から読取りが開始されます。 FTPサーバーに障害が発生すると、インバウンド・アダプタがエラー・リカバリ・モードになり、サーバーが再起動されたかどうかが定期的にチェックされます。
FTPアダプタでは、デバッチ処理中でなければ、処理対象のファイルはFTPサーバーから取得されてOracle BPEL Process Managerに公開された後にのみ削除されます。 障害が発生すると、ファイルは拒否されるか削除されないかのいずれかになります。 ファイルが拒否された場合は、「rejectedMessageHandlersプロパティ」および「デフォルトのエラー・ディレクトリ」で説明したデフォルトまたはユーザー指定の拒否されたファイルのディレクトリに格納されます。 ただし、ファイルが削除されない場合は、サーバーの再起動時に再び取得されます。
インバウンド・メッセージの処理中にシステム・サーバーが停止した場合、すべてのメッセージ・レコードを確実にリカバリするには、サーバーの再起動時に手動でリカバリを実行する必要があります。 たとえば、ファイルに10のメッセージがあり、メッセージが3つ処理された後にサーバーが停止したとします。そのため、4番目のメッセージは配信されません。サーバーが再起動されて5番目のメッセージ(最後に正常に拒否されたメッセージのオフセット)の処理が開始されたときに、4番目のメッセージを手動でリカバリしてすべてのメッセージを保持する必要があります。
拒否されたメッセージ・レコードをリカバリするには、次の手順を実行します。
Oracle BPEL Controlにログインします。
「BPELプロセス」タブをクリックします。
「関連タスク」セクションの「手動リカバリの実行」をクリックします。
「リカバリ」をクリックします。
ファイル・アダプタの構成が終了すると、インバウンド方向に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.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のように「ヘルプ」をクリックします。
アウトバウンド方向では、ファイル・アダプタによりBPELプロセスまたはESBサービスからのメッセージが受信され、ファイルシステムのファイルに書き込まれます。この項では、ファイル・アダプタのアウトバウンド・ファイル書込み機能の概要を説明します。 BPELプロセスまたはESBサービスでファイル・アダプタを使用するよう構成するには、「アダプタ構成ウィザード」を使用します。これにより、アダプタ構成ウィザードで指定するサービス名と同一のアウトバウンドWSDLファイルが作成されます。fileAdapterOutboundheader.wsdl
という名前のアウトバウンド・ヘッダー・ファイルも作成されます。
この項には、次の項目が含まれます。
ファイル・アダプタを使用したアウトバウンド操作では、「Write File」操作を選択します。 図2-13にこの選択内容を示します。
アウトバウンド操作では、アウトバウンド・ディレクトリ、使用するアウトバウンド・ファイル・ネーミング規則、および必要な場合は使用するバッチ・ファイル規則も指定できます。
図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>
Oracle Enterprise Service Busでのアウトバウンドの物理または論理ディレクトリ・パスの指定
Oracle Enterprise Service Busでは、アウトバウンドのディレクトリ名を物理パスまたは論理パスとして指定できます。物理パスはc:\inputDir
などの値です。
図2-3に示す「ファイル・ディレクトリ」ウィンドウで設計時に論理名を指定し、「エンドポイント・プロパティ」で論理および物理マッピングを指定できます。 たとえば、WriteFile
はアウトバウンド・アダプタ・サービスです。 設計時には、論理ディレクトリ名としてOutDir
を指定しています。 「アダプタ構成ウィザード」を完了してWriteFile_esbsvc
ファイルをクリックすると、図2-4のようなアウトバウンド・ファイル・アダプタのウィンドウが表示されます。
「エンドポイント・プロパティ」セクションで「+」記号をクリックすると、図2-5に示す「エンドポイント・プロパティの選択」ダイアログ・ボックスが表示されます。
「OutDir」プロパティを選択して「OK」をクリックします。 これで、図2-6のように「値」フィールドで物理ディレクトリ名を指定できます。
動的なアウトバウンド・ディレクトリ名の指定
アウトバウンド操作の場合は、動的なアウトバウンド・ディレクトリ名を指定できます。 次の例に示すように、fileAdapterOutboundHeader.wsdl
のdirectory
パラメータを使用し、変数を使用して動的なアウトバウンド・ディレクトリ名を指定できます。
<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
の変数を作成して値を割り当てます。 手順は次のとおりです。
invokeアクティビティをダブルクリックします。
「アダプタ」タブをクリックします。
「変数の参照」アイコンをクリックします。
「変数の選択」ダイアログ・ボックスで「オブジェクトの作成」アイコンをクリックします。
図2-18の「変数の作成」ダイアログ・ボックスで、「メッセージ・タイプ」を選択して「メッセージ・タイプの参照」アイコンをクリックします。
図2-19のように「OutboundHeader_msg」を選択し、「OK」を数回クリックしてinvokeアクティビティのダイアログ・ボックスを終了します。
assignアクティビティをダブルクリックし、「コピー操作」タブをクリックします。
「作成」と「コピー操作」を順番にクリックします。
「コピー操作の作成」ダイアログ・ボックスでは変数または式を選択できます。 式の場合は、図2-20のように、「タイプ」から「式」を選択してディレクトリ名とパスを指定します。 このディレクトリに出力ファイルが書き込まれます。
「OK」を数回クリックしてassignアクティビティのダイアログ・ボックスを終了します。
注意: 動的ディレクトリを使用する場合は、NumberMessages 、ElapsedTime および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のパターン文字
文字 | 日付または時間コンポーネント | 表示内容 | 例 |
---|---|---|---|
|
紀元 |
テキスト |
|
|
年 |
年 |
|
|
年における月 |
月 |
|
|
年における週 |
数値 |
|
|
月における週 |
数値 |
|
|
年における日 |
数値 |
|
|
月における日 |
数値 |
|
|
月における曜日 |
数値 |
|
|
週における日 |
テキスト |
|
|
午前/午後 |
テキスト |
|
|
1日における時間(0-23) |
数値 |
|
|
1日における時間(1-24) |
数値 |
|
|
午前/午後における時間(0-11) |
数値 |
|
|
午前/午後における時間(1-12) |
数値 |
|
|
1時間における分 |
数値 |
|
|
1分における秒 |
数値 |
|
|
ミリ秒 |
数値 |
|
|
タイムゾーン |
一般的なタイムゾーン |
|
|
タイムゾーン |
RFC 822タイムゾーン |
|
次にパターンの異なる表示内容を示します。
テキスト
書式設定において、パターン文字が4文字以上の場合は、完全な表記が使用されます。それ以外の場合、可能であれば、省略表記が使用されます。解析では、パターン文字の数にかかわらず、どちらの表記も使用できます。
数値
書式設定において、パターン文字の数は最小桁数になり、これに満たない場合は最小桁数まで0が表示されます。解析において、2つの隣接したフィールドを区別する必要がない場合、パターン文字の数は無視されます。
年
書式設定において、パターン文字が2文字の場合は、年は2桁に切り捨てられます。それ以外の場合は数値として解釈されます。
解析において、パターン文字が3文字以上の場合は、桁数にかかわらず、年は文字どおりに解釈されます。パターンMM/dd/yyyy
を使用すると、01/11/12
はJan 11, 12 A.D.
と解析されます。
年のパターンが省略されている(y
またはyy
)解析において、省略された年は複数の世紀に対して解釈されます。日付は、時間インスタンス作成の80年前から20年後までの間の日付に調整されます。たとえば、パターンMM/dd/yy
を使用してJan 1, 1997
を作成した場合、文字列05/04/64
がMay 4, 1964
と解釈される一方で、文字列01/11/12
はJan 11, 2012
と解釈されます。解析中、数字が2つ含まれる文字列のみがデフォルトの世紀に解析されます。1桁の文字列、3桁以上の文字列またはすべてが数字ではない2桁の文字列(たとえば-1
)など、それ以外の数値文字列は文字どおりに解釈されます。そのため、01/02/3
または01/02/003
は、同じパターンを使用してJan 2, 3 AD
と解析されます。また、01/02/-3
はJan 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
Hours
は0
から23
の間で、Minutes
は00
から59
の間です。書式設定はロケールに依存せず、数字はUnicode標準のBasic Latinブロックから取得する必要があります。
解析では、RFC 822タイムゾーンも使用できます。
書式設定では、RFC 822の4桁のタイムゾーンが使用されます。
RFC822TimeZone:
Sign TwoDigitHours Minutes
TwoDigitHours:
Digit Digit
TwoDigitHours
は00
から23
の間である必要があります。その他の定義は、一般的なタイムゾーンと同じです。
解析では、一般的なタイムゾーンも使用できます。
動的なアウトバウンド・ファイル名の指定
fileAdapterOutboundHeader.wsdl
のOutboundHeader_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-21の「メッセージ」ウィンドウです。このウィンドウでは、トランスレーション用のXSDスキーマ・ファイルを選択できます。
インバウンド方向のスキーマの指定と同様に、このウィンドウでは次のタスクを実行できます。
ネイティブ・フォーマット・トランスレーションの要不要の指定
トランスレーション用のXSDスキーマ・ファイルの選択
CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動
「メッセージ」ウィンドウの詳細は、第2.2.1.7項「ネイティブ・データ・トランスレーション」を参照してください。
インバウンド・ファイルと同様に、アウトバウンド・ファイルも何度も配信されることはありません。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
アダプタ構成ウィザードを使用したファイル・アダプタの構成が終了すると、アウトバウンド方向に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
で必須ではありません。 デフォルト値は1000
KBです。
FileNamingConvention
これは、アウトバウンドのWrite
操作ファイルのネーミング規則用のパラメータです。パラメータ・タイプはString
で必須です。
第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>
インバウンド方向では、FTPアダプタがファイル・アダプタのRead File操作と同じ機能を果し、ファイルシステムからファイルのポーリングおよび取得を行い処理します。主な違いは、FTPアダプタがリモートでのファイル交換に使用されることです。 このため、図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 Enterprise Service Bus on Oracle Application Server Middle tier |
|
Oracle BPEL Process Manager on Oracle Application Server Middle tier |
|
<?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
として、ホスト、ポート、ユーザー名およびパスワードなどの接続情報は構成プロパティとして指定されます。
ログイン後、Get File(読取り)操作と配信するファイル・タイプを選択します。 図2-23にこの選択内容を示します。
インバウンドおよびアウトバウンドのファイル転送では、ra.xml
ファイルにserverType
プロパティが含まれます。 ra.xml
ファイルの場所は、インストール・タイプに応じて異なります。 表2-8に、インストール・タイプおよび対応するra.xml
ファイルの場所を示します。
表2-8 ra.xmlファイルの場所
インストール・タイプ | ファイルの場所 |
---|---|
SOA Basic Installation |
|
Oracle Enterprise Service Bus on Oracle Application Server Middle tier |
|
Oracle BPEL Process Manager on Oracle Application Server Middle tier |
|
serverType
プロパティは、データ転送時に行セパレータを判別するために自動的に使用されます。 プロパティ値としてunix
、win
または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-8) |
|
メッセージ(図2-9) |
第2.2.1.7項「ネイティブ・データ・トランスレーション」 |
上級ユーザーは、その他のアダプタ構成ウィザードのウィンドウを使用することもできます。 それが図2-24のウィンドウで、図2-8に表示されている「ファイル・ポーリング」ウィンドウにおいて、次に示すいずれか、あるいは両方の選択を行った後にのみ表示されます。
「正常な取得後にファイルを削除」チェック・ボックスの選択を解除
「ファイルの最小経過時間」フィールドの値を0より大きな値に設定
このウィンドウでは、リモート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項「保証付き配信およびサーバー障害からのリカバリ」を参照してください。
アウトバウンド方向では、FTPアダプタはファイル・アダプタのWrite File操作と同じ機能を果します。 BPELプロセスまたはESBサービスからメッセージを受信し、ファイル内のメッセージをファイルシステム(この場合はリモート)に書き込みます。 このため、図2-22に示すように、「アダプタ構成ウィザード」ではアダプタ・インスタンスJNDI名でFTPサーバーに接続するよう求められます。
ログイン後、Put File(書込み)操作と配信するファイル・タイプを選択します。 図2-25にこの選択内容を示します。
これ以降の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項「アウトバウンド・エラー処理」を参照してください。
FTPアダプタでは、SolarisでセキュアFTP機能を使用できます。この項では、セキュアFTP機能の概要と、この機能のインストールおよび構成方法を説明します。
この項には、次の項目が含まれます。
注意: FTPアダプタでは、Solarisでのみセキュア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のインストールおよび構成方法を説明します。
OpenSSLは、SSLプロトコルのオープン・ソースの実装です。OpenSSLは基本的な暗号機能を実装し、ユーティリティ関数を提供します。SolarisホストをFTPサーバーとして使用するには、OpenSSLをインストールおよび構成します。
次のURLに移動します。
http://www.openssl.org/source
使用可能なファイルのリストでopenssl-0.9.7g.tar.gz
を検索します。次に例を示します。
3132217 Apr 11 17:21:51 2005 openssl-0.9.7g.tar.gz (MD5) (PGP sign)
次のファイルをダウンロードします。
openssl-0.9.7g.tar.gz
openssl-0.9.7g.tar.gz.md5(MD5
リンクの先)
openssl-0.9.7g.tar.gz.asc(PGP sign
リンクの先)
gunzip
を使用して次のファイルを解凍します。
gunzip openssl-0.9.7g.tar.gz
次のtarファイルを解凍します。
tar xvf openssl-0.9.7g.tar
次の場所にディレクトリを変更します。
cd openssl-0.9.7g
次のコマンドを実行します。
./config --prefix=/usr --openssldir=/usr/local/openssl
Bourneシェルに変更します(まだ使用していない場合)。
sh
PATH
を構成およびエクスポートします。
PATH=${PATH}:/usr/ccs/bin; export PATH
次のコマンドを実行します。
make
Bourneシェルを終了します。
exit
次のコマンドを実行します。
make test
スーパーユーザーとしてログインします。
msu
必要な場合にはパスワードを入力します。
次のコマンドを実行します。
make install
vsftpdサーバーは、UNIXシステム用のセキュアで高速なFTPサーバーです。SolarisホストをFTPサーバーとして使用するには、vsftpdをインストールおよび構成します。
次の場所に移動します。
ftp://vsftpd.beasts.org/users/cevans/
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
gunzip
を使用して次のファイルを解凍します。
gunzip vsftpd-2.0.3.tar.gz
tarファイルを解凍します。
tar xvf vsftpd-2.0.3.tar
次の場所にディレクトリを変更します。
cd vsftpd-2.0.3
builddefs.h
ファイルを次のように変更します。
#undef VSF_BUILD_SSL
変更後
#define VSF_BUILD_SSL
スーパーユーザーとしてログインします。
msu
必要な場合にはパスワードを入力します。
/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で説明されているパラメータと設定のみが含まれていることを確認してください。 |
次のコマンドを実行します。
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
次のコマンドを実行します。
openssl req -x509 -nodes -newkey rsa:1024 -keyout /usr/share/ssl/certs/vsftpd.pem -out /usr/share/ssl/certs/vsftpd.pem
vsftpd-2.0.3
ディレクトリからvsftpd
デーモンを実行します。
./vsftpd
Oracle Wallet Managerは、Oracleウォレット内のセキュリティ証明書を管理および編集するためのアプリケーションです。ウォレットはパスワードで保護されたコンテナで、秘密鍵、証明書、信頼できる証明書など、SSLで強力な認証に使用される認証や署名された資格証明が格納されます。
Oracle Wallet Managerで新しいウォレットを作成します。
第2.3.3項「vsftpdのインストールおよび構成」の手順11で、vsftpd.pem
をこのウォレットの信頼できる証明書としてインポートします。
このウォレットをPKCS # 12(.p12
)形式で保存します。
Oracle Wallet Managerの使用方法の詳細は、『Oracle Application Server管理者ガイド』を参照してください。
次のタスクを実行してFTPアダプタを設定します。
Solarisホストで次のコマンドを実行します。
mkdir /var/ftp/inDir mkdir /var/ftp/outDir chmod 777 /var/ftp/inDir /var/ftp/outDir
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 |
チャネルのタイプ。制御チャネルまたはデータ・チャネル。可能な値はboth 、control 、data またはnone です。デフォルト値はboth です。 |
securePort |
FTP over SSLのポート。デフォルトは990 です。 |
oc4j-ra.xml
ファイルを変更したら、Oracle BPEL Serverを再起動します。
これでセキュアFTPのインストールおよび構成が完了し、FTPアダプタでこの機能を使用する準備ができました。
SSHファイル転送プロトコル(SFTP)は、ネットワークを介したセキュアなファイル転送を可能にするネットワーク・プロトコルです。 FTPアダプタでは、WindowsおよびLinuxでSFTP機能を使用できます。 この項では、SFTP機能の概要と、この機能のインストールおよび構成方法を説明します。
この項には、次の項目が含まれます。
SFTPは、クライアントが基礎となるSSHトランスポートを介してファイルを安全に転送できるようにするネットワーク・プロトコルです。 SFTPはFTP over SSHともファイル転送プロトコル(FTP)とも異なります。 図2-27に、SSHクライアントとSSHサーバーの間の通信プロセスを示します。
SFTPの機能は、次のとおりです。
SSHプロトコルでは、暗号化に公開鍵暗号を使用します。 次のリストに、データがどのように暗号化されるかを示します。
SSHサブシステムにより、Data Encryption Standard(DES)やBlowfishなどの対称鍵暗号の1つを使用してセッション鍵が生成されます。 現在、SSHプロトコルではDiffie-Hellman鍵交換アルゴリズムを使用してセッションの対称鍵が導出されています。
セッション鍵を使用してデータが暗号化されます。
受信者の公開鍵を使用してセッション鍵が暗号化されます。 受信者はすでに秘密鍵を持っているため、Rivest-Shamir-Adleman(RSA)やDigital Signature Algorithm(DSA)など、必要なPKIアルゴリズムを使用してメッセージを復号化できます。
本来、SSHプロトコルでは、パスワードまたはセッション鍵をネットワークでの転送時に暗号化することでパスワード認証をサポートしています。 また、SSHプロトコルでは「既知のホスト」というメカニズムを使用して、IPスプーフィングなどの脅威を防止します。 クライアントとサーバーの両方がこのメカニズムを使用することで、あらゆる種類の通信を行う前に相互にアイデンティティを証明する必要があります。
SSHプロトコルは、Message Digest Algorithm 5(MD5)やSecure Hash Algorithm(SHA-1)など、広範囲に信頼されているバルク・ハッシュ・アルゴリズムを使用することで、挿入攻撃を防止します。 第2.4.1.1項「暗号化」で説明したアルゴリズムを使用してデータ整合性チェックサムを実装することで、送信中のデータが故意に改ざんされるのを防止できます。
SSHプロトコルは、オープン・ソースのプラットフォーム間データ圧縮アルゴリズムであるzlibをサポートしています。 SSHでは、ネットワーク帯域幅を低減するためにzlibを使用して通信中のデータが圧縮されます。
OpenSSH for Windowsは、WindowsでのSSHプロトコルの無償実装です。 Windows XPでOpenSSHをインストールおよび構成するには、次の手順を実行します。
Administrator権限を持つユーザーとしてログインします。
次のサイトからsetup.exe
をダウンロードします。
http://www.cygwin.com
setup.exe
を実行します。 「Cygwin Net Release Setup」ウィンドウが表示されます。
「Next」をクリックします。 「Choose Installation type」ウィンドウが表示されます。
ダウンロード・ソースとして「Install from Internet」を選択し、「Next」をクリックします。 「Choose Installation Directory」ウィンドウが表示されます。
「Root Directory」はC:\cygwinのままにしておきます。 「Install For」および「Default Text File Type」フィールドも、デフォルト・オプションのままにしておきます。
「Next」をクリックします。 「Select Local Package Directory」ウィンドウが表示されます。
「Browse」をクリックし、ローカル・パッケージ・ディレクトリとして「C:\cygwin」を選択します。
「Next」をクリックします。 「Select Connection Type」ウィンドウが表示されます。
インターネット接続の設定を選択して「Next」をクリックします。 「Choose Download Site(s)」ウィンドウが表示されます。
「Available Download Sites」リストからサイトを選択して「Next」をクリックします。 「Select Packages」ウィンドウが表示されます。
「View」をクリックして、インストール可能な全パッケージのリストを表示します。
デフォルトで選択されていない場合は「openssh」を選択します。
opensshの「Binaries」ボックスを選択します。
「Next」をクリックしてインストールを開始します。
Windows XPデスクトップで、「マイ コンピュータ」を右クリックして「プロパティ」を選択します。
「詳細設定」タブをクリックし、「環境変数」をクリックします。
「新規」をクリックし、「変数名」フィールドにCYGWIN
、「変数値」フィールドにntsec
と入力します。
システム・パスにC:\cygwin\bin
を追加します。
「cygwin」ウィンドウを開きます。
ssh-host-config
と入力します。
次のプロンプトが表示されます。
Shall privilege separation be used? (yes/no)
yes
と入力します。
Shall this script create a local user 'sshd' on this machine?
yes
と入力します。
Do you want to install sshd as service?
(Say "no" if it's already installed as service) (yes/no)
yes
と入力します。
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
と入力します。
net start sshd
と入力してsshdサービスを開始します。
「cygwin」ウィンドウで次のコマンドを実行して、Windowsのローカル・ユーザー・アカウントをcygwinにレプリケートします。
mkpasswd --local > /etc/passwd mkgroup --local > /etc/group
設定をテストするために、「cygwin」ウィンドウにssh localhost
と入力します。
SFTP機能を使用するには、oc4j-ra.xml
ファイルを変更する必要があります。 oc4j-ra.xml
ファイルの場所は、表2-7を参照してください。
表2-11に、oc4j-ra.xml
ファイルで値を指定する必要のあるパラメータを示します。 これらのパラメータの値は、認証のタイプとOpenSSHの場所に応じて異なります。
表2-11 SFTPのパラメータ
パラメータ | 説明 | 例 |
---|---|---|
|
必須: Yes デフォルト値: |
|
|
パスワードベース認証の場合は パスワードベース認証の場合は、 公開鍵認証の場合は、 必須: Yes |
|
|
これはオプション・パラメータであり、ユーザーはメッセージ暗号化に使用するセッション鍵を交換する際にデフォルトの鍵交換プロトコルを選択できます。 必須: No デフォルト値: |
|
|
このパラメータにより、通信中のデータを圧縮するかどうかを選択できます。 必須: No |
|
|
このパラメータにより、データ整合性チェックに使用するバルク・ハッシュ・アルゴリズムを選択できます。 必須: No デフォルト値: |
|
|
このパラメータにより、通信に使用する非対称型暗号を構成できます。 必須: No デフォルト値: |
|
|
秘密鍵ファイルへのパスを指定します。 必須: No |
|
|
次に示す暗号から1つ指定します。
必須: No デフォルト値: blowfish-cbc |
|
|
SSHサーバーがファイアウォールの内側にある場合は HTTPを選択した場合は、次のパラメータの値を指定する必要があります。
必須: Yes |
|
FTPアダプタをパスワード認証用に設定するには、次の手順を実行します。
oc4j-ra.xml
ファイルで、表2-11に示したパラメータの値を指定します。 authenticationType
パラメータがpassword
に設定されていることを確認してください。
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"/>
公開鍵認証の場合は、最初にOpenSSHを構成してからFTPアダプタを設定する必要があります。 FTPアダプタの設定は、OpenSSHがファイアウォールの内側で実行されるかどうかに応じて異なります。 OpenSSHがファイアウォールの内側で実行される場合は、次の項を参照してください。
OpenSSHがファイアウォールの外側で実行される場合は、次の項を参照してください。
公開鍵認証を使用するためのOpenSSHの構成
次の手順を実行します。
C:\cygwin\etc
フォルダに移動します。 必要な場合は、公開鍵認証を強制するようにsshd_configファイルを構成します。 詳細は、opensshのヘルプまたはマニュアルを参照してください。
C:\cygwin\bin
ディレクトリに移動します。
次のコマンドを実行して鍵のペアを生成します。
ssh-keygen -t rsa
鍵の保存先ファイルを求めるプロンプトに対して/etc/id_rsa
と入力します。
パスフレーズを入力します。
パスフレーズを再入力します。
/etc
ディレクトリに移動し、公開鍵ファイル(id_rsa.pub
)と秘密鍵ファイル(id_rsa
)の両方が生成されたことを確認します。
次のコマンドを実行して公開鍵ファイルのコピーを作成します。
cp id_rsa.pub authorized_keys
秘密鍵ファイルのコピーを安全な場所(C:\my-secured-folder\
など)に作成します。 FTPアダプタ構成では、この秘密鍵ファイルが参照されます。
次のコマンドを実行してOpenSSHサーバーを再起動します。
net stop sshd net start sshd
OpenSSHがファイアウォールの内側で実行されている場合に公開鍵認証を使用するためのFTPアダプタの構成
FTPアダプタを公開鍵認証用に設定するには、次の手順を実行します。
oc4j-ra.xml
ファイルで、表2-11に示したパラメータの値を指定します。 authenticationType
パラメータがpublickey
に、transportProvider
パラメータがsocket
に設定されていることを確認します。 privateKeyFile
パラメータには、秘密鍵ファイルの場所が含まれている必要があります。
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アダプタを公開鍵認証用に設定するには、次の手順を実行します。
oc4j-ra.xml
ファイルで、表2-11に示したパラメータの値を指定します。 authenticationType
パラメータがpublickey
に、transportProvider
パラメータがHTTP
に設定されていることを確認します。 privateKeyFile
パラメータには、秘密鍵ファイルの場所が含まれています。
oc4j-ra.xml
ファイルに次のプロキシ関連パラメータも指定します。
proxyHost
: プロキシ・ホスト名
proxyPort
: プロキシのポート番号
proxyUsername
: プロキシのユーザー名
proxyPassword
: プロキシのパスワード
useProxy
: プロキシを使用する場合はtrue
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"/>
FTPアダプタは、HTTPプロキシについてのみプロキシをサポートします。 HTTPプロキシ・サポートは、プレーンFTPモードおよびSFTPモードという2つのモードで使用できます。 この項では、プレーンFTPモードとSFTPモードで実行するようにFTPアダプタを構成する方法について説明します。 この項には、次の項目が含まれます。
FTPアダプタをプレーンFTPモードで実行する場合は、oc4j-ra.xml
ファイルで特定のパラメータの値を指定する必要があります。 oc4j-ra.xml
ファイルの場所は、表2-7を参照してください。 表2-12に、変更する必要のあるパラメータを示します。
表2-12 プレーンFTPモードのパラメータ
パラメータ | 説明 | 例 |
---|---|---|
|
リモートFTPサーバー名。 |
|
|
FTP制御ポート番号。 |
|
|
FTPユーザー名。 |
|
|
FTPパスワード。 |
|
|
プロキシ・ホスト名。 |
|
|
プロキシ・ポート番号。 |
|
|
プロキシ・ユーザー名。 |
|
|
プロキシ・パスワード。 |
|
|
プロキシ・タイプ。 サポートされるのはHTTPプロキシ・タイプのみです。 |
|
|
プロキシ定義ファイルの絶対パス。 このパラメータはオプションです。 詳細は、第2.5.1.1項「プロキシ定義ファイル」を参照してください。 |
|
|
プロキシを使用する場合は |
|
次の例にサンプル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>
すべてのプロキシ固有情報をプロキシ定義ファイルで指定し、このファイルを使用するように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アダプタから次の一連のログイン・コマンドが送信されます。
USER remote_username
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>
FTPアダプタをSFTPモードで実行する場合は、oc4j-ra.xml
ファイルで特定のパラメータの値を指定する必要があります。 oc4j-ra.xml
ファイルの場所は、表2-7を参照してください。 表2-13に、変更する必要のあるパラメータを示します。
表2-13 SFTPモードのパラメータ
パラメータ | 説明 | 例 |
---|---|---|
|
リモートFTPサーバー名。 |
|
|
FTP制御ポート番号。 |
|
|
SFTPユーザー名。 |
|
|
SFTPパスワード。 |
|
|
プロキシ・サーバーのホスト名。 |
|
|
プロキシ・ポート番号。 |
|
|
プロキシ・ユーザー名。 |
|
|
プロキシ・パスワード。 |
|
|
SFTPモードの場合は |
|
|
第2.4.3項「SFTPを使用するためのFTPアダプタの設定」を参照してください。 |
|
|
値 |
|
次の例にサンプル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>
Oracle BPEL Process Managerには、ファイルおよびFTPアダプタのデモが多数含まれています。そのデモのいくつかはREADMEファイルで説明されています。その他のデモはOracle BPEL Process Managerのドキュメント・セットで説明されています。この項では、これらのデモの概要と、シナリオをより詳細に説明しているマニュアルについて説明します。
この項には、次の項目が含まれます。
この項では、ファイル・アダプタのデモの概要を説明します。
この項には、次の項目が含まれます。
いくつかのファイル読取りのデモを参照できます。
複雑な構造のデモにより、ファイル・アダプタのファイルの読取りおよび書込み機能の使用方法が説明されます。 複雑な構造のサンプルは、次の場所にあります。
Oracle_Home\bpel\samples\tutorials\121.FileAdapter\ComplexStructure
簡単なファイル読取りのデモは、大規模なチュートリアルの一部として提供されています。このチュートリアルは、同期および非同期サービス、実行のパラレル・フロー、条件付きブランチ化ロジック、フォルト処理や例外管理、トランスフォーメーション、ファイル・アダプタ、データベース・アダプタ、ヒューマン・ワークフロー、通知およびセンサー機能など、複雑な処理の設計や実行を支援します。ファイルの読取り部分では、ファイル・アダプタを構成し、ディレクトリのファイルからインバウンドの注文リクエストを読み取ることができます。ファイル・アダプタのファイル読取り機能を取り扱うチュートリアルは、『Oracle BPEL Process Manager Order Bookingチュートリアル』を参照してください。
このデモでは、ファイル・アダプタによる、カスタム形式で定義された複数のメッセージを含むネイティブ・データの処理方法を説明します。 ファイル・アダプタでは、2つのレコードを持つ1つのインバウンド・ファイルが取り込まれ、各レコードが独自のファイルに書き込まれます。メッセージのデバッチ処理のデモを参照するには、次の場所へ移動します。
Oracle_Home\bpel\samples\tutorials\121.FileAdapter\Debatching
このデモでは、アドレス帳のCSV形式エントリの読取り、XSLTを使用したファイル・コンテンツの変換、および固定長形式ファイルへのデータの保存がファイル・アダプタでどのように行われるかを説明します。デリミタ付きコンテンツ・ファイルのデモを参照するには、次の場所へ移動します。
Oracle_Home\bpel\samples\tutorials\121.FileAdapter\FlatStructure
このデモでは、アドレス帳のCSV形式エントリの読取り、XSLTを使用したファイル・コンテンツの変換、および固定長形式ファイルへのデータの保存がファイル・アダプタでどのように行われるかを説明します。位置指定(固定長)のデモを参照するには、次の場所へ移動します。
Oracle_Home\bpel\samples\tutorials\121.FileAdapter\FlatStructure
簡単なファイル書込みのデモは、第2.6.1.1項「ファイルの読取り」で説明されている大規模なチュートリアルの一部として提供されています。ファイルの書込み部分では、アウトバウンドの注文通知をディレクトリのファイルに書き込むようファイル・アダプタを構成します。
ファイル・アダプタのファイル書込み機能を取り扱うデモは、『Oracle BPEL Process Manager Order Bookingチュートリアル』を参照してください。
このデモでは、ファイル・アダプタによる、カスタム形式で定義された複数のメッセージを含むネイティブ・データの処理方法を説明します。ネイティブ・データ・インスタンスには、請求書と注文書が含まれています。
インバウンド方向では、FTPアダプタによりリモート・ファイルが取得されて処理され、デバッチ処理のBPELプロセスに請求書と注文書が別々に公開されます。
アウトバウンド方向では、注文書のみが生成されます。デバッチ処理のBPELプロセスにより請求書が注文書に変換されます。注文レコードは単純にコピーされます。すべての注文書は、別のリモート出力ファイルに書き込まれます。FTPのデモを参照するには、次の場所へ移動します。
Oracle_Home\bpel\samples\tutorials\129.FTPAdapter\FTPDebatching
この使用例では、Oracle Enterprise Service BusがReadFile
というインバウンド・ファイル・アダプタ・サービスを介して、ファイルシステムから顧客データをテキスト・ファイルとして受信します。 ReadFile
アダプタ・サービスから、ReadFile_RS
というルーティング・サービスにメッセージが送信されます。 ReadFile_RS
からアウトバウンド・アダプタ・サービスWriteFTP
にメッセージが送信されます。 WriteFTP
サービスにより、メッセージが関連外部アプリケーションに配信されます。
この使用例は、次の項で構成されています。
この例は、基本的なESBコンストラクト(サービスやルーティング・サービスなど)と、ESBサービスを作成およびデプロイするOracle JDeveloper環境をよく理解していることを前提としています。
メッセージのスキーマを定義するには、address-csv.xsd
ファイルが必要です。 このファイルは、次のディレクトリからコピーできます。
ORAHOME\bpel\samples\tutorials\121.FileAdapter\FlatStructure
使用例のアプリケーションとプロジェクトを作成するには、次の手順を実行します。
Oracle JDeveloperの「アプリケーション・ナビゲータ」で、「アプリケーション」を右クリックして「新規アプリケーション」を選択します。 「アプリケーションの作成」ダイアログ・ボックスが表示されます。
「アプリケーション名」フィールドにFileFTP_RW
と入力して「OK」をクリックします。 「プロジェクトの作成」ダイアログ・ボックスが表示されます。
「取消」をクリックします。
「アプリケーション」ウィンドウで、「アプリケーション」を選択して「FileFTP_RW」を右クリックします。
「新規プロジェクト」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。
「カテゴリ」から「General」と「Projects」を順番に選択します。
「項目」から「ESBプロジェクト」を選択して「OK」をクリックします。 「ESBプロジェクトの作成」ダイアログ・ボックスが表示されます。
「プロジェクト名」フィールドにFileRead_FTPWrite
と入力します。
「OK」をクリックします。
メッセージの構造を定義するXSDファイルをインポートするには、次の手順を実行します。
Schema
フォルダを作成し、このフォルダにaddress-csv.xsd
ファイルをコピーします。
「アプリケーション・ナビゲータ」で「FileRead_FTPWrite」を選択します。
「ファイル」メニューから「インポート」を選択します。 「インポート」ダイアログ・ボックスが表示されます。
「インポートするものを選択」リストから「Webソース」を選択して「OK」をクリックします。 「Webソース」ダイアログ・ボックスが表示されます。
「コピー元」フィールドの右側にある「参照」をクリックします。 「ディレクトリの選択」ダイアログ・ボックスが表示されます。
Schemaフォルダにナビゲートして「選択」をクリックします。ディレクトリが選択された状態で「Webソース」ダイアログ・ボックスが表示されます。
「OK」をクリックします。
ローカル・ディレクトリからファイルを読み取るインバウンド・ファイル・アダプタ・サービスを作成するには、次の手順を実行します。
「コンポーネント・パレット」から設計領域へ「ファイル・アダプタ」サービスをドラッグします。 「ファイル・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。
「名前」フィールドにReadFile
と入力します。
「WSDL」フィールドの横にある「アダプタ・サービスのWSDLの構成」アイコンをクリックします。 「アダプタ構成ウィザード - ようこそ」ウィンドウが表示されます。
「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。
「次へ」をクリックします。 「操作」ウィンドウが表示されます。
「Read File」を選択して「次へ」をクリックします。 「ファイル・ディレクトリ」ウィンドウが表示されます。
「物理パス」オプションを選択し、「参照」をクリックしてポーリング・ディレクトリを選択します。
「次へ」をクリックします。 「ファイルのフィルタ処理」ウィンドウが表示されます。
「処理対象ファイルの名前パターン」フィールドに*.txt
と入力して「次へ」をクリックします。 「ファイル・ポーリング」ウィンドウが表示されます。
「次へ」をクリックします。 「メッセージ」ウィンドウが表示されます。
「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。
「プロジェクトのスキーマ・ファイル」、「address-csv.xsd」および「Root-Element」を順番に選択します。
「OK」をクリックします。
「メッセージ」ウィンドウで「次へ」をクリックします。
「終了」をクリックします。 「ファイル・アダプタ・サービスの作成」ダイアログ・ボックスが表示されます。
「OK」をクリックします。 ReadFile
アダプタ・サービスとともにルーティング・サービスReadFile_RS
が作成されます。
ファイルをFTPサーバーに書き込むアウトバウンドFTPアダプタ・サービスを作成するには、次の手順を実行します。
「コンポーネント・パレット」から設計領域へ「FTPアダプタ」サービスをドラッグします。 「FTPアダプタ・サービスの作成」ダイアログ・ボックスが表示されます。
「名前」
フィールドにWriteFTPと入力します。
「WSDL」フィールドの横にある「アダプタ・サービスのWSDLの構成」アイコンをクリックします。 「アダプタ構成ウィザード - ようこそ」ウィンドウが表示されます。
「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。
「次へ」をクリックします。 「FTPサーバー接続」ウィンドウが表示されます。
「FTPサーバーのJNDI名」フィールドでFTPサーバーのJNDI名を指定して「次へ」をクリックします。 「操作」ウィンドウが表示されます。
ファイル・タイプとして「ASCII」オプションを選択します。
操作タイプとして「Put File」オプションを選択して「次へ」をクリックします。 「ファイル構成」ウィンドウが表示されます。
「発信ファイルのディレクトリ(物理パス)」フィールドで、ファイルの書込み先ディレクトリを指定します。
「ファイル・ネーミング規則(po_%SEQ%.txt)」フィールドで、出力ファイル名のネーミング規則を指定します。 たとえば、po_%SEQ%.txt
を指定します。
「次へ」をクリックします。 「メッセージ」ウィンドウが表示されます。
「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。
「プロジェクトのスキーマ・ファイル」、「address-csv.xsd」および「Root-Element」を順番に選択します。
「OK」をクリックします。
「メッセージ」ウィンドウで「次へ」をクリックします。
「終了」をクリックします。
ルーティング・サービスを作成するには、次の手順を実行します。
「ReadFile_RS」ルーティング・サービスをダブルクリックします。
「ルーティング・ルール」領域で「+」アイコンをクリックします。 「ターゲット・サービス操作の参照」ダイアログ・ボックスが表示されます。
「ESB」、「プロジェクトのサービス」、「DefaultSystem」、「WriteFTP」および「Put」を順番に選択します。
「OK」をクリックします。
「<<トランスフォーメーション・マップ>>」ボックスの横にあるアイコンをクリックします。 「リクエスト・トランスフォーメーション・マップ」ダイアログ・ボックスが表示されます。
「新規マッパー・ファイルの作成」を選択して「OK」をクリックします。
Oracle JDeveloperに「Root_To_Root.xsl」タブが追加されます。 このタブを使用すると、ファイル・データ構造を正規のデータ構造に変換するためのドキュメント・トランスフォーメーション・ファイルをグラフィカルに作成できます。
「imp1:Address」ソース要素を「imp1:Address」ターゲット要素にドラッグ・アンド・ドロップします。 「自動マップ・プリファレンス」ダイアログ・ボックスが表示されます。
「自動マップ中」オプションで、「祖先名を考慮した要素の一致」の選択を解除します。
「OK」をクリックします。
「ファイル」メニューから「保存」を選択します。
サービスをOracle Enterprise Service Busサーバーに登録するには、次の手順を実行します。
「アプリケーション・ナビゲータ」で、「FileRead_FTPWrite」を右クリックして「ESBに登録」を選択し、「LocalIntegrationServer」をクリックします。
次のサービスが正常に登録されたことを示すメッセージが表示されます。
System.WriteFTP Created
System.ReadFile_RS Created
System.ReadFile Created
「OK」をクリックします。
次のように、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コンソールを開きます。
実行時に、テキスト・ファイルをポーリング・ディレクトリにコピーします。 ファイル・アダプタによりファイルが取得されると、設計時に指定したディレクトリに書き込まれます。