第4章 Fuse スタンドアロン
4.1. サポートされるコンテナー
Fuse スタンドアロン 7.3 は以下のランタイムコンテナーでサポートされます。
- Spring Boot (スタンドアロン)
- Apache Karaf
- Red Hat JBoss Enterprise Application Platform (JBoss EAP)
4.2. Fuse 7.3 の新機能
Fuse スタンドアロンのバージョン 7.3 の主な新機能は次のとおりです。
- Elytron クレデンシャルストアをサポートする新しい Karaf コンソールのコマンド
Karaf で Elytron クレデンシャルストアをサポートするために、以下の新しいコンソールコマンドが追加されました。
-
jasypt:list-algorithms
-
jasypt:digest
-
jasypt:encrypt
-
jasypt:decrypt
-
credential-store:create
-
credential-store:list
-
credential-store:store
-
credential-store:remove
-
- Fuse on JBoss EAP の追加 Camel コンポーネント
以下の追加の Camel コンポーネントが Fuse on JBoss EAP (Wildfly Camel) でサポートされるようになりました。
-
camel-cmis
-
camel-fhir
-
camel-ganglia
-
camel-ipfs
-
camel-lra
-
camel-pgevent
-
camel-solr
-
camel-tika
-
camel-wordpress
-
- Fuse on JBoss EAP での Elytron を使用した camel-undertow コンシューマーエンドポイントのセキュア化のサポート
- Fuse 7.3 では、Fuse on JBoss EAP で Elytron セキュリティーを使用して Camel Undertow コンシューマーエンドポイントをセキュア化することが可能になりました。
4.3. テクノロジープレビューの機能
以下の Fuse スタンドアロンの機能は テクノロジープレビュー であるため、Fuse 7.3 ではサポートされません。
- Saga EIP
- Saga EIP (Enterprise Integration Pattern) はテクノロジープレビューの機能で、実稼働環境に適していない インメモリー Saga サービスのみが対象になります。LRA Saga サービスはサポートされません。詳細は『Apache Camel Development Guide』の「Saga EIP」を参照してください。
4.3.1. Camel LSP の Fuse Tooling サポート
Fuse Tooling は、Camel LSP (Language Server Protocol) エクステンションや、Visual Studio Code、Eclipse IDE、および Eclipse Che のプラグインを使用して、Camel アプリケーションの開発でクロスプラットフォームおよびクロス IDE を提供します。
Visual Studio Code では、WSDL を Camel Rest DSL サポートに提供するエクステンションを追加することもできます。
注記: これらの機能は、デフォルトで Red Hat CodeReady Studio の Fuse Tooling に含まれています。
Visual Studio Code の機能
Language Support for Apache Camel エクステンションは、Camel URI の以下の機能を提供します。
XML DSL および Java DSL の場合:
- エディターは入力時に Camel コンポーネント、属性、および属性値のリストでコード補完を提供します。
- Camel コンポーネントにマウスオーバーすると、エディターにコンポーネントの簡単な説明が表示されます (Apache Camel component reference から)。
- ファイルを編集すると、エディターは Camel コードで Apache Camel 検証チェックを実行します。
XML DSL の場合のみ:
- VS Code の Outline パネルおよび Go > Go to Symbol in File ナビゲーションパネルで、Camel コンテキストおよびルートに移動できます。
-
エディターは入力時に
direct
、direct VM
、VM
、およびSEDA
コンポーネントの参照された ID に対し、コード補完を提供します。 -
開いているすべての Camel ファイルで
direct
およびdirect VM
コンポーネントの参照を見つけることができます。
WSDL 2 Camel Rest DSL エクステンション (wsdl2rest 実装) は、WSDL を Camel Rest DSL サポートに提供します。既存の WSDL ファイルを指定すると、このエクステンションを使用して REST スタイルのアクセスの Camel Rest DSL + CXF ソリューションを生成できます。WSDL ファイルは、ローカルファイルシステム上またはアクセス可能な Web URL から見つけることができます。
Language Support for Camel LSP および WSDL to Camel Rest DSL 機能にアクセスするには、以下のエクステンションを 1 つ以上追加します。
Apache Camel Extension Pack によって以下の VS Code エクステンションがインストールされます。
エクステンションを個別にインストールすることもできます。
詳細は、以下の README ファイルを参照してください。
- Apache Camel Extension Pack の README ファイル。
- Apache Camel Language Server Protocol for Visual Studio Code の README ファイル。
- WSDL to Camel Rest DSL の README ファイル。
Eclipse IDE 機能
Language Support for Apache Camel Eclipse プラグインは Camel URI に以下の機能を提供します。
XML DSL および Java DSL 両方の汎用 Eclipse テキストエディターの場合:
- エディターは入力時に Camel コンポーネント、属性、および属性値のリストでコード補完を提供します。
- Camel コンポーネントにマウスオーバーすると、エディターにコンポーネントの簡単な説明が表示されます (Apache Camel component reference から)。
Eclipse XML または Java エディターを使用する場合は、自動補完機能のみが提供されます。
Language Support for Apache Camel 機能にアクセスするには、Eclipse Marketplace から Eclipse プラグインをインストールします。詳細は、Apache Camel Language Server Protocol for Eclipse IDE の README file を参照してください。
Eclipse Che の機能
Eclipse Che 6 の Language Support for Apache Camel プラグインは、Camel URI および XML DSL のみに機能を提供します。
- エディターは入力時に Camel コンポーネント、属性、および属性値のリストでコード補完を提供します。
- Camel コンポーネントにマウスオーバーすると、エディターにコンポーネントの簡単な説明が表示されます (Apache Camel component reference から)。
- ファイルを保存すると、エディターによって Camel コードで Apache Camel 検証チェックが実行されます。
Eclipse Che 向けのこのプラグインをアクティベートするには、ワークスペースの設定を編集する必要があります。アクティベート方法の詳細は、Red Hat Developers のブログエントリー の「Use in OpenShift.io」を参照してください。
4.4. Fuse 7.3 の BOM ファイル
サポートされる Fuse 7.3 アーティファクトを使用するために Maven プロジェクトを設定するには、本セクションで説明する BOM バージョンを使用してください。
4.4.1. 旧スタイルの BOM
Fuse スタンドアロンアプリケーションをアップグレードして 7.3 の依存関係を使用するには、Maven の pom.xml
を編集し、下表にある BOM と Maven プラグインのバージョンを変更します。
コンテナータイプ | Maven BOM またはプラグインアーティファクト groupId/artifactId | Fuse 7.3 向けのバージョン | Fuse 7.3.1 向けのバージョン |
---|---|---|---|
Spring Boot |
|
|
|
|
|
| |
|
|
| |
Apache Karaf |
|
|
|
|
|
| |
|
|
| |
JBoss EAP |
|
|
|
4.4.2. 新スタイルの BOM
Fuse スタンドアロンアプリケーションをアップグレードして 7.3 の依存関係を使用するには、Maven の pom.xml
を編集し、下表にある BOM と Maven プラグインのバージョンを変更します。
コンテナータイプ | Maven BOM またはプラグインアーティファクト groupId/artifactId | Fuse 7.3 向けのバージョン | Fuse 7.3.1 向けのバージョン |
---|---|---|---|
Spring Boot |
|
|
|
|
|
| |
|
|
| |
Apache Karaf |
|
|
|
|
|
| |
JBoss EAP |
|
|
|
新スタイルの BOM の使用に関する詳細は、『Migration Guide』の「Migrate Maven Projects」を参照してください。
4.5. 重要事項
Fuse スタンドアロンディストリビューションの Fuse 7.3 リリースにおける重要事項
- JBoss EAP 7.2 (JBoss EAP 7.1 から) を使用するようアップグレードされた Fuse on EAP
- Fuse 7.3 リリースは、JBoss Enterprise Application Platform (EAP) 7.2 コンテナーで実行されるようになりました (Fuse の前リリースの JBoss EAP 7.1 からアップグレード)。詳細は、『JBoss EAP 7.2.0 リリースノート』を参照してください。
- Apache Karaf での Servlet API 4.0 (Java EE 8 から) および Undertow 2.0 へのアップグレード
Fuse 7.3 は、Servlet API 3.1 (Java EE 7 から) ではなく Servlet API 4.0 (Java EE 8 から) を使用するようアップグレードされました。Servlet API 4.0 は Servlet API 3.1 と後方互換性があり、Karaf コンテナーに特定の変更が加えられたため、このアップグレードによるアプリケーションの移行リスクは小さくなります。以下に、Karaf ベースのアプリケーションを移行するときに注意すべき点を示します。
- Undertow 2 サーバーはより新しい Servlet API 4.0 の実装です。
-
Karaf ユーザーまたは管理者の観点からでは、
etc/undertow.xml
またはetc/org.ops4j.pax.web.cfg
設定ファイルに何も変更はありません。この設定はすべて同じです。 開発者の観点から見ると、Servlet API 4.0 によってマイナーな変更が導入されています。
-
javax.servlet.http.HttpServletRequest
また、javax.servlet.http.HttpServletResponse
インターフェースには新たなメソッドがいくつかありますが、default
としてマーク付けされています。そのため、開発者がこれらのインターフェースを実装しても問題はありません。どのような場合でも、これらのインターフェースの実装が必要になるのはまれです (サードパーティーライブラリーによって実装される可能性はあります)。 -
javax.servlet.ServletContext
インターフェースには、default
でない新しいメソッドがいくつか追加されました。このインターフェースのバージョン 3.1 を実装するアプリケーションコードがある可能性は低く、また Fuse アプリケーションで新しいメソッドの 1 つを呼び出してjava.lang.AbstractMethodError
例外がスローされる可能性も低くなります。すべての Fuse コンポーネント (Camel、CXF、pax-web を含む) には新しいメソッドが適切に実装されています (必要な場合)。
-
潜在的に最も大きな影響は OSGi 制約に関連するものです (インポートパッケージ ↔ エクスポートパッケージ)。Karaf コンテナーの Fuse ディストリビューションでは、依存関係を指定したのがバージョン 3.1 か 4.0 のどちらであっても、アプリケーションが Servlet API 4.0 JAR を使用するよう Karaf コンテナーを変更すると問題が解決します。Servlet API 4.0 は 後方互換性があり、3.1 の代わりに使用する場合のリスクはありません。技術的な詳細は以下を続けてお読みください。
Fuse 7.3 は、
mvn:javax.servlet/javax.servlet-api/4.0.1
バンドルにアタッチする Fuse 固有のフラグメントバンドル (mvn:org.jboss.fuse.modules/fuse-servlet-compatibility/7.3.0.fuse-730xxx
) である Servlet API フラグメントバンドルを提供するようになりました。karaf@root()> la|grep Servlet 42 │ Active │ 30 │ 4.0.0 │ Java Servlet API, Fragments: 191 191 │ Resolved │ 35 │ 7.3.0.fuse-730076 │ Red Hat Fuse :: Modules :: Servlet Compatibility, Hosts: 42
Red Hat Fuse :: Modules :: Servlet Compatibility
バンドルの役割は、Servlet API 4.0 バンドルのマニフェストを拡張することのみであるため、他のバンドルはすべて Servlet API のバージョンが 4.0 および 3.1 であることを認識できます。