Fuse on JBoss EAP のスタートガイド
Red Hat Fuse on EAP をすぐに使い始める
概要
はじめに
Fuse を使い始めるには、JBoss EAP コンテナーのファイルをダウンロードしてインストールする必要があります。ここでは、初めて Fuse アプリケーションをインストール、開発、および構築するための情報および手順を提供します。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、CTO である Chris Wright のメッセージ をご覧ください。
第1章 Fuse on JBoss EAP の使用
この章では、Fuse on JBoss EAP を紹介し、JBoss EAP コンテナーで初めて Fuse アプリケーションをインストール、開発、および構築する方法を説明します。
詳細は以下のトピックを参照してください。
1.1. Fuse on JBoss EAP
Eclipse Foundation の Jakarta EE の技術 (旧名称 Java EE) をベースとした JBoss Enterprise Application Platform (EAP) は、当初はエンタープライズアプリケーション開発のユースケースに対応するために作成されました。JBoss EAP は、サービスおよび標準化された Java API (永続性、メッセージング、セキュリティーなど) を実装する明確に定義されたパターンを特徴としています。近年ではディペンデンシーインジェクション (依存性の注入) の CDI の導入や、エンタープライズ Java Bean の簡素化されたアノテーションの導入により、この技術はより軽量化されました。
このコンテナー技術の特徴は次のとおりです。
- 特にスタンドアロンモードでの実行に適しています。
- 事前設定された多くの標準サービス (永続性、メッセージング、セキュリティーなど) をそのまま使用できます。
- 通常、アプリケーション WAR は小型および軽量です (多くの依存関係がコンテナーに事前インストールされているため)。
- 標準化された後方互換性のある Java API。
1.2. Fuse on JBoss EAP のインストール
Red Hat カスタマーポータルから Fuse 7.12 on JBoss EAP の標準インストールパッケージをダウンロードできます。このパッケージは JBoss EAP コンテナーの標準アセンブリーをインストールし、完全な Fuse テクノロジースタックを提供します。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントを持っている。
- カスタマーポータルにログインしている。
- JBoss EAP がダウンロードされている。
- Fuse on JBoss EAP がダウンロードされている。
- Fuse on JBoss EAP Update 5 をダウンロードしている。
手順
次のように、シェルプロンプトから JBoss EAP インストーラーを実行します。
java -jar DOWNLOAD_LOCATION/jboss-eap-7.4.10-installer.jar
インストール中、以下を行います。
- 契約条件に同意します。
-
JBoss EAP ランタイムのインストールパス
EAP_INSTALL
を選択します。 - 管理ユーザーを作成し、後で必要になる管理ユーザーの認証情報を注意して書き留めておきます。
- その他の画面では、デフォルト設定をそのまま使用できます。
-
シェルプロンプトを開き、
EAP_INSTALL
ディレクトリーに移動します。 EAP_INSTALL
ディレクトリーから、以下のように Fuse on EAP のインストーラーを実行します。java -jar DOWNLOAD_LOCATION/fuse-eap-installer-7.12.0.jar
- (任意手順): コマンドラインから Apache Maven を使用するには、Maven のローカルでの設定 の説明どおりに Maven をインストールおよび設定する必要があります。
Fuse on JBoss EAP Update 5 パッチを適用します。
完全な手順は、 Red Hat JBoss EAP パッチ適用およびアップグレードガイド を参照してください。
1.3. JBoss EAP で初めて Fuse アプリケーションを構築する
次の手順は、JBoss EAP で初めて Fuse アプリケーションを構築する場合に便利です。
前提条件
- Red Hat カスタマーポータル のフルサブスクリプションアカウントを持っている。
- カスタマーポータルにログインしている。
- Fuse on JBoss EAP をダウンロードして正常にインストールしている。
- JBoss Tools インストーラー をダウンロードして正常にインストールしている。
手順
IDE 環境で、次のように新しいプロジェクトを作成します。
- File→New→Fuse Integration Project と選択します。
-
Project Name フィールドに
eap-camel
を入力します。 - Next をクリックします。
Select a Target Environment ペインで以下の設定を選択します。
- Standalone をデプロイメントプラットフォームとして選択します。
-
Wildfly/Fuse on EAP をランタイム環境として選択し、Runtime (optional) ドロップダウンメニューを使用して
JBoss EAP 7.x Runtime
サーバーをターゲットランタイムとして選択します。
- ターゲットランタイムの選択後、Camel Version が自動的に選択され、フィールドがグレーアウトされます。
- Next をクリックします。
- Advanced Project Setup ペインで Spring Bean - Spring DSL テンプレートを選択します。
Finish をクリックします。
重要初めて Fuse プロジェクトをビルドする場合は、ウィザードがプロジェクトの生成を完了するまでに 数分 かかります。これは、リモート Maven リポジトリーから依存関係をダウンロードするためです。プロジェクトがバックグラウンドでビルドされている間は、ウィザードを中断したり、ウィンドウを閉じたりしないでください。
- 関連する Fuse Integration パースペクティブを開くように要求された場合は、Yes をクリックします。
- JBoss Tools が必要なアーティファクトをダウンロードし、バックグラウンドでプロジェクトをビルドする間待機します。
以下のように、プロジェクトをサーバーにデプロイします。
-
サーバーが起動していない場合は、Servers ビュー (Fuse Integration パースペクティブの右下隅) で
Red Hat JBoss EAP 7.4 Runtime
サーバーを選択し、緑色の矢印をクリックして起動します。 Console ビューに以下のようなメッセージが表示されるまで待機します。
14:47:07,283 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.4.0.GA (WildFly Core 10.1.11.Final-redhat-00001) started in 3301ms - Started 314 of 576 services (369 services are lazy, passive or on-demand)
- サーバーが起動した後、Servers ビューに切り替え、サーバーを右クリックしてコンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
eap-camel
プロジェクトを選択し、Add > をクリックします。 - Finish をクリックします。
-
サーバーが起動していない場合は、Servers ビュー (Fuse Integration パースペクティブの右下隅) で
以下のように、プロジェクトが動作していることを確認します。
-
URL http://localhost:8080/camel-test-spring?name=Kermit に移動し、
eap-camel
プロジェクトで実行されているサービスにアクセスします。 -
ブラウザーウィンドウに
Hello Kermit
という応答が表示されるはずです。
-
URL http://localhost:8080/camel-test-spring?name=Kermit に移動し、
以下のようにプロジェクトをアンデプロイします。
-
Servers ビューで
Red Hat JBoss EAP 7.4 Runtime
サーバーを選択します。 - サーバーを右クリックし、コンテキストメニューで Add and Remove を選択します。
-
Add and Remove ダイアログで
eap-camel
プロジェクトを選択し、< Remove をクリックします。 - Finish をクリックします。
-
Servers ビューで
第2章 Maven のローカルでの設定
一般的な Fuse アプリケーションの開発では、Maven を使用してプロジェクトをビルドおよび管理します。
以下のトピックでは、Maven をローカルで設定する方法を説明します。
2.1. Maven 設定の準備
Maven は、Apache の無料のオープンソースビルドツールです。通常は、Maven を使用して Fuse アプリケーションを構築します。
手順
- Maven ダウンロードページ から最新バージョンの Maven をダウンロードします。
システムがインターネットに接続していることを確認します。
デフォルトの動作では、プロジェクトのビルド中、Maven は外部リポジトリーを検索し、必要なアーティファクトをダウンロードします。Maven はインターネット上でアクセス可能なリポジトリーを探します。
このデフォルト動作を変更し、Maven によってローカルネットワーク上のリポジトリーのみが検索されるようにすることができます。これは Maven をオフラインモードで実行できることを意味します。オフラインモードでは、Maven によってローカルリポジトリーのアーティファクトが検索されます。「ローカル Maven リポジトリーの使用」 を参照してください。
2.2. Maven への Red Hat リポジトリーの追加
Red Hat Maven リポジトリーにあるアーティファクトにアクセスするには、Red Hat Maven リポジトリーを Maven の settings.xml
ファイルに追加する必要があります。Maven は、ユーザーのホームディレクトリーの .m2
ディレクトリーで settings.xml
ファイルを探します。ユーザー指定の settings.xml
ファイルがない場合、Maven は M2_HOME/conf/settings.xml
にあるシステムレベルの settings.xml
ファイルを使用します。
前提条件
Red Hat リポジトリーを追加する settings.xml
ファイルがある場所を把握している。
手順
以下の例のように、settings.xml
ファイルに Red Hat リポジトリーの repository
要素を追加します。
<?xml version="1.0"?> <settings> <profiles> <profile> <id>extra-repos</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>redhat-ga-repository</id> <url>https://maven.repository.redhat.com/ga</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>redhat-ea-repository</id> <url>https://maven.repository.redhat.com/earlyaccess/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>jboss-public</id> <name>JBoss Public Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>redhat-ga-repository</id> <url>https://maven.repository.redhat.com/ga</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>redhat-ea-repository</id> <url>https://maven.repository.redhat.com/earlyaccess/all</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>jboss-public</id> <name>JBoss Public Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public</url> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>extra-repos</activeProfile> </activeProfiles> </settings>
2.3. ローカル Maven リポジトリーの使用
インターネットへ接続せずにコンテナーを実行し、オフライン状態では使用できない依存関係を持つアプリケーションをデプロイする場合は、Maven 依存関係プラグインを使用してアプリケーションの依存関係を Maven オフラインリポジトリーにダウンロードできます。ダウンロード後、このカスタマイズされた Maven オフラインリポジトリーをインターネットに接続していないマシンに提供できます。
手順
pom.xml
ファイルが含まれるプロジェクトディレクトリーで、以下のようなコマンドを実行し、Maven プロジェクトのリポジトリーをダウンロードします。mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-project
この例では、プロジェクトのビルドに必要な Maven 依存関係とプラグインは
/tmp/my-project
ディレクトリーにダウンロードされます。- このカスタマイズされた Maven オフラインリポジトリーを、インターネットに接続していない内部のマシンに提供します。
2.4. 環境変数またはシステムプロパティーを使用した Maven ミラーの設定
アプリケーションの実行時に、Red Hat Maven リポジトリーにあるアーティファクトにアクセスする必要があります。このリポジトリーは、Maven の settings.xml
ファイルに追加されます。Maven は以下の場所で settings.xml
を探します。
- 指定の URL を検索します。
-
見つからない場合は
${user.home}/.m2/settings.xml
を検索します。 -
見つからない場合は
${maven.home}/conf/settings.xml
を検索します。 -
見つからない場合は
${M2_HOME}/conf/settings.xml
を検索します。 -
どの場所にも見つからない場合は、空の
org.apache.maven.settings.Settings
インスタンスが作成されます。
2.4.1. Maven ミラー
Maven では、一連のリモートリポジトリーを使用して、ローカルリポジトリーで現在利用できないアーティファクトにアクセスします。ほとんどの場合、リポジトリーのリストには Maven Central リポジトリーが含まれますが、Red Hat Fuse では Maven Red Hat リポジトリーも含まれます。リモートリポジトリーへのアクセスが不可能な場合や許可されない場合は、Maven ミラーのメカニズムを使用できます。ミラーは、特定のリポジトリー URL を異なるリポジトリー URL に置き換えるため、リモートアーティファクトの検索時にすべての HTTP トラフィックを単一の URL に転送できます。
2.4.2. Maven ミラーの settings.xml
への追加
Maven ミラーを設定するには、以下のセクションを Maven の settings.xml
に追加します。
<mirror> <id>all</id> <mirrorOf>*</mirrorOf> <url>http://host:port/path</url> </mirror>
settings.xml
ファイルに上記のセクションがない場合は、ミラーが使用されません。XML 設定を提供せずにグローバルミラーを指定するには、システムプロパティーまたは環境変数を使用します。
2.4.3. 環境変数またはシステムプロパティーを使用した Maven ミラーの設定
環境変数またはシステムプロパティーのいずれかを使用して Maven ミラーを設定するには、以下を追加します。
-
環境変数 MAVEN_MIRROR_URL を
bin/setenv
ファイルに追加します。 -
システムプロパティー mavenMirrorUrl を
etc/system.properties
ファイルに追加します。
2.4.4. Maven オプションを使用した Maven ミラー URL の指定
環境変数またはシステムプロパティーによって指定された Maven ミラー URL ではなく、別の Maven ミラー URL を使用するには、アプリケーションの実行時に以下の Maven オプションを使用します。
-DmavenMirrorUrl=mirrorId::mirrorUrl
たとえば、
-DmavenMirrorUrl=my-mirror::http://mirror.net/repository
となります。-DmavenMirrorUrl=mirrorUrl
たとえば、
-DmavenMirrorUrl=http://mirror.net/repository
となります。この例では、<mirror> の <id> は mirror になります。
2.5. Maven アーティファクトおよびコーディネート
Maven ビルドシステムでは、アーティファクト が基本的なビルディングブロックです。ビルド後のアーティファクトの出力は、通常 JAR や WAR ファイルなどのアーカイブになります。
Maven の主な特徴として、アーティファクトを検索し、検索したアーティファクト間で依存関係を管理できる機能が挙げられます。Maven コーディネート は、特定のアーティファクトの場所を特定する値のセットです。基本的なコーディネートには、以下の形式の 3 つの値があります。
groupId:artifactId:version
Maven は、packaging の値、または packaging 値と classifier 値の両方を使用して基本的なコーディネートを拡張することがあります。Maven コーディネートには以下の形式のいずれかを使用できます。
groupId:artifactId:version groupId:artifactId:packaging:version groupId:artifactId:packaging:classifier:version
値の説明は次のとおりです。
- groupdId
-
アーティファクトの名前の範囲を定義します。通常、パッケージ名のすべてまたは一部をグループ ID として使用します。たとえば、
org.fusesource.example
です。 - artifactId
- グループ名に関連するアーティファクト名を定義します。
- version
-
アーティファクトのバージョンを指定します。バージョン番号には
n.n.n.n
のように最大 4 つの部分を使用でき、最後の部分には数字以外の文字を使用できます。たとえば1.0-SNAPSHOT
の場合は、最後の部分が英数字のサブ文字列である0-SNAPSHOT
になります。 - packaging
-
プロジェクトのビルド時に生成されるパッケージ化されたエンティティーを定義します。OSGi プロジェクトでは、パッケージングは
bundle
になります。デフォルト値はjar
です。 - classifier
- 同じ POM からビルドされた内容が異なるアーティファクトを区別できるようにします。
次に示すように、アーティファクトの POM ファイル内の要素で、アーティファクトのグループ ID、アーティファクト ID、パッケージング、およびバージョンを定義します。
<project ... > ... <groupId>org.fusesource.example</groupId> <artifactId>bundle-demo</artifactId> <packaging>bundle</packaging> <version>1.0-SNAPSHOT</version> ... </project>
前述のアーティファクトの依存関係を定義するには、以下の dependency
要素を POM ファイルに追加します。
<project ... > ... <dependencies> <dependency> <groupId>org.fusesource.example</groupId> <artifactId>bundle-demo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> ... </project>
前述の依存関係に bundle
パッケージを指定する必要はありません。バンドルは特定タイプの JAR ファイルであり、jar
はデフォルトの Maven パッケージタイプであるためです。依存関係でパッケージタイプを明示的に指定する必要がある場合は、type
要素を使用できます。