第3章 基本情報


3.1. Smooks

Smooks は、フラグメントベースのデータ変換および分析ツールです。これは、メッセージの断片を解釈できる汎用処理ツールです。ビジターロジックを使用してこれを実現します。XSLT または Java で変換ロジックを実装でき、メッセージセットの変換ロジックを一言管理できる管理フレームワークを提供します。

3.2. Smooks のビジターロジック

Smooks は ビジターロジック を使用します。ビジターは、メッセージの特定のフラグメントに対して特定のアクションを実行する Java コードです。これにより、Smooks はメッセージフラグメントに対してアクションを実行できます。

3.3. メッセージフラグメントの処理

Smooks は、次のタイプのメッセージフラグメント処理をサポートしています。
  • Templating: XSLT または FreeMarker を使用して、メッセージフラグメントを変換する
  • Java バインド: バインドメッセージフラグメントデータを Java オブジェクトに
  • Splitting: メッセージフラグメントを分割し、分割フラグメントを複数のトランスポートと宛先にルーティングします。
  • エンリッチ: データベースからのデータでメッセージフラグメントをエンリッチします。
  • Persistence: メッセージフラグメントデータをデータベースに保持します。
  • Validation: メッセージフラグメントデータに基本的または複雑な検証を実行します。

3.4. 基本処理モデル

以下は、Smooks で実行できるさまざまな変換のリストです。
  • XML から XML
  • XML to Java
  • Java から XML
  • Java から Java
  • EDI から XML
  • EDI から Java
  • Java から EDI へ
  • CSV から XML

3.5. サポート対象のモデル

Simple API for XML (SAX)
SAX イベントモデルは、XML ソースから生成できる階層 SAX イベントに基づいています。これらには、startElementendElement が含まれます。EDICSV、および Java ファイルなど、他の構造化された階層的なデータソースに適用します。
ドキュメントオブジェクトモデル (DOM)
このオブジェクトモデルを使用して、メッセージソースとその最終結果をマッピングします。
注記
最も重要なイベントには、タイトルに visitBeforevisitAfter が付きます。

3.6. FreeMarker

FreeMarker はテンプレートエンジンです。これを使用して、NodeModel を作成し、テンプレート操作のドメインモデルとして使用できます。Smooks は、この機能にフラグメントベースのテンプレート変換を実行する機能、およびモデルを巨大なメッセージに適用する機能を追加します。

3.7. SAX の使用例

前提条件

  • 実装された SAXVisitor インターフェイスが必要です。(プロセスのイベントに対応するインターフェイスを選択します。)
  • この例では、ExecutionContext 名を使用しています。これは、BoundAttributeStore クラスを拡張する パブリックインターフェイス です。

手順3.1 タスク

  1. 新しい Smooks 設定を作成します。これは、<xxx> 要素の visitBefore および visitAfter イベントでビジターロジックを適用するために使用されます。
  2. visitBefore および visitAfter イベントのロジックをイベントストリーム全体の特定の要素に適用します。ビジターロジックは、<xxx> 要素のイベントに適用されます。
  3. FreeMarker で Smooks を使用して、巨大なメッセージに XML から XML への変換を実行します。
  4. 次のソース形式を挿入します。
    <order id='332'>
        <header>
            <customer number="123">Joe</customer>
        </header>
        <order-items>
            <order-item id='1'>
                <product>1</product>
                <quantity>2</quantity>
                <price>8.80</price>
            </order-item>
    Â 
            <!-- etc etc -->
    Â 
        </order-items>
    </order>
    
    Copy to Clipboard Toggle word wrap
  5. このターゲット形式を挿入します。
    <salesorder>
        <details>
            <orderid>332</orderid>
            <customer>
                <id>123</id>
                <name>Joe</name>
            </customer>
        <details>
        <itemList>
            <item>
                <id>1</id>
                <productId>1</productId>
                <quantity>2</quantity>
                <price>8.80</price>
            <item>        
     
            <!-- etc etc -->
     
        </itemList>
    </salesorder>
    
    Copy to Clipboard Toggle word wrap
  6. 次の Smooks 設定を使用します。
    <?xml version="1.0"?>
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
                          xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">
     
        <!--
        Filter the message using the SAX Filter (i.e. not DOM, so no
        intermediate DOM for the "complete" message - there are "mini" DOMs
        for the NodeModels below)....
        -->
        <params>
            <param name="stream.filter.type">SAX</param>
            <param name="default.serialization.on">false</param>
        </params>
     
        <!--
        Create 2 NodeModels.  One high level model for the "order"
        (header etc) and then one per "order-item".
     
        These models are used in the FreeMarker templating resources
        defined below.  You need to make sure you set the selector such
        that the total memory footprint is as low as possible.  In this
        example, the "order" model will contain everything accept the
        <order-item> data (the main bulk of data in the message).  The
        "order-item" model only contains the current <order-item> data
        (i.e. there's max 1 order-item in memory at any one time).
        -->
        <resource-config selector="order,order-item">
            <resource>org.milyn.delivery.DomModelCreator</resource>
        </resource-config>
     
        <!--
        Apply the first part of the template when we reach the start
        of the <order-items> element.  Apply the second part when we
        reach the end.
     
        Note the <?TEMPLATE-SPLIT-PI?> Processing Instruction in the
        template.  This tells Smooks where to split the template,
        resulting in the order-items being inserted at this point.
        -->
        <ftl:freemarker applyOnElement="order-items">
            <ftl:template><!--<salesorder>
        <details>
            <orderid>${order.@id}</orderid>
            <customer>
                <id>${order.header.customer.@number}</id>
                <name>${order.header.customer}</name>
            </customer>
        </details>
        <itemList>
            <?TEMPLATE-SPLIT-PI?>
        </itemList>
    </salesorder>--></ftl:template>
        </ftl:freemarker>
     
        <!--
        Output the <order-items> elements.  This will appear in the
        output message where the <?TEMPLATE-SPLIT-PI?> token appears in the
        order-items template.
        -->
        <ftl:freemarker applyOnElement="order-item">
            <ftl:template><!--        <item>
                <id>${.vars["order-item"].@id}</id>
                <productId>${.vars["order-item"].product}</productId>
                <quantity>${.vars["order-item"].quantity}</quantity>
                <price>${.vars["order-item"].price}</price>
            </item>
            --></ftl:template>
        </ftl:freemarker>
     
    </smooks-resource-list>
    
    Copy to Clipboard Toggle word wrap
  7. このコードを使用して、実行します。
    Smooks smooks = new Smooks("smooks-config.xml");
    try {
        smooks.filterSource(new StreamSource(new FileInputStream("input-message.xml")), new StreamResult(System.out));
    } finally {
        smooks.close();
    }
    
    Copy to Clipboard Toggle word wrap
  8. その結果、XML から XML への変換が行われます。

3.8. カートリッジ

カートリッジ は、再利用可能な コンテンツハンドラー を含む Java アーカイブ (JAR) ファイルです。ほとんどの場合、Smooks 用の大量の Java コードを記述する必要はありません。これは、一部の機能モジュールがカートリッジとして含まれているためです。独自の新しいカートリッジを作成して、smooks-core の基本機能を拡張できます。各カートリッジは、変換プロセスまたは特定の形式の XML 分析をすぐに使用できるサポートを提供します。

3.9. 付属カートリッジ

Smooks に付属のカートリッジは次のとおりです。
  • Calc:"milyn-smooks-calc"
  • CSV: "milyn-smooks-csv"
  • 固定長リーダー: milyn-smooks-fixed-length
  • EDI: "milyn-smooks-edi"
  • Javabean: milyn-smooks-javabean
  • JSON: "milyn-smooks-json"
  • ルーティング: milyn-smooks-routing
  • テンプレート: milyn-smooks-templating
  • CSS: "milyn-smooks-css"
  • サーブレット: "milyn-smooks-servlet"
  • 保持: milyn-smooks-persistence
  • 検証: milyn-smooks-validation

3.10. セレクター

Smooks リソースセレクター はビジターロジックを適用するメッセージフラグメントを Smooks に指示します。これらは、非ビジターロジックの単純なルックアップ値としても機能します。リソースがビジター実装 (<jb:bean><ftl:freemarker> など) の場合、Smooks はリソースセレクターを XPath セレクターとして扱います。リソースには、Java Binding ResourceFreeMarker Template Resource が含まれます。

3.11. セレクターの使用

セレクターを使用する場合は、次の点が適用されます。
  • 設定は、読みやすさのために、厳密に型指定されており、ドメイン固有です。
  • 設定は XSD ベースです。これにより、統合開発環境 を使用する際、オートコンプリートがサポートされます。
  • 特定のリソースタイプ (Java バインドの BeanPopulator クラスなど) に実際のハンドラーを定義する必要はありません。

3.12. namespace の宣言

手順3.2 タスク

  • コア設定 namespace によって namespace の接頭辞から URI へのマッピングを設定し、次の XML コードを変更して、使用する namespace を含めます。
    <?xml version="1.0"?>
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
        xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd">
    
        <core:namespaces>
            <core:namespace prefix="a" uri="http://a"/>
            <core:namespace prefix="b" uri="http://b"/>
            <core:namespace prefix="c" uri="http://c"/>
            <core:namespace prefix="d" uri="http://d"/>
        </core:namespaces>
    
        <resource-config selector="c:item[@c:code = '8655']/d:units[text() = 1]">
            <resource>com.acme.visitors.MyCustomVisitorImpl</resource>
        </resource-config>
    
    </smooks-resource-list>
    
    Copy to Clipboard Toggle word wrap

3.13. フィルタリングプロセスの選択

これは、Smooks が フィルタリングプロセス を選択する方法です。
  • DOM ビジターインターフェイス (DOMElementVisitor および SerializationUnit) のみが適用されている場合、DOM 処理モデルは自動的に選択されます。
  • すべてのビジターリソースが SAX ビジターインターフェイス (SAXElementVisitor) のみを使用する場合は、SAX 処理モデルが自動的に選択されます。
  • ビジターリソースが DOM と SAX の両方のインターフェイスを使用する場合は、Smooks リソース設定ファイルで SAX を指定しないかぎり、デフォルトでは、DOM 処理モデルが選択されます。(これは、<core:filterSettings type="SAX" /> を使用すると、実行されます。)
ビジターリソースには、リーダー などの 非要素のビジターリソースは 含まれません。

3.14. Smooks 1.3 でフィルタータイプを SAX に設定する例

<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
    xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd">

    <core:filterSettings type="SAX" />

</smooks-resource-list>
Copy to Clipboard Toggle word wrap

3.15. DomModelCreator

DomModelCreator は、メッセージフラグメントのモデルを作成するために Smooks で使用できるクラスです。

3.16. DOM モデルと SAX モデルの混合

  • ノードトラバーサル (つまり、ノード間の情報の送信) と既存のスクリプト/テンプレートエンジンに DOM (ドキュメントオブジェクトモデル) を使用します。
  • DomModelCreator ビジタークラスを使用して、SAX モデルと DOM モデルを混在させます。このビジターは、SAX フィルタリングで使用すると、ビジットされた要素から DOM フラグメントを構成します。これにより、ストリーミング環境内で DOM ユーティリティーを使用できます。
  • 複数のモデルがネストされている場合、外側のモデルに内側のモデルのデータが含まれることはありません (つまり、同じフラグメントが 2 つのモデル内に共存することはありません)。
    <order id="332">
        <header>
            <customer number="123">Joe</customer>
        </header>
        <order-items>
            <order-item id='1'>
                <product>1</product>
                <quantity>2</quantity>
                <price>8.80</price>
            </order-item>
            <order-item id='2'>
                <product>2</product>
                <quantity>2</quantity>
                <price>8.80</price>
            </order-item>
            <order-item id='3'>
                <product>3</product>
                <quantity>2</quantity>
                <price>8.80</price>
            </order-item>
        </order-items>
    </order>
    
    Copy to Clipboard Toggle word wrap

3.17. DomModelCreator の設定

  1. Smooks 内から DomModelCreator を設定して、order および注文品目メッセージフラグメントのモデルを作成します。以下の例を参照してください。
    <resource-config selector="order,order-item">
        <resource>org.milyn.delivery.DomModelCreator</resource>
    </resource-config>
    
    Copy to Clipboard Toggle word wrap
  2. 次のように、order のメモリー内モデルを設定します。
    <order id='332'>
         <header>
             <customer number="123">Joe</customer>
         </header>
         <order-items />
    </order>
    
    Copy to Clipboard Toggle word wrap
    注記
    新しいモデルごとに前のモデルが上書きされるため、一度に複数の 注文品目 モデルがメモリーに存在することはありません。

3.18. DomModelCreator に関する詳細情報

3.19. Bean コンテキスト

Bean コンテキスト には、フィルタリングが発生した際、Smooks がアクセスするオブジェクトが含まれています。実行コンテキストごとに 1 つの Bean コンテキストが作成されます (Smooks.filterSource 操作を使用)。カートリッジが作成するすべての Bean は、その beanId に従って、ファイルされます。

3.20. Bean コンテキストの設定

  1. Smooks.filterSource プロセスの最後に Bean コンテキストのコンテンツを返すには、Smooks.filterSource メソッドの呼び出しで org.milyn.delivery.java.JavaResult オブジェクトを指定します。この例は、次の方法を示しています。
     //Get the data to filter
    StreamSource source = new StreamSource(getClass().getResourceAsStream("data.xml"));
    
    //Create a Smooks instance (cachable)
    Smooks smooks = new Smooks("smooks-config.xml");
    
    //Create the JavaResult, which will contain the filter result after filtering
    JavaResult result = new JavaResult();
    
    //Filter the data from the source, putting the result into the JavaResult
    smooks.filterSource(source, result);
    
    //Getting the Order bean which was created by the Javabean cartridge
    Order order = (Order)result.getBean("order");
    
    Copy to Clipboard Toggle word wrap
  2. 起動時に Bean コンテキストにアクセスするには、これを BeanContext オブジェクトで指定します。 getBeanContext() メソッドで ExecutionContext から取得できます。
  3. BeanContext からオブジェクトを追加または取得する場合は、まず、beanIdStore から beanId オブジェクトを取得してください。(beanId オブジェクトは、文字列キーもサポートされていますが、文字列キーよりも高いパフォーマンスを保証する特殊なキーです。)
  4. getbeanIdStore() メソッドを使用して、ApplicationContext から beanIdStore を取得する必要があります。
  5. beanId オブジェクトを作成するには、 register("beanId name") メソッドを呼び出します。(beanId がすでに登録されていることがわかっている場合は、 getbeanId("beanId name") メソッドを呼び出すと、取得できます)。
  6. beanId オブジェクトは ApplicationContext スコープのオブジェクトです。それらをカスタムビジター実装の初期化メソッドに登録してから、ビジターオブジェクトにプロパティーとして配置します。その後、それらを visitBefore および visitAfter メソッドで使用できます。(beanId オブジェクトと beanIdStore はスレッドセーフです。)

3.21. プリインストールされた Bean

次の Bean がプリインストールされています。
  • PUUID: UniqueId Bean。この Bean は、フィルタリング ExecutionContext に一意の識別子を提供します。
  • PTIME: 時間 Bean。この Bean は、フィルタリング ExecutionContext に時間ベースのデータを提供します。
これらの例は、FreeMarker テンプレートでこれらの Bean を使用する方法を示しています。
  • ExecutionContext の一意の ID (フィルタリングされるメッセージ): $PUUID.execContext
  • ランダムな一意の ID: $PUUID.random
  • メッセージフィルタリングの開始時間 (ミリ秒単位): $PTIME.startMillis
  • メッセージフィルタリングの開始時間 (ナノ秒単位): $PTIME.startNanos
  • メッセージフィルタリングの開始時間 (日付): $PTIME.startDate
  • 現在時間 (ミリ秒単位): $PTIME.nowMillis
  • 現在時間 (ナノ秒単位): $PTIME.nowNanos
  • 現在時間 (日付): $PTIME.nowDate

3.22. 複数の出力/結果

Smooks は次の方法で出力を生成します。
  • 結果内インスタンスで。これらは、 Smooks.filterSource メソッドに渡された結果インスタンスで返されます。
  • フィルタリングプロセス中。これは、フィルタリングプロセス中に生成され、外部エンドポイント (ESB サービス、ファイル、JMS 宛先、データベースなど) に送信される出力によって実現されます。メッセージフラグメントイベントは、外部エンドポイントへの自動ルーティングをトリガーします。
重要
Smooks は、メッセージストリームの 1 つのフィルタリングパスで上記の方法で出力を生成できます。複数の出力を生成するために、メッセージストリームを複数回フィルタリングする必要はありません。

3.23. 結果内インスタンスの作成

  • API に見られるように、複数の結果インスタンスを Smooks に提供します。
    public void filterSource(Source source, Result... results) throws SmooksException
    
    Copy to Clipboard Toggle word wrap
    注記
    Smooks は、同じタイプの複数の結果インスタンスからの結果データの取得をサポートしていません。たとえば、 Smooks.filterSource メソッド呼び出しで複数の StreamResult インスタンスを指定できますが、Smooks は、これらの StreamResult インスタンスのうち 1 つ (最初の 1 つ) のみに出力します。

3.24. サポート対象の結果タイプ

Smooks は、標準の JDK StreamResult および DOMResult の結果タイプだけでなく、次の特殊なタイプでも動作します。
  • JavaResult: この結果タイプを使用して、Smooks Java Bean コンテキストの内容を取得します。
  • ValidationResult: この結果タイプを使用して、出力を取得します。
  • シンプルな結果タイプ: テストを書く際、これを使用します。これは、StringWriter をラップする StreamResult 拡張です。

3.25. イベントストリームの結果

Smooks がメッセージを処理すると、イベントのストリームが生成されます。StreamResult または DOMResultSmooks.filterSource 呼び出しで提供される場合、デフォルトでは、Smooks はイベントストリーム (ソースによって生成される) を提供された結果に XML としてシリアル化します。(シリアル化の前に、ビジターロジックをイベントストリームに適用できます。)
注記
これは、標準の 1 入力/1 XML 出力の文字ベースの変換を実行するために使用される機能です。

3.26. フィルタリングプロセス中

Smooks は、Smooks.filterSource プロセス中に、さまざまな出力を生成します。(これは、メッセージの最後に到達する前に、メッセージイベントストリーム中に、発生します。) この例は、他のプロセスによる実行のために、メッセージフラグメントを分割して、さまざまなエンドポイントにルーティングするために使用される場合です。
Smooks は、メッセージデータをバッチ処理して、完全なメッセージをフィルタリングした後、すべての出力を生成することはありません。これは、パフォーマンスが影響を受けるためであり、メッセージイベントストリームを利用して、フラグメント変換およびルーティング操作をトリガーできるためです。大きなメッセージは、プロセスをストリーミングすることによって、送信されます。

3.27. Smooks 実行プロセスの確認

  1. Smooks から実行レポートを取得するには、レポートを生成するように、ExecutionContext クラスを設定する必要があります。(Smooks は、メッセージを処理する際、イベントを発行します。) 次のサンプルコードは、HTML レポートを生成するように、Smooks を設定する方法を示しています。
    Smooks smooks = new Smooks("/smooks/smooks-transform-x.xml");
    ExecutionContext execContext = smooks.createExecutionContext();
    
    execContext.setEventListener(new HtmlReportGenerator("/tmp/smooks-report.html"));
    smooks.filterSource(execContext, new StreamSource(inputStream), new StreamResult(outputStream));
    
    Copy to Clipboard Toggle word wrap
  2. HtmlReportGenerator 機能を使用すると、デバッグ時に役立ちます。
    注記
    Web ページ http://www.milyn.org/docs/smooks-report/report.html でサンプルレポートを確認できます。
    注記
    また、カスタムの ExecutionEventListener 実装を作成できます。

3.28. フィルタリングプロセスの終了

  1. メッセージの最後に到達する前に、Smooks フィルタリングプロセスを終了するには、<core:terminate> 設定を Smooks 設定に追加します。(これは SAX で機能し、DOM では必要ありません。)
    メッセージの顧客フラグメントの最後でフィルタリングを終了する設定例は次のとおりです。
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
       xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd">
    
        <!-- Visitors... -->
        <core:terminate onElement="customer" />
    
    </smooks-resource-list>
    Copy to Clipboard Toggle word wrap
  2. メッセージの先頭で終了するには (visitBeforeイベント)、次のコードを使用します。
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
       xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd">
    
       <!-- Visitors... -->
    
       <core:terminate onElement="customer" terminateBefore="true" />
    
    </smooks-resource-list>
    Copy to Clipboard Toggle word wrap

3.29. グローバル設定

デフォルトプロパティー
デフォルトプロパティーは、<resource-config> 属性のデフォルト値を指定します。これらのプロパティーは、対応する <resource-config> が属性の値を指定しない場合、SmooksResourceConfiguration クラスに自動的に適用されます。
グローバルパラメーター
すべての <resource-config><param> 要素を指定できます。これらのパラメーター値は、SmooksResourceConfiguration によって実行時に利用できるか、そうでない場合は、@ConfigParam アノテーションによって注入されます。
グローバル設定パラメーターは 1 か所に定義されます。すべてのランタイムコンポーネントは、ExecutionContext を使用して、それらにアクセスできます。

3.30. グローバル設定パラメーター

  1. 次のように、グローバルパラメーターは、<params> 要素で指定されます。
    <params>
        <param name="xyz.param1">param1-val</param>
    </params>
    
    Copy to Clipboard Toggle word wrap
  2. ExecutionContext でグローバルパラメーターにアクセスします。
    <smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
        xmlns:xsl="http://www.milyn.org/xsd/smooks/xsl-1.1.xsd" 
        default-selector="order">
    
        <resource-config>
            <resource>com.acme.VisitorA</resource>
            ...
        </resource-config>
    
        <resource-config>
            <resource>com.acme.VisitorB</resource>
            ...
        </resource-config>
    
    <smooks-resource-list>
    
    Copy to Clipboard Toggle word wrap

3.31. デフォルトプロパティー

デフォルトプロパティーは、Smooks 設定のルート要素に設定でき、smooks-conf.xml ファイルのリソース設定に適用されます。すべてのリソース設定のセレクター値が同じである場合は、default-selector=order を指定できます。つまり、すべてのリソース設定でセレクターを指定する必要はありません。

3.32. デフォルトプロパティーの設定例

<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
    xmlns:xsl="http://www.milyn.org/xsd/smooks/xsl-1.1.xsd" 
    default-selector="order">

    <resource-config>
        <resource>com.acme.VisitorA</resource>
        ...
    </resource-config>

    <resource-config>
        <resource>com.acme.VisitorB</resource>
        ...
    </resource-config>

<smooks-resource-list>
Copy to Clipboard Toggle word wrap

3.33. デフォルトプロパティーのオプション

default-selector
他のセレクターが定義されていない場合、これは、Smooks 設定ファイル内のすべての resource-config 要素に適用されます。
default-selector-namespace
これはデフォルトのセレクター namespace です。他の namespace が定義されていない場合に使用されます。
default-target-profile
これはデフォルトのターゲットプロファイルです。他のターゲットプロファイルが定義されていない場合、Smooks 設定ファイル内のすべてのリソースに適用されます。
default-condition-ref
これは、条件識別子によってグローバル条件を参照します。この条件は、グローバルに定義された条件を参照しない空の条件要素 (つまり、<condition/>) を定義するリソースに適用されます。

3.34. フィルター設定

  • フィルタリングオプションを設定するには、smooks-core 設定 namespace を使用します。以下の例を参照してください。
    ;smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" 
       xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd">
       <core:filterSettings type="SAX" defaultSerialization="true" 
          terminateOnException="true" readerPoolSize="3" closeSource="true" 
          closeResult="true" rewriteEntities="true" />
    
          .. Other visitor configs etc...
    
    </smooks-resource-list>
    
    Copy to Clipboard Toggle word wrap

3.35. フィルターオプション

type
これにより、SAX または DOM のいずれかから使用される処理モデルのタイプが決まります。(デフォルトは DOM です。)
defaultSerialization
これは、デフォルトのシリアル化をオンにするかどうかを決定します。デフォルト値は true です。これをオンにすると、Smooks.filterSource メソッドに提供された結果オブジェクトの StreamResult (または DOMResult) を探し、デフォルトでは、その結果に対するすべてのイベントをシリアル化するように、Smooks に指示します。
グローバル設定パラメーターを使用して、この動作をオフにするか、結果ライターの所有権を取得する (SAX フィルタリングを使用する場合) か、DOM を変更する (DOM フィルタリングを使用する場合) フラグメントのビジター実装をターゲットにして、フラグメント単位でこの動作をオーバーライドできます。
terminateOnException
これを使用して、例外によって処理を終了する必要があるかどうかを判断します。デフォルト設定は true です。
closeSource
これにより、Smooks.filterSource メソッドに渡されたソースインスタンスストリームが閉じます (デフォルトは true)。ここでの例外は、まったく閉じられない System.in です。
closeResult
これにより、Smooks.filterSource メソッドに渡された結果ストリームが閉じます (デフォルトは true)。ここでの例外は、まったく閉じない System.outSystem.err です。
rewriteEntities
これを使用して、XML の読み取りおよび書き込み (デフォルトのシリアル化) 時に XML エンティティーを書き換えます。
readerPoolSize
これにより、リーダープールのサイズが設定されます。一部のリーダーの実装は、作成に非常にコストがかかります。リーダーインスタンスをプールする (つまり、それらを再利用する) と、特に多くの小さなメッセージを処理する場合は、パフォーマンスが大幅に向上する可能性があります。この設定のデフォルト値は 0 です (つまり、プールされません。メッセージごとに新しいリーダーインスタンスが作成されます)。
アプリケーションのスレッドモデルに合わせて、これを設定します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat