13.3.13. SmooksAction
org.jboss.soa.esb.smooks.SmooksAction
クラスは、Smooks プロセスを実行するための第 2 世代アクションクラスです。(単にメッセージを変換できないことに注意してください)。
SmooksAction クラスは、Smooks PayloadProcessor を使用して幅広いメッセージペイロードを処理できます。これには、文字列、バイトアレイ、InputStreams、リーダー、POJO などが含まれます。そのため、Java から Java への変換など、幅広い変換を実行できます。また、コンテンツベースのペイロードの分割やルーティングなど、ソースメッセージストリームで他のタイプの操作も実行できます(これは Warehouse メッセージルーティングと同じではないことに注意してください)。SmooksAction は、JBoss Enterprise SOA Platform 内から幅広い Smooks 機能を有効にします。
重要
Smooks は、ベース <resource-config> を介して行われたリソース設定の特定のタイプの設定エラーを検出(および報告)しないことに注意してください。たとえば、リソース(<resource>)が Smooks Visitor 実装で、Visitor クラスの名前が間違っている場合、Smooks はスペルがクラスであることが分からないため、エラーとしてこれを送出しません。Smooks は Java Visitor 実装だけでなく、さまざまな種類のリソースをサポートすることに注意してください。
この問題を回避する最も簡単な方法は、追加設定なしのすべての機能に拡張された Smooks 設定 namespace を使用することです。たとえば、org.milyn.javabean.BeanPopulator <resource-config> 設定を定義して Java バインディング設定を定義する代わりに、設定 namespace (つまり <jb:bean> 設定など)を使用 http://www.milyn.org/xsd/smooks/javabean-1.2.xsd します。
Smooks Visitor 機能を実装している場合、この問題を回避する最も簡単な方法は、この新しいリソースタイプの拡張設定名前空間領域を定義することです。また、JBoss Developer Studio に組み込まれているスキーマサポートを活用できるため、新しいリソースの設定を容易にするという利点があります。
以下は、基本的な SmooksAction 設定を示しています。
例13.10 SmooksAction
<action name="transform" class="org.jboss.soa.esb.smooks.SmooksAction"> <property name="smooksConfig" value="/smooks/order-to-java.xml" /> </action>
<action name="transform" class="org.jboss.soa.esb.smooks.SmooksAction">
<property name="smooksConfig" value="/smooks/order-to-java.xml" />
</action>
オプションの設定プロパティーを以下に示します。
プロパティー | 説明 | デフォルト |
---|---|---|
get-payload-location |
メッセージペイロードを含むメッセージボディーの場所。
| デフォルトのペイロードの場所 |
set-payload-location |
結果ペイロードが配置されるメッセージボディーの場所。
| デフォルトのペイロードの場所 |
mappedContextObjects |
ESB メッセージボディーの EXECUTION_CONTEXT_ATTR_MAP_KEY にマップされる Smooks ExecutionContext オブジェクトのコンマ区切りリスト。デフォルトは空のリストです。オブジェクトは Serializable である必要があります。
| |
resultType |
結果メッセージペイロードとして設定する結果のタイプ。
| STRING |
javaResultBeanId |
場合にのみ関連します。
resultType=JAVA
resultType が JAVA の場合に結果としてマッピングされる Smooks Bean コンテキスト beanId。指定されていない場合、Bean コンテキスト Bean Map 全体が JAVA の結果としてマッピングされます。
| |
reportPath |
Smooks Execution Report を生成するためのパスおよびファイル名。これは開発の支援であり、実稼働環境では使用しないでください。
|
SmooksAction は
MessagePayloadProxy
クラスを使用して、ペイロードを取得およびメッセージに設定します。そのため、get-payload-location および set-payload-location アクションプロパティーで特に設定されていない限り、SmooksAction は Message.getBody ().get ()および Message.getBody ().set (Object)メソッドを使用してデフォルトのメッセージの場所で Message ペイロードを取得し、設定します。
提供されたメッセージペイロードが String、InputStream、Reader、または byte[] のいずれかではない場合、SmooksAction はペイロードを JavaSource として処理し、Java-to-XML および Java から Java への変換を実行できます。