第113章 MVEL コンポーネント


MVEL コンポーネント

Camel 2.12 以降で利用可能
mvel: コンポーネントを使用すると、MVEL テンプレートを使用してメッセージを処理できます。これは、Templating を使用してリクエストの応答を生成する場合に理想的です。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-mvel</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 形式

mvel:templateName[?options]
Copy to Clipboard Toggle word wrap
templateName は、呼び出すテンプレートのクラスパスローカル URI、またはリモートテンプレートの完全な URL (例:file://folder/myfile.mvel)です。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

オプション

Expand
オプション デフォルト 説明
allowContextMapAll (producer)
false
コンテキストマップが前詳細へのアクセスを許可するかどうかを設定します。デフォルトでは、メッセージの本文とヘッダーにのみアクセスできます。このオプションは、現在の Exchange および CamelContext へのフルアクセスに対して有効にできます。これを行うと、CamelContext API の全機能へのアクセスが開かれるため、潜在的なセキュリティーリスクが発生します。
allowTemplateFromHeader (producer)
false
ヘッダーのリソーステンプレートの使用を許可するかどうか (デフォルトは false)。このオプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼されていないコンテンツやユーザー派生コンテンツが含まれている場合、これは最終的にエンドアプリケーションの信頼性および完全性に影響を与える可能性があるため、このオプションは注意して使用してください。
contentCache true ロード時のリソースコンテンツのキャッシュ。キャッシュされたリソースコンテンツは、エンドポイントの clearContentCache 操作を使用して JMX 経由でクリアできます。
encoding null リソースコンテンツの文字エンコーディング。

メッセージヘッダー

mvel コンポーネントはメッセージに 2 つのヘッダーを設定します。
Expand
ヘッダー 説明
CamelMvelResourceUri templateName ( String オブジェクトとして)

MVEL コンテキスト

Camel は MVEL コンテキストで交換情報を提供します(マップのみ Exchange は以下のように転送されます。
Expand
key value
exchange Exchange 自体。
exchange.properties Exchange プロパティー。
ヘッダー In メッセージのヘッダー。
camelContext Camel コンテキストの意図。
request In メッセージ。
in In メッセージ。
ボディー In メッセージのボディー。
out Out メッセージ(InOut メッセージ交換パターンにのみ有効)。
response Out メッセージ(InOut メッセージ交換パターンにのみ有効)。

ホットリロード

mvel テンプレートリソースは、デフォルトではファイルとクラスパスリソース(展開形式の jar)の両方に対してホットリロードが可能です。contentCache=true を設定すると、Camel はリソースを 1 度だけロードするため、ホットリロードはできません。このシナリオは、リソースが変更されない場合に実稼働環境で使用することができます。

動的テンプレート

Camel は 2 つのヘッダーを提供し、テンプレートまたはテンプレートコンテンツ自体に異なるリソースの場所を定義できます。これらのヘッダーのいずれかが設定されている場合、Camel は設定されたエンドポイントでこれを使用します。これにより、ランタイム時に動的テンプレートを指定できます。
Expand
ヘッダー タイプ 説明
CamelMvelResourceUri 文字列 設定されたエンドポイントの代わりに使用するテンプレートリソースの URI。
CamelMvelTemplate 文字列 設定されたエンドポイントの代わりに使用するテンプレート。

サンプル

たとえば、以下のようなものを使用できます。
from("activemq:My.Queue").
  to("mvel:com/acme/MyResponse.mvel");
Copy to Clipboard Toggle word wrap
MVEL テンプレートを使用して InOut メッセージエクスチェンジ( JMSReplyTo ヘッダーがある)のメッセージへの応答を形成するには、以下を実行します。
以下のように、ヘッダーを使用してコンポーネントを動的に使用するテンプレートを指定するには、以下を実行します。
from("direct:in").
  setHeader("CamelMvelResourceUri").constant("path/to/my/template.mvel").
  to("mvel:dummy");
Copy to Clipboard Toggle word wrap
ヘッダーとしてテンプレートを直接指定するには、以下のように、コンポーネントはヘッダーを介して動的に使用する必要があります。
from("direct:in").
  setHeader("CamelMvelTemplate").constant("@{\"The result is \" + request.body * 3}\" }").
  to("velocity:dummy?allowTemplateFromHeader=true");
Copy to Clipboard Toggle word wrap
警告
allowTemplateFromHeader オプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼できないコンテンツまたはユーザー派生コンテンツが含まれる場合、これは最終的に、エンドアプリケーションの確実性と整合性に及ぼす可能性があるため、このオプションを使用してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat