2.11. 共通Fault/Errorメッセージ形式

BCやSEにおいてFault/Errorが発生した場合にNMRに流れるメッセージの標準形式について説明します。
各BC, SEにおいてFault/Errorが発生するケースについては次で説明します。
[ リファレンス集 開発編(Enterprise Service Bus) > 2. 異常系メッセージ(Fault/Error) ]

2.11.1. 共通Faultメッセージ形式

共通FaultメッセージはXML形式です。
次の場所にXMLのスキーマファイルが格納されています。

${AS_INSTALL}/jbi/schemas/esb-fault.xsd

メッセージ形式に制約のないBC(JMS BC, File BC, FTP BC, HTTP BC)では、 外部エンドポイントへこのスキーマに準拠した共通Faultメッセージ形式で出力します。 その他のBCでは、BCに依存したメッセージ形式に変換して外部エンドポイントにエラーを通知します。 また、メッセージエクスチェンジハンドラでFaultメッセージに対して処理をする場合、 処理対象メッセージは共通Faultメッセージとなります。

共通Faultメッセージ例

<esb-fault xmlns="http://www.nec.com/WebOTX/jbi/fault/">
    <exchangeid>1335231507296-00000046</exchangeid> 
    <date>2012-04-24T10:38:27.312+09:00</date> 
    <component>UserProcessorEngine</component> 
    <service-assembly>testSA</service-assembly> 
    <service-unit>UserProSU_testSA_001</service-unit> 
    <service-name xmlns:ns2="http://webotx.com">ns2:ep_testSA_001</service-name> 
    <endpoint>ep_testSA_001</endpoint> 
    <role>PROVIDER</role> 
    <string>Fault String</string> 
    <detail>
        <cause xmlns="" xmlns:ns2="http://www.nec.com/WebOTX/jbi/fault/">Exception occured.</cause> 
    </detail>
</esb-fault>

共通Faultメッセージ中の要素はそれぞれ以下を表します。

exchangeid要素
メッセージID
date要素
Faultが発生した日付
component要素
Faultが発生したコンポーネント名
service-assembly要素
Faultが発生したサービスアセンブリ名
service-unit要素
Faultが発生したサービスユニット名
endpoint要素
Faultが発生したエンドポイントの名前
role要素
Faultが発生したロール。(PROVIDERまたはCONSUMER)
string要素
Faultの詳細を表すメッセージ
detail要素
Faultに関する詳細な情報

2.11.2. 共通Errorメッセージ形式

共通Errorメッセージはテキスト形式です。
メッセージ形式に制約のないBC(JMS BC, File BC, FTP BC, HTTP BC)では、 外部エンドポイントへ次の例の様な共通Errorメッセージ形式で出力します。 その他のBCでは、BCに依存したメッセージ形式に変換して外部エンドポイントにエラーを通知します。

共通Errorメッセージ例

com.nec.webotx.jbi.exception.WebOTXESBExceptionImpl: javax.jbi.JBIException: プロセサの処理に異常が発生しました。
ESB Exception message
Message ID: 1335232487296-00000047
Date      : Tue Apr 24 10:54:57 JST 2012
Component : UserProcessorEngine
String    : プロセサの処理に異常が発生しました。
ServiceAssembly:testSA
ServiceUnit    :UserProSU_testSA_004
ServiceName    :{http://webotx.com}ep_testSA_004
EndpointName   :ep_testSA_004

	at com.nec.webotx.jbi.engine.user.ServiceExecutor.sendErrorMessageExchange(ServiceExecutor.java:206)
	at com.nec.webotx.jbi.engine.user.ServiceExecutor$ProcessorThread.run(ServiceExecutor.java:572)
Caused by: javax.jbi.JBIException: プロセサの処理に異常が発生しました。
	... 1 more
Caused by: java.lang.RuntimeException: 
	at test.processor.FaultProcessorImpl.getDetail(FaultProcessorImpl.java:20)
	at com.nec.webotx.jbi.engine.user.impl.FaultProcessor.process(FaultProcessor.java:127)
	at com.nec.webotx.jbi.engine.user.ServiceExecutor$ProcessorThread.run(ServiceExecutor.java:557)

共通Errorメッセージ中の項目はそれぞれ以下を表します。

Message ID
メッセージID
Date
Faultが発生した日付
Component
Faultが発生したコンポーネント名
String
Faultの詳細を表すメッセージ
ServiceAssembly
Faultが発生したサービスアセンブリ名
ServiceUnit
Faultが発生したサービスユニット名
ServiceName
Faultが発生したエンドポイントのサービス名
EndpointName
Faultが発生したエンドポイントの名前

2.12. サービスアセンブリへのカスタム処理の組み込み

2.12.1. 概要

各種ハンドラをサービスアセンブリに組み込むことにより、 任意のタイミングでカスタム処理を実行することができます。
表2.12.1-1
ハンドラ 動作箇所
機能、用途
メッセージコンバートハンドラ
(BC共通)
JBIコンポーネントと外部サービスのメッセージ送受信部分
  • メッセージの内容変更
機能詳細 [ 製品構成と提供機能 > 4. ESB > 4.1. JBIコンテナと共通機能 > 4. ESB > 4.1.2. 共通ハンドラ > 4.1.2.1. メッセージコンバートハンドラ ]
実装手順 [ 2.12.2. 共通ハンドラの作成 ]
メッセージエクスチェンジハンドラ
(BC共通)
JBIコンポーネントとNMRのメッセージ送受信部分
  • In、Out、Faultメッセージの内容変更
  • メッセージの宛先変更
  • トランザクション制御
機能詳細 [ 製品構成と提供機能 > 4. ESB > 4.1. JBIコンテナと共通機能 > 4. ESB > 4.1.2. 共通ハンドラ > 4.1.2.2. メッセージエクスチェンジハンドラ ]
実装手順 [ 2.12.2. 共通ハンドラの作成 ]
SOAPメッセージハンドラ
(SOAP BC)
SOAP BCによるSOAPメッセージのノーマライズ前、デノーマライズ後の部分
  • SOAPメッセージの内容変更
  • 認証情報や証明書などのセキュリティ情報、エンドポイントリファレンス、トランザクションコンテキストの伝播
機能詳細 [ 製品構成と提供機能 > 4. ESB > 4.2. バインディングコンポーネント > 4.2.1. SOAP BC > 4.2.1.3. SOAPメッセージハンドラ機構 ]
実装手順 [ 2.9. バインディングコンポーネントの定義 > 2.9.1. SOAPバインディング > 2.9.1.15. SOAPメッセージハンドラの実装と設定 ]
トランスポートハンドラ
(SOAP BC)
SOAP BCと外部サービスのメッセージ送受信部分
  • HTTP以外の通信プロトコルによるSOAPメッセージ通信
実装手順 [ 2.9. バインディングコンポーネントの定義 > 2.9.1. SOAPバインディング > 2.9.1.16. トランスポートハンドラの実装と設定 ]
Sequencing SE用ハンドラ
(Sequencing SE)
Sequencing SEによるサービス呼び出し前後
  • メッセージの内容変更
  • ルーティング制御
機能詳細 [ 製品構成と提供機能 > 4. ESB > 4.3. サービスエンジン > 4.3.2. Sequencing SE ]
実装手順 [ 2.10. サービスエンジンの定義 > 2.10.2. Sequencingエンジン > 2.10.2.3. ハンドラの定義2.10.2.10. 利用のヒント ]
TCP/IPハンドラ
(TCP/IP BC)
TCP/IP BCと外部サービスのメッセージ送受信部分
  • TCP/IPプロトコルによる通信
TCP/IP BCを利用するためにはTCP/IPハンドラの実装が必須となっています。
実装手順 [ 2.9. バインディングコンポーネントの定義 > 2.9.10. TCP/IPバインディング > 2.9.10.12. TCP/IPハンドラ ]

各ハンドラのAPI仕様については[ リファレンス集 開発編(Enterprise Service Bus) > 1. APIリファレンス ] を参照してください。

2.12.2. 共通ハンドラの作成

共通ハンドラプロジェクト作成ウィザードを使用して、共通ハンドラプロジェクトを作成します。
メニュー ファイル > 新規 > プロジェクトを選択します。


図2.12.2-1

新規プロジェクト画面で、ESB > 共通ハンドラプロジェクトを選択します。


図2.12.2-2

プロジェクト名を指定します。


図2.12.2-3

表2.12.2-1
項目
説明
プロジェクト名
共通ハンドラプロジェクト名を指定します。
デフォルト・ロケーションの
   使用とロケーション
共通ハンドラプロジェクトのロケーションを指定します。デフォルト・ロケーションはDeveloper’s Studioの「新規プロジェクト」ウィザードと同じ。
共通ハンドラの作成が完了すると、下図のような構成でプロジェクトが作成されます。


図2.12.2-4

ウィザードで共通ハンドラ実装クラスの雛形を共通ハンドラプロジェクトで生成します。
ファイル > 新規 > その他を選択します。


図2.12.2-5

新規画面でESB > 共通ハンドラを選択します。


図2.12.2-6

共通ハンドラのタイプを選択します。


図2.12.2-7

ソース・フォルダーパッケージ名前を指定します。


図2.12.2-8

表2.12.2-2
項目
編集可否
値(編集不可の場合)
ソース・フォルダー

パッケージ

エンクロージング
不可
なし
名前

修飾子
不可
public
スーパークラス

インターフェース
不可
com.nec.webotx.jbi.handler.IMessageConvertHandler
   または
   com.nec.webotx.jbi.handler.IMessageExchangeHandler
作成するメソッド・スタブの選択
不可
継承された抽象メソッド
コメントの生成
不可
なし
共通ハンドラの作成が終了すると、共通ハンドラプロジェクト内にsrcフォルダが作成され、その中に共通ハンドラが生成されます。また、自動的に実装クラスが開かれ、Javaエディタ画面になります。Javaエディタで編集が完了したら、保存します。

2.12.2.1. メッセージエクスチェンジのプロパティ参照

WebOTX ESBがメッセージングしているメッセージエクスチェンジの一部のプロパティを参照することができます。 参照できるプロパティの一覧は下記の通りです。プロパティの値は全てString型となります。
プロパティ名 説明
ESB_MESSAGE_ID メッセージエクスチェンジ毎に一意に付けられたIDを取得します。
同一ハンドラ内のhandleInMessage、handleOutMessage、handleFault、handleErrorメソッドでは共通の値になりますが、 Sequencing SE/CBR SEを介した場合、コンシューマと複数のプロバイダのハンドラでは各々得られる値が異なります。
ESB_MESSAGE_IDは(long値)-(int値)の形を取ります。
ESB_MESSAGE_TRACE_ID 同一メッセージングに対して一意に付けられたIDを取得します。
同一のメッセージングであれば、Sequencing SE/CBR SEを介しても全てのハンドラで共通の値を取得することができます。
ESB_MESSAGE_TRACE_IDは(long値)-(int値)の形を取ります。
ESB_LAST_ENDPOINT_NAME メッセージエクスチェンジに含まれるメッセージを最後に更新したエンドポイントのエンドポイント名を得ることができます。
メッセージング開始時にはコンシューマのエンドポイント名が入ります。レスポンスメッセージやFaultメッセージを受けるとプロバイダのエンドポイント名で更新されます。
ESB_LAST_SERVICE_NAME メッセージエクスチェンジに含まれるメッセージを最後に更新したエンドポイントのサービス名を得ることができます。
メッセージング開始時にはコンシューマのサービス名が入ります。レスポンスメッセージやFaultメッセージを受けるとプロバイダのサービス名で更新されます。
ESB_LAST_INTERFACE_NAME メッセージエクスチェンジに含まれるメッセージを最後に更新したエンドポイントのインターフェース名を得ることができます。
メッセージング開始時にはコンシューマのインターフェース名が入ります。レスポンスメッセージやFaultメッセージを受けるとプロバイダのインターフェース名で更新されます。
ESB_LAST_OPERATION_NAME メッセージングエクスチェンジに含まれるメッセージを最後に更新したオペレーション名を得ることができます。
メッセージング開始時にはコンシューマのオペレーション名が入ります。レスポンスメッセージやFaultメッセージを受けるとプロバイダのオペレーション名で更新されます。
ESB_NEXT_ENDPOINT_NAME メッセージエクスチェンジが次に送信されるエンドポイントのエンドポイント名を得ることができます。
この値はNMRでルーティング先が決定した後に設定されます。
ESB_NEXT_SERVICE_NAME メッセージエクスチェンジが次に送信されるエンドポイントのサービス名を得ることができます。
この値はNMRでルーティング先が決定した後に設定されます。
ESB_NEXT_INTERFACE_NAME メッセージエクスチェンジが次に送信されるエンドポイントのインターフェース名を得ることができます。
この値はNMRでルーティング先が決定した後に設定されます。
ESB_NEXT_OPERATION_NAME メッセージエクスチェンジが次に送信されるエンドポイントのオペレーション名を得ることができます。
この値はNMRでルーティング先が決定した後に設定されます。
(※ これらの値はハンドラ内から更新しても処理中のメッセージエクスチェンジのプロパティには反映されません。)

2.12.2.2. ハンドラ間のプロパティ伝播

メッセージエクスチェンジのプロパティを利用して複数のハンドラ間で情報の共有を行います。
プロパティを伝播させる場合はハンドラ処理中に、initメソッドで渡されるMapオブジェクトに接頭辞がUSER_となるプロパティ名のプロパティを追加します。
ハンドラ内で設定されたプロパティはハンドラ処理実行後にメッセージエクスチェンジのプロパティに追加されます。他のハンドラから参照する場合は、initメソッドで渡されるMapオブジェクトからプロパティを設定した際のプロパティ名をキーに指定し、値を取得します。
既にプロパティが設定されている場合は新しい値で上書きされますので、注意してください。 メッセージエクスチェンジハンドラ間だけでなく、Sequencing SE用ハンドラともプロパティの共有が可能です。
プロパティ伝播の例を下記に示します。この例ではhandleInMessageメソッドでUSER_PROPERTYをキーとした値を追加し、handleOutMessageメソッドでその値を取り出しています。
伝播されるプロパティは同一ハンドラクラス内だけでなく、異なるハンドラクラス間でも参照は可能です。 ※ handleInMessageメソッドとhandleOutMessageメソッドを実行するハンドラクラスのオブジェクトが異なるため、同一クラス内でもプロパティ伝播機能を利用しなければ、値の共有はできません。

プロパティ伝播実装例
    public class SampleHandler implements IMessageExchangeHandler{
        private Map map = null;
      	public void init(Map arg0, Logger arg1) {
		map = arg0;
	}
        public void handleInMessage(NormalizedMessage arg0, Logger arg1)
			throws IOException, MessagingException {
                //伝播するプロパティを設定する。
		map.put("USER_PROPERTY", "value");
	}

	public void handleOutMessage(NormalizedMessage arg0, Logger arg1)
			throws IOException, MessagingException {
                //伝播したプロパティを取得する。	
		Object obj = map.get("USER_PROPERTY");
		…
	}
        …
    }
    

2.12.2.3. JTAトランザクション制御

SU作成時にハンドラのパラメータを設定することで、コンシューマ、またはプロバイダが開始したJTAトランザクションに参加することができます。 (ハンドラの追加方法の詳細につきましては各コンポーネントのSUエディタの操作マニュアルでご確認ください。)
SUエディタでハンドラの設定時にハンドラパラメータにパラメータ名:HANDLER_TRANSACTION、パラメータ値:trueを設定します。
HANDLER_TRANSACTIONパラメータを設定しない場合はJTAトランザクションに参加しない(false)となります。
また、HANDLER_TRANSACTIONがtrueの場合に下記のいずれかの条件を満たすとき、ハンドラ処理実行後にjavax.transaction.TransactionクラスのsetRollbackOnlyメソッドを実行し、JTAトランザクションをロールバックします。
・ ハンドラ内から例外がthrowされる。
・ handleInMessage/handleOutMessage/handleFault/handleErrorメソッド内からinitメソッドで渡されるMapオブジェクトにパラメータ名:HANDLER_TRANSACTION_ROLLBACK/パラメータ値:trueを設定する。
・ ハンドラ設定時にハンドラ詳細設定ダイアログでパラメータ名:HANDLER_TRANSACTION_ROLLBACK/パラメータ値:trueを設定する。

2.12.3. TCP/IPハンドラの作成

TCP/IPハンドラプロジェクト作成ウィザードを使用して、TCP/IPハンドラプロジェクトを作成します。
メニュー ファイル > 新規 > プロジェクトを選択します。


図2.12.3-1

新規プロジェクト画面で、ESB > TCP/IPハンドラプロジェクトを選択します。


図2.12.3-2

プロジェクト名を指定します。


図2.12.3-3

表2.12.3-1
項目
説明
プロジェクト名
TCP/IPハンドラプロジェクト名を指定します。
デフォルト・ロケーションの
   使用とロケーション
TCP/IPハンドラプロジェクトのロケーションを指定します。デフォルト・ロケーションはDeveloper’s Studioの「新規プロジェクト」ウィザードと同じ。
TCP/IPハンドラの作成が完了すると、下図のような構成でプロジェクトが作成されます。


図2.12.3-4

ウィザードでTCP/IPハンドラ実装クラスの雛形をTCP/IPハンドラプロジェクトで生成します。
ファイル > 新規 > その他を選択します。


図2.12.3-5

新規画面でESB > TCP/IPハンドラを選択します。


図2.12.3-6

ソース・フォルダーパッケージ名前を指定します。


図2.12.3-7

表2.12.3-2
項目
編集可否
値(編集不可の場合)
ソース・フォルダー

パッケージ

エンクロージング
不可
なし
名前

修飾子
不可
public
スーパークラス

インターフェース
不可
com.nec.webotx.jbi.binding.tcpip.handler.TCPIPHandler
作成するメソッド・スタブの選択
不可
継承された抽象メソッド
コメントの生成
不可
なし
TCP/IPハンドラの作成が終了すると、TCP/IPハンドラプロジェクト内にsrcフォルダが作成され、その中にTCP/IPハンドラが生成されます。また、自動的に実装クラスが開かれ、Javaエディタ画面になります。Javaエディタで編集が完了したら、保存します。

2.12.4. CamelContextハンドラの作成

CamelContextハンドラプロジェクト作成ウィザードを使用して、CamelContextハンドラプロジェクトを作成します。
メニュー ファイル > 新規 > プロジェクトを選択します。


図2.12.4-1

新規プロジェクト画面で、ESB > CamelContextハンドラプロジェクトを選択します。


図2.12.4-2

プロジェクト名を指定します。


図2.12.4-3

表2.12.4-1
項目
説明
プロジェクト名
CamelContextハンドラプロジェクト名を指定します。
デフォルト・ロケーションの
   使用とロケーション
CamelContextハンドラプロジェクトのロケーションを指定します。デフォルト・ロケーションはDeveloper’s Studioの「新規プロジェクト」ウィザードと同じ。
CamelContextハンドラの作成が完了すると、下図のような構成でプロジェクトが作成されます。


図2.12.4-4

ウィザードでCamelContextハンドラ実装クラスの雛形をCamelContextハンドラプロジェクトで生成します。
ファイル > 新規 > その他を選択します。


図2.12.4-5

新規画面でESB > CamelContextハンドラを選択します。


図2.12.4-6

ソース・フォルダーパッケージ名前を指定します。


図2.12.4-7

表2.12.4-2
項目
編集可否
値(編集不可の場合)
ソース・フォルダー

パッケージ

エンクロージング
不可
なし
名前

修飾子
不可
public
スーパークラス

インターフェース
不可
com.nec.webotx.jbi.binding.transport.handler.CamelContextHandler
作成するメソッド・スタブの選択
不可
継承された抽象メソッド
コメントの生成
不可
なし
CamelContextハンドラの作成が終了すると、CamelContextハンドラプロジェクト内にsrcフォルダが作成され、その中にCamelContextハンドラが生成されます。また、自動的に実装クラスが開かれ、Javaエディタ画面になります。Javaエディタで編集が完了したら、保存します。

2.12.5. カスタマイズ用Javaクラスの追加

WebOTX ESBのSUクラスローダ機能を通じてServiceUnit配下のカスタマイズ用Javaクラスを該当するコンポーネントで引用できるようになります。

2.12.5.1. カスタマイズ用Javaクラスのインポート

既存のサービスアセンブリプロジェクトを選択して、ポップアップメニューから、カスタマイズ用Javaクラスのインポート画面を表示することができます。
右クリックメニューから、 ESB開発 > カスタマイズ用Javaクラスのインポートを選択します。


図2.12.5.1-1

サービスアセンブリ名ではターゲットのServiceUnitが所属するサービスアセンブリプロジェクトを選択、サービスユニット名にターゲットのServiceUnitを選択します。
Javaプロジェクトではコンボボックスに表示されるワークスペースのJavaプロジェクトから1つを選択します。
   JARアーカイブとしてパッケージONにする場合、JARファイル名に入力してください。
外部ライブラリを追加する場合、次へをクリックします。本画面で選択したクラスで終了する場合、完了をクリックします。


図2.12.5.1-2

外部ライブラリの追加画面で、外部ライブラリを追加して、完了とします。


図2.12.5.1-3

カスタマイズ用Javaクラスのインポートが終了すると、ターゲットのServiceUnitのMETA-INFフォルダ配下にclassesフォルダまたはlibフォルダが作成され、選択したclassファイルまたはjarファイルがコピーされます。

2.12.5.2. カスタマイズ用Javaクラスのエクスポート

既存のUserProcessor SEプロセッサプロジェクトまたは共通ハンドラプロジェクトを選択してポップアップメニューから、カスタマイズ用Javaクラスのエクスポート画面を表示することができます。
ポップアップメニューで、 ESB開発 > カスタマイズ用Javaクラスのエクスポートを選択します。


図2.12.5.2-1

サービスアセンブリ名ではターゲットのServiceUnitが所属するサービスアセンブリプロジェクトを選択、サービスユニット名にターゲットの ServiceUnitを選択します。
Javaプロジェクトではコンボボックスに表示されるワークスペースのJavaプロジェクトから1つを選択します。
   JARアーカイブとしてパッケージONにする場合、JARファイル名に入力してください。
外部ライブラリを追加する場合、次へをクリックします。本画面で選択したクラスで終了する場合、完了をクリックします。


図2.12.5.2-2

外部ライブラリの追加画面で、外部ライブラリを追加して、完了とします。


図2.12.5.2-3

カスタマイズ用Javaクラスのエクスポートが終了すると、ターゲットのServiceUnitのMETA-INFフォルダ配下にclassesフォルダまたはlibフォルダが作成され、選択したclassファイルまたはjarファイルがコピーされます。

2.13. サービスアセンブリのエクスポート


図2.13-1


図2.13-2

表2.13-1
項目
説明
プロジェクト名
ServiceAssemblyプロジェクトを選択します。
出力ファイル
ServiceAssemblyのファイル名を指定します。
サービスアセンブリエクスポート画面は既存のサービスアセンブリプロジェクトを選択してポップアップメニューから表示することもできます。ポップアップメニューで、 ESB開発 > エクスポートサービスアセンブリを選択します。


図2.13-3

2.14. サービスアセンブリのデプロイ

2.14.1. 「サーバで実行」機能を利用したデプロイ

サーバーで実行することで、SAプロジェクトのサーバへの配備、リネーム、解除が可能です。
   機能詳細:
   サーバーで実行機能は、以下のいずれかの手順で実行します。

Memo
「サーバで実行」に失敗する場合、 [ アプリケーション開発ガイド(共通) > 6. サーバツール > 6.6. 注意制限事項 > 6.6.2. 制限事項 > 6.6.2.1. 「サーバで実行」に失敗する (For input string: "m") ] をご覧ください。

2.14.2. 統合運用管理ツールを利用したデプロイ

  1. 作成したServiceAssemblyを適当なディレクトリにエクスポートします。
  2. 統合運用管理ツールを起動します。
  3. domain1を右クリックし接続を選択します。ユーザ名、パスワードを入力し接続ボタンをクリックします。
  4. domain1配下のアプリケーションサーバ > ESB > サービスアセンブリを右クリックしサービスアセンブリの配備を選択します。
  5. 参照ボタンからServiceAssemblyを選択します。
    WebOTX AS Standard/Enterpriseのアドバンスドモードの場合は、アプリケーショングループとプロセスグループを指定します。
    配備ボタンを押すと配備が実行されます。
    ただしUNIX環境で実行する場合は配備ボタンでなく次へボタンを押します。
    FileSUエンドポイントを選択し、各ディレクトリパスを修正してください。


    図2.14.2-1


2.14.3. 運用管理コマンド(otxadmin)を利用したデプロイ

作成したServiceAssemblyは、以下のコマンドを使用してWebOTX ESBに配備します。
  1. otxadminコマンドを起動します。
    例)
    C:\WebOTX\bin\otxadmin.bat
    
  2. ServiceAssemblyを配備します。
    例)
    deploy-jbi-service-assembly c:\temp\DemoSA.zip
    
  3. ServiceAssemblyを起動します。
    例)
    start-jbi-service-assembly DemoSA
    
WebOTX ESBの運用コマンドについては、運用管理コマンドのマニュアルを参照してください。
   作成したHandler関数は、以下の手順でWebOTX ESBに配備します。
  1. jarコマンドでHandler関数をパッケージ化します。
  2. ハンドラ関数のjarファイルを以下のディレクトリにコピーします。
    [domainのルートディレクトリ]/lib

2.15. バージョン互換のための変換手順

ESB開発環境では、サービスユニットの互換性とサービスアセンブリプロジェクトの互換性(SAエディタの互換性と略)のための変換機能を提供しています。

2.15.1. サービスアセンブリ・プロジェクト

開発環境のインポート機能を利用して、旧バージョンのESB開発環境で作成されたサービスアセンブリプロジェクトがV8.21のESB開発環境に正しくインポートできます。
メニュー ファイルインポートを選択します。


図2.15.1-1

インポートの選択画面で、一般既存プロジェクトをワークスペースへを選択して、次へをクリックします。


図2.15.1-2

プロジェクトのインポート画面で、アーカイブ・ファイルの選択ONにして、参照をクリックして、プロジェクトファイルを指定します。
   ※ プロジェクトはアーカイブ・ファイルではない場合、ルート・ディレクトリーの選択ONにしてください。
終了をクリックします。


図2.15.1-3

サービスアセンブリプロジェクトが開発環境にインポートされます。
この時点では、サービスアセンブリプロジェクトにSA定義ファイル(.saファイル)は存在していません。


図2.15.1-4

定義ファイルの生成
V8.11までのWebOTX ESB開発環境で作成されたサービスアセンブリプロジェクトにはSA定義ファイルがありません。SAエディタを利用するためには、まずは、SA定義ファイルを生成する必要があります。また、SA定義ファイルを開くことができない場合、SA定義ファイルを再生成する必要があります。

Caution
インポートした古いプロジェクトで、SAエディタでの編集を行わない場合、SA定義ファイルを生成しなくても、ビルドや実行は可能です。

パッケージ・エクスプローラーからサービスアセンブリプロジェクトを選択して、右クリックメニューの、ESB開発SA定義ファイルを生成を選択すると、SA定義ファイルが生成されます。


図2.15.1-5

下図のように、サービスアセンブリプロジェクトにSA定義ファイルが追加され、SAエディタが開きます。サービスアセンブリプロジェクトで定義していたサービスユニットも表示されます。


図2.15.1-6

Caution
1.ServiceAssembly/META-INF/jbi.xmlファイル、またはbuild.xmlファイルのフォーマットが正しくないと、SA定義ファイルを再生成する際にエラーメッセージが表示されます。この場合、まずはArtifact xmlファイルのフォーマットを正しく修正してください。
2.サービスユニットの互換性を行う前に、SA定義ファイルを生成すると、一部のサービスユニットがSAエディタで表示されない可能性があります。

2.15.2. サービスユニット

新しいバージョンのWebOTX ESB開発環境では、各サービスユニットのスキーマファイルが変更されている可能性があります。新しいバージョンのSUエディタでも、旧バージョンのWebOTX ESB開発環境で作成されたSU定義ファイルを正しく読み込むことができるよう、SU定義ファイルの変換機能を提供します。
バージョン8.11より前のWebOTX ESB開発環境で作成されたサービスユニットは自身のバージョン情報を持っていません。サービスユニットのバージョンは、サービスアセンブリのバージョン情報と同じものとして扱います。
一方、バージョン8.11からの、WebOTX ESB開発環境で作成されたサービスユニットは自身のバージョン情報を持っています。各サービスユニットのバージョン情報は各自のSU定義ファイルで記述されています。


図2.15.2-1

バージョン8.11以降のWebOTX ESB開発環境でSUエディタを起動する際には、まずはSU定義ファイルのバージョン情報の取得を試みます。
バージョン情報が取得でた場合、そのサービスユニットはバージョン8.11以降のWebOTX ESB開発環境で作成されたものですので、そのままの状態でSUエディタでSU定義ファイルを開きます。
SU定義ファイルからバージョン情報が取得できなかった場合、SUエディタでSU定義ファイルを開くために、バージョン変換処理を行います。
   (1)  サービスアセンブリからバージョン情報を取得します。
   (2)  取得したサービスアセンブリのバージョン情報をサービスユニットのバージョンとして、WebOTX ESB開発環境のSUエディタのバージョンと比較します。
   (3)  サービスユニットのバージョンがSUエディタのバージョンと異なる場合、以下のバージョン変換ダイアログが表示されます。


図2.15.2-2

Caution
1.バージョン変換ダイアログいいえをクリックすると、サービスユニットのバージョン変換処理を行いません。
2.バージョン変換を行わなかったサービスユニットのSU定義ファイルをSUエディタで開くことはできません。

WebOTX ESB開発環境では、サービスユニットのバージョン変換ルールが規定されています。ルールファイルには、サービスユニットのタイプ毎にスキーマに変更があったバージョンを記録しています。
サービスユニットのバージョンとSUエディタのバージョンは、それぞれスキーマ変更が発あった最後のバージョンを探して、変換のマッピング関係を確定し、マッピングファイル(XSL)を利用して、バージョン変換を行います。
SOAP BCを例として説明します。

サービスユニットバージョン変換ルールファイルに、下図のようにSOAP BCタイプのスキーマ変更が記述されています。


図2.15.2-3

バージョン8.21のWebOTX ESB開発環境のSUエディタで、バージョン7.11のWebOTX ESB開発環境で作成されたサービスユニットを開く場合、以下のように判断してバージョンマッピング関係を確定します。
 ・バージョン8.21から見た、最後のスキーマ変更バージョンは8.11です。
 ・バージョン7.11の直前のスキーマ変更バージョンは6.40です。
したがって、6.40.00.00と8.11.00.00の間でのマッピングが必要であることがわかります。

SOAPBinding_6.40.00.00_8.11.00.00.xslによって、バージョン変換を行います。


図2.15.2-4

もし、ルールファイルによって確定されたマッピング関係に対応するマッピングファイルが存在していないと、下記のダイアログが提示されます。


図2.15.2-5

ダイアログのOKをクリックすると、テキストエディタで変更されないXMLファイルを開きます。
また、マッピングファイルが存在していますが、バージョン変換が失敗してSUエディタが正しく起動されない場合、下記のダイアログが提供されます。


図2.15.2-6

ダイアログのOKをクリックすると、テキストエディタで変更されないXMLファイルを開きます。

2.16. メッセージログ機能の利用

メッセージログ機能を利用することで、効率的に開発作業を行うことができます。 Developer's Studioでは、メッセージログ機能を簡単に利用できるよう、必要な設定を行うバッチファイルを提供します。

2.16.1. 事前準備

デフォルトではJava SE 7にバンドルする、Java DBへの出力設定を行います。この場合、以下のバッチファイルを実行するだけで 設定が完了します。

バッチファイルのインストール場所

[WebOTX_HOME]/Developer/Studio/studioconf/esb_db_setup.bat

※テスト用サーバおよびESB実行環境をインストールした場合のみ、インストールされます。

メッセージログ機能の設定
>cd C:\WebOTX\Studio\studioconf
>esb_db_setup.bat
インストールディレクトリに移動し、バッチファイルを引数なしで実行するだけで、メッセージログ機能の設定が完了します。

バッチファイルの仕様

Java DBの接続URL、ユーザID、ユーザパスワード、Developer's Studioのワークスペースを変更した場合でも、 このバッチファイルを利用して、メッセージログの設定を行うことができます。
esb_db_setup.bat [DB接続URL] [USERID] [USERPASSWD] [WORKSPACE]
指定されたDB接続URL,ユーザID,ユーザパスワード、Developer's Studioのワークスペースでメッセージログの出力設定を行います。
引数は省略可能で、すべての引数が省略された場合は以下の接続URLで設定を行います。
jdbc:derby://localhost/[INSTALLDIR]/domains/domain1/lib/databases/webotxesb;create=true;
DB接続URLのみ指定することもできます。
>esb_db_setup.bat jdbc:derby://localhost/C:/temp/webotxesb;create=true;
空白を指定する場合は""で指定します。
>esb_db_setup.bat jdbc:derby://localhost/C:/temp/webotxesb;create=true;user=;password=; "" ""
WORKSPACEが省略された場合はDeveloper's Studioのデフォルトワークスペース([WebOTX_HOME]/Studio/workspace)を利用します。

バッチファイルの実行ログ

ログは標準出力とログファイル[WebOTX_HOME]/Studio/studioconf/esb_db_setup.logに出力します。 esb_db_setup.batを実行するたびにログは上書きされます。

サービスの実行

サービスを実行することにより、DBにテーブルが作成され、メッセージログが出力されます。
サービスを実行するまではDBに接続することができません。

2.16.2. メッセージログ参照の利用方法

メインメニュー ツールESBメッセージログ をクリックします。


図2.16.2-1

メッセージログをクリックすると、デフォルトDB接続情報が表示された「データベース接続」ダイアログが表示されます。


図2.16.2-2

接続をクリックすると、メッセージログダイアログが表示されます。

Memo
ユーザ名、パスワード、スキーマは空白です。
サービスを実行するまではDBに接続することができません。

メッセージログ参照の詳細はWebOTX Enterprise Service Bus「運用ガイド」を参照してください。

2.17. SAP連携

WebOTX ESBでSAPシステムと連携する機能です。

2.17.1. SAP連携とは

SAPで定義されているBAPIを検索し、指定されたBAPIの定義から自動的に入力と出力のスキーマを生成してSAP BCへ 設定を行います。

2.17.2. SAP接続情報の設定

SAPに接続するための情報(ID/PWなど)を保持する設定を提供します。

2.17.2.1. SAP接続情報の設定

ウインドウ>設定 メニューをクリックし、設定画面でWebOTXSAPをクリックすると、SAPダイアログが表示されます。


図2.17.2.1-1

SAP関連の設定項目
表2.17.2.1-1
項目
説明

SAP接続サーバー のポート番号
SAP接続サーバー のポート番号を指定します。
整数(1-65535)[必須]。
接続情報の設定
接続情報の設定は一覧形式で表示されます。接続情報を追加・削除・編集できます。
SAP接続名一覧。
接続情報の設定は、SAP連携情報画面で行います。
以下のいずれかの手順を実行すると、SAP連携情報ダイアログが表示され、接続情報を追加することができます。


図2.17.2.1-2

以下のいずれかの手順で実行します。SAP連携情報ダイアログが表示されます。


図2.17.2.1-3

SAP連携情報ダイアログの項目一覧は下記の通りです。
表2.17.2.1-2
項目
説明

SAP接続名
SAP接続名を指定します。
追加の場合:空白、編集の場合:SAP接続名を表示します。
半角英数字と下線(_)の組み合わせ[必須]。
ユーザID
ユーザIDを指定します。
追加の場合:空白、編集の場合:ユーザIDを表示します。
任意文字列 [必須]。
パスワード
パスワードを指定します。黒丸記号(●)で表示します。
追加の場合:空白、編集の場合:黒丸を表示します
任意文字列 [必須]。
SAPサーバのホスト名
SAPサーバのホスト名を指定します。
追加の場合:空白、編集の場合:ホスト名やIPアドレス表示します。
任意文字列 [必須]
SAPクライアント番号
SAPクライアント番号を指定します。
追加の場合:空白、編集の場合:番号を表示します
任意文字列 [必須]
SAPシステム番号
SAPシステム番号を指定します。
追加の場合:空白、編集の場合:番号を表示します。
任意文字列 [必須]
SAPルータ文字列
SAPルータ文字列を指定します。
追加の場合:空白、編集の場合:ルータを表示します
任意文字列
SAPログイン言語
SAPログイン言語を指定します。
追加場合:空白、編集場合:languageを表示します。
2-byte ISO language

Caution
SAPの仕様上、ユーザIDやパスワードに空白文字列を指定できますが、Developerでは SAPのユーザIDとパスワードの先頭に空白文字列が含まれている場合はログインできません。

2.17.2.2. SAP接続情報のチェック

SAP連携情報ダイアログで「SAP接続チェック」ボタンをクリックすると、SAPへの接続チェックを行います。


図2.17.2.2-1

接続が成功した場合、ポップアップされたダイアログで、「接続に成功しました。」というメッセージは表示されます。


図2.17.2.2-2

接続に失敗した場合、ポップアップされたダイアログで、「接続に失敗しました。」というメッセージは表示されます。


図2.17.2.2-3

2.17.3. BAPI一覧ビュー

SAP接続サーバーの起動・停止と検索して選択したBAPIを一覧表示するビューなど機能を提供します。

BAPI一覧ビューの項目
表2.17.3-1
項目
説明

SAP接続サーバーノード
SAP接続サーバーの起動・停止や、SAP接続情報の追加などの機能を提供します。
起動・停止アイコンでSAP接続サーバーの状態を示します。
SAPノード
SAP接続名により、BAPI情報の検索やSAP接続情報の変更なども可能です。
SAP接続名を表示します。
BAPIノード
BAPI検索ダイアログで選択したBAPI名が表示されます。連携したいAPIを選択してSAが生成できます。
BAPI情報名、BAPIの説明を表示します。

2.17.3.1. SAP接続サーバー起動・停止

SAP接続サーバーの起動・停止機能を提供します。
BAPI一覧ビューで、SAP接続サーバーノードの右クリックメニューから、起動をクリックします。SAP接続サーバーを起動します。
接続に成功した場合、SAPノードをSAP接続サーバーの配下に表示されます。


図2.17.3.1-1

BAPI一覧ビューで、SAP接続サーバーノードの右クリックメニューから、停止をクリックします。SAP接続サーバーを停止します。


図2.17.3.1-2

Memo
Developerを終了すると、SAP接続サーバーを停止します。

2.17.3.2. SAP接続サーバーの最新情報に更新

BAPI一覧ビューで、SAP接続サーバーノードの右クリックメニューから、最新の情報に更新をクリックします。SAP連携情報を更新します。


図2.17.3.2-1

2.17.3.3. SAP接続サーバーにSAP接続情報を追加・編集

BAPI一覧ビューで、SAP接続サーバーノードの右クリックメニューから、SAP接続情報を追加をクリックします。「SAP連携情報」ダイアログが表示されます。


図2.17.3.3-1

BAPI一覧ビューで、SAP接続サーバーノードの配下にあるSAPノードの右クリックメニューから、プロパティをクリックします。「SAP連携情報」ダイアログが表示されます。


図2.17.3.3-2

2.17.3.4. SAP APIの検索

SAPシステムからAPI(BAPI)の一覧を取得し、検索を行うことができます。
BAPI一覧ビューで、SAP接続サーバーノードの配下にあるSAPノードの右クリックメニューから、BAPI検索をクリックします。


図2.17.3.5-2

BAPI検索ダイアログが表示されます。


図2.17.3.4-1

BAPI検索ダイアログの項目
表2.17.3.4-1
項目
説明

検索条件
検索フィルターを指定します。
任意の文字列を指定します。ワイルドカードとして(*)および(%)が使用できます。 また、ANDやOR等の複合条件や正規表現は指定できません。
BAPI情報一覧
検索結果が一覧形式で表示され、結果一覧からBAPI一覧ビューに表示するBAPIを指定できます。
一覧でBAPI名とそのBAPIの説明を表示します。

BAPI検索ダイアログで検索したBAPIを選択できます。「OK」ボタンをクリックすると、選択されたBAPIをBAPI一覧ビューに反映します。


図2.17.3.4-2

Memo
1回のBAPI検索の最大件数 200件までとなります。
それ以上の検索結果があった場合は200件で切られますので、検索条件を変更するなどして再検索を行ってください。

2.17.3.5. SAP APIの削除

BAPI一覧ビューで、SAP接続サーバーSAP接続名BAPI名の右クリックメニューから、削除を選択すると、選択されたBAPIは削除されます。


図2.17.3.5-1

BAPI一覧ビューで、SAP接続サーバーSAP接続名の右クリックメニューから、BAPIデータクリアを選択すると、選択されているSAP接続名配下のBAPIは削除されます。


図2.17.3.5-2

2.17.3.6. SAP連携のSAプロジェクトの生成

BAPI一覧ビューで、SAP接続サーバーSAP接続名BAPI名の右クリックメニューから、SAP連携のSAプロジェクト生成を選択すると、SAP連携のSAプロジェクト生成ウイザードは表示されます。


図2.17.3.6-1

SAP連携のSAプロジェクト生成の詳細については2.4.3. サービスアセンブリプロジェクトの作成(テンプレート使用)を参照してください。