Red Hat Training

A Red Hat training course is available for Red Hat Fuse

第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 コンテキストおよびルートに移動できます。
  • エディターは入力時に directdirect VMVM、および 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 ファイルを参照してください。

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 プラグインのバージョンを変更します。

表4.1 旧スタイルの BOM を使用している 7.3 の Maven BOM およびプラグインのバージョン

コンテナータイプMaven BOM またはプラグインアーティファクト groupId/artifactIdFuse 7.3 向けのバージョンFuse 7.3.1 向けのバージョン

Spring Boot

io.fabric8/fabric8-project-bom-camel-spring-boot

3.0.11.fuse-730075-redhat-00001

3.0.11.fuse-731003-redhat-00004

io.fabric8/fabric8-maven-plugin

3.5.33.fuse-730073-redhat-00001

3.5.33.fuse-731003-redhat-00004

org.springframework.boot/spring-boot-maven-plugin

1.5.17.RELEASE

1.5.17.RELEASE

Apache Karaf

org.jboss.fuse/jboss-fuse-parent

7.3.0.fuse-730079-redhat-00001

7.3.1.fuse-731003-redhat-00003

io.fabric8/fabric8-project-bom-fuse-karaf

3.0.11.fuse-730075-redhat-00001

3.0.11.fuse-731003-redhat-00004

org.apache.karaf.tooling/karaf-maven-plugin

4.2.0.fuse-730036-redhat-00001

4.2.0.fuse-731003-redhat-00003

JBoss EAP

org.wildfly.camel/wildfly-camel-bom

5.3.0.fuse-730041-redhat-00001

5.3.0.fuse-731003-redhat-00002

4.4.2. 新スタイルの BOM

Fuse スタンドアロンアプリケーションをアップグレードして 7.3 の依存関係を使用するには、Maven の pom.xml を編集し、下表にある BOM と Maven プラグインのバージョンを変更します。

表4.2 新スタイルの BOM を使用している 7.3 の Maven BOM およびプラグインのバージョン

コンテナータイプMaven BOM またはプラグインアーティファクト groupId/artifactIdFuse 7.3 向けのバージョンFuse 7.3.1 向けのバージョン

Spring Boot

org.jboss.redhat-fuse/fuse-springboot-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/fabric8-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/spring-boot-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

Apache Karaf

org.jboss.redhat-fuse/fuse-karaf-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

org.jboss.redhat-fuse/karaf-maven-plugin

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

JBoss EAP

org.jboss.redhat-fuse/fuse-eap-bom

7.3.0.fuse-730058-redhat-00001

7.3.1.fuse-731003-redhat-00003

新スタイルの 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 であることを認識できます。