第105章 MINA2 - 非推奨


MINA 2 コンポーネント

非推奨
MINA2 コンポーネントは非推奨になりました。代わりに Netty を使用してください。
注記
コンシューマーエンドポイントでは、sync=false に注意してください。camel-mina2 以降、すべてのコンシューマーエクスチェンジは InOut です。これは camel-mina とは異なります。
Camel 2.10 以降で利用可能
mina2: コンポーネントは Apache MINA 2.xを使用するためのトランスポートです。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-mina2</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

Camel on EAP デプロイメント

このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください

URI 形式

mina2:tcp://hostname[:port][?options]
mina2:udp://hostname[:port][?options]
mina2:vm://hostname[:port][?options]
Copy to Clipboard Toggle word wrap
codec オプションを使用して、レジストリーに codec を指定できます。TCP を使用し、codec を指定しない場合は、テキスト行 ベースのコーデックまたはオブジェクトシリアル化を代わりに使用する必要があるかどうかを判断するためにテキストラインフラグが使用されます。デフォルトでは、オブジェクトのシリアライズが使用されます。
codec が指定されていない場合、UDP の場合、デフォルトは基本的な ByteBuffer ベースのコーデックを使用します。
仮想マシンプロトコルは、同じ JVM の直接転送メカニズムとして使用されます。
Mina プロデューサーのデフォルトのタイムアウト値は 30 秒で、リモートサーバーからの応答を待ちます。
通常の使用では、camel-mina はボディー content-essage ヘッダーとエクスチェンジプロパティーは送信されません。ただし、オプション transferExchange を使用すると、エクスチェンジ自体をネットワーク経由で転送できます。以下のオプションを参照してください。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

オプション

Expand
オプション デフォルト値 説明
codec null Spring ApplicationContext などの名前付きの ProtocolCodecFactory インスタンスをレジストリーで参照できます。これはマーシャリングに使用されます。
disconnect false 使用直後に Mina セッションから切断するかどうか。コンシューマーとプロデューサーの両方に使用できます。
textline false TCP にのみ使用されます。codec が指定されていない場合、このフラグを使用してテキスト行ベースのコーデックを示すことができます。指定されていない場合、または値が false の場合、Object Serialization は TCP 経由で想定されます。
textlineDelimiter DEFAULT TCP および textline=true にのみ使用されます。使用するテキスト行区切り文字を設定します。使用できる値は、DEFAULTAUTOWINDOWSUNIX または MAC です。指定がない場合は、Camel は DEFAULT を使用します。この区切り文字は、テキストの最後をマークするために使用されます。
sync true endpoint を one-way または request-response として設定するための設定。
lazySessionCreation true Camel プロデューサーの開始時にリモートサーバーが稼働していない場合、セッションは遅延して例外を回避するために作成できます。
timeout 30000 リモートサーバーからの応答を待つ時間を指定するタイムアウトを設定できます。タイムアウト単位はミリ秒単位であるため、60000 は 60 秒です。タイムアウトは Mina プロデューサーにのみ使用されます。
encoding JVM のデフォルト TCP テキストラインコーデックおよび UDP プロトコルに使用するようにエンコーディング( charset 名)を設定できます。指定しない場合、Camel は JVM のデフォルト Charset を 使用します。
transferExchange false TCP にのみ使用されます。ボディーだけでなく、ネットワーク経由でエクスチェンジを転送することができます。以下のフィールドは転送されます:ボディー、Out body、Fault ボディー、In headers、Out ヘッダー、Fault ヘッダー、エクスチェンジプロパティー、エクスチェンジ例外。これには、オブジェクトが シリアライズ可能 である必要があります。Camel はシリアライズできないオブジェクトを除外し、WARN レベルでログに記録します。
minaLogger false Apache MINA ロギングフィルターを有効にできます。Apache MINA は、INFO レベルで slf4j ロギングを使用して、すべての入出力をログに記録します。
filters null Mina IoFilters のリストを設定して登録できます。フィルター は Bean 参照のコンマ区切りリストとして指定できます(例: \#filterBean1,#filterBean2)。各 Beanのタイプは org.apache.mina.common.IoFilter である必要があります。
encoderMaxLineLength \-1 テキストプロトコルエンコーダーの最大行の長さを設定します。デフォルトでは、Mina 自体のデフォルト値が使用されます。これは Integer.MAX_VALUE です。
decoderMaxLineLength \-1 テキストラインプロトコルデコーダーの最大行の長さを設定します。デフォルトでは、Mina itself のデフォルト値が使用されます。これは 1024 です。
maximumPoolSize 16 TCP プロデューサーはスレッドセーフであり、同時実行性をはるかに向上します。このオプションを使用すると、同時プロデューサーのスレッドプールにスレッド数を設定できます。注記: Camel にはプールされたサービスがあり、すでにスレッドセーフであり、サポートされる同時実行性が保証されています。
allowDefaultCodec true mina コンポーネントは、両方が null の場合、codec が null で、テキストラインfalse の場合にデフォルトの コーデック をインストールします。allowDefaultCodecfalse に設定すると、mina コンポーネントがフィルターチェーンの最初の要素としてデフォルトのコーデックをインストールできなくなります。これは、SSL フィルターなど、フィルターチェーンの最初のフィルターを設定する必要があるシナリオで役立ちます。
disconnectOnNoReply true sync が有効になっている場合、返答がない場所で切断される必要がある場合は、このオプションは MinaConsumer を指示します。
noReplyLogLevel WARN sync が有効になっている場合、このオプションは MinaConsumer を決定し、送信する応答がない場合に使用するログレベルを指定します。値は FATAL、ERROR、INFO、DEBUG、OFF です。
orderedThreadPoolExecutor true 順序付けられたスレッドプールを使用して、イベントが同じチャネルで順番に処理されるかどうか。
sslContextParameters null org.apache.camel.util.jsse.SSLContextParameters インスタンスを使用した SSL 設定。Using the JSSE Configuration Utility を参照してください。
autoStartTls true SSL ハンドシェイクを自動起動するかどうか。
cachedAddress true Camel 2.14: InetAddress を一度作成して再利用するかどうか。これを false に設定すると、ネットワークで DNS の変更を取得できます。
clientMode false Camel 2.15: コンシューマーのみ。clientMode が true の場合、mina コンシューマーはアドレスを TCP クライアントとして接続します。

カスタムコーデックの使用

Mina how to write your own codec を参照してください。camel-mina でカスタムコーデックを使用するには、Spring XML ファイルに Bean を作成するなどして、codec をレジストリーに登録する必要があります。次に、codec オプションを使用してコーデックの Bean ID を指定します。カスタムコーデックを持つ HL7 を参照してください。

sync=false を使用した例

この例では、Camel はポート 6200 で TCP 接続をリッスンするサービスを公開します。テキストライン コーデックを使用します。ルートでは、ポート 6200 をリッスンする Mina コンシューマーエンドポイントを作成します。
from("mina2:tcp://localhost:" + port1 + "?textline=true&sync=false").to("mock:result");
Copy to Clipboard Toggle word wrap
サンプルはユニットテストの一部であるため、ポート 6200 で一部のデータを送信することでテストします。
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedBodiesReceived("Hello World");
 
template.sendBody("mina2:tcp://localhost:" + port1 + "?textline=true&sync=false", "Hello World");
 
assertMockEndpointsSatisfied();
Copy to Clipboard Toggle word wrap

sync=true の例

次のサンプルでは、ポート 6201 で TCP サービスを公開する一般的なユースケースも、テキストコーデックを使用します。ただし、今回は応答を返すため、コンシューマーで sync オプションを true に設定します。
from("mina2:tcp://localhost:" + port2 + "?textline=true&sync=true").process(new Processor() {
    public void process(Exchange exchange) throws Exception {
        String body = exchange.getIn().getBody(String.class);
        exchange.getOut().setBody("Bye " + body);
    }
});
Copy to Clipboard Toggle word wrap
次に、template.requestBody () メソッドを使用してデータを送信し、応答を取得し、サンプルをテストします。応答が String であることが分かっているため、 String にキャストし、応答がプロセッサーコードロジックで動的に設定されているものであることをアサートできます。
String response = (String)template.requestBody("mina2:tcp://localhost:" + port2 + "?textline=true&sync=true", "World");
assertEquals("Bye World", response);
Copy to Clipboard Toggle word wrap

Spring DSL を使用した例

当然ながら、Spring DSL は MINA2 にも使用することができます。以下の例では、ポート 5555 で TCP サーバーを公開します。
   <route>
     <from uri="mina2:tcp://localhost:5555?textline=true"/>
     <to uri="bean:myTCPOrderHandler"/>
  </route>
Copy to Clipboard Toggle word wrap
上記のルートでは、テキストのコーデックを使用して、ポート 5555 で TCP サーバーを公開します。ID myTCPOrderHandler を持つ Spring Bean がリクエストを処理し、応答を返します。たとえば、ハンドラー Bean は以下のように実装できます。
    public String handleOrder(String payload) {
        ...
        return "Order: OK"
   }
Copy to Clipboard Toggle word wrap

完了時にセッションを閉じる

サーバーとして動作する場合、クライアントの変換が終了する場合などにセッションを閉じることがあります。Camel に対してセッションを閉じるよう指示するには、CamelMinaCloseSessionWhenComplete キーを持つヘッダーをブール値 true に追加する必要があります。
たとえば、以下の例では、bye メッセージをクライアントに書き戻した後にセッションを閉じます。
        from("mina2:tcp://localhost:8080?sync=true&textline=true").process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                String body = exchange.getIn().getBody(String.class);
                exchange.getOut().setBody("Bye " + body);
                exchange.getOut().setHeader(Mina2Constants.MINA_CLOSE_SESSION_WHEN_COMPLETE, true);
            }
        });
Copy to Clipboard Toggle word wrap

メッセージの IoSession を取得します。

このキー Mina2Constants.MINA_IOSESSION を使用してメッセージヘッダーから IoSession を取得し、キー Mina2Constants.MINA_LOCAL_ADDRESS キーでローカルホストアドレスとリモートホストアドレスを Mina2Constants.MINA_REMOTE_ADDRESS キーで取得することもできます。

Mina フィルターの設定

フィルターを使用すると、SslFilter などの一部の Mina フィルターを使用できます。カスタマイズされたフィルターを実装することもできます。codec および logger は、タイプ IoFilter の Mina フィルターとしても実装されることに注意してください。定義できるフィルターは、フィルターチェーンの最後に追加されます。つまり、codec および logger の後です。
  • 以下も参照してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat