第46章 フレームワークの使用方法

概要

本章では、camel-archetype-api-component Maven archetype を使用して生成されたコードに基づいた、API コンポーネントフレームワークを使用して Camel コンポーネントを実装する基本的な原則について説明します。

46.1. Maven archetype でのコードの生成

Maven archetype

Maven archetype はコードウィザードに類似しています。簡単なパラメーターをいくつか提供するとサンプルコードと共に、完全な作業用の Maven プロジェクトを生成します。その後、このプロジェクトをテンプレートとして使用し、実装をカスタマイズして独自のアプリケーションを作成することができます。

API コンポーネント Maven archetype

API コンポーネントフレームワークは camel-archetype-api-component により、独自の API コンポーネント実装の開始するコードを生成できる Maven archetype を提供します。これは、独自の API コンポーネントの作成を開始するための推奨される方法です。

前提条件

camel-archetype-api-component archetype を実行するための前提条件は Apache Maven がインストールされ、Maven settings.xml ファイルが標準の Fuse リポジトリーを使用するよう設定されていることだけです。

Maven archetype の呼び出し

example URI スキームを使用する Example コンポーネントを作成するには、以下のように camel-archetype-api-component archetype を呼び出して新しい Maven プロジェクトを生成します。

mvn archetype:generate \
-DarchetypeGroupId=org.apache.camel.archetypes \
-DarchetypeArtifactId=camel-archetype-api-component \
-DarchetypeVersion=2.23.2.fuse-7_10_0-00018-redhat-00001 \
-DgroupId=org.jboss.fuse.example \
-DartifactId=camel-api-example \
-Dname=Example \
-Dscheme=example \
-Dversion=1.0-SNAPSHOT \
-DinteractiveMode=false
注記

各行の最後にあるバックスラッシュ \ は、Linux プラットフォームおよび UNIX プラットフォームでのみ機能する行継続を表します。Windows プラットフォームでは、バックスラッシュを削除し、引数をすべて 1 行に配置します。

オプション

オプションは、-DName=Value 構文を使用して archetype 生成コマンドに提供されます。オプションのほとんどは前述の mvn archetype:generate コマンドのように設定する必要がありますが、生成されたプロジェクトをカスタマイズするためにいくつかのオプションを変更できます。生成された API コンポーネントプロジェクトをカスタマイズするために使用できるオプションを以下の表に示します。

名前説明

groupId

(汎用 Maven オプション) 生成された Maven プロジェクトのグループ ID を指定します。デフォルトでは、この値は生成されたクラスの Java パッケージ名も定義します。そのため、この値を希望する Java パッケージ名と一致するように選択することが推奨されます。

artifactId

(汎用 Maven オプション) 生成された Maven プロジェクトのアーティファクト ID を指定します。

name

コンポーネントの名前この値は、生成されたコードでクラス名を生成するために使用されます (よって、名前が大文字で始まることが推奨されます) 。

scheme

このコンポーネントの URI で使用するデフォルトのスキーム。このスキームが既存の Camel コンポーネントのスキームと競合しないようにしてください。

archetypeVersion

(Maven の汎用オプション) 正確には、コンポーネントをデプロイする予定であるコンテナーによって使用される Apache Camel バージョンになります。ただし、必要に応じて、プロジェクトの生成に Maven 依存関係のバージョンを変更することもできます。

生成されたプロジェクトの構造

コード生成ステップが正常に完了すると、新しい Maven プロジェクトが含まれる新しいディレクトリー camel-api-example を確認できるはずです。camel-api-example ディレクトリー内に以下の一般的な構造があることを確認できます。

camel-api-example/
    pom.xml
    camel-api-example-api/
    camel-api-example-component/

プロジェクトのトップレベルは集約 POM pom.xml で、以下のように 2 つのサブプロジェクトをビルドするように設定されます。

camel-api-example-api

API サブプロジェクト (名前は ArtifactId-api) は、コンポーネントに変換する予定の Java API を保持します。独自に作成した Java API で API コンポーネントを指定する場合は、Java API コードを直接このプロジェクトに配置できます。

API サブプロジェクトは、以下のいずれかの目的で使用できます。

  • Java API コードをパッケージ化する (Maven パッケージとして利用できない場合)。
  • Java API の Javadoc を生成する (API コンポーネントフレームワークに必要なメタデータを提供)。
  • API の説明から Java API コードを生成する (REST API の WADL 記述など)。

ただし、場合によっては、これらのタスクを実行する必要がない場合があります。たとえば、API コンポーネントのベースとなるサードパーティー API が、Maven パッケージで Java API および Javadoc をすでに提供している場合がこれに該当します。このような場合には、API サブプロジェクトを削除できます。

camel-api-example-component
コンポーネントサブプロジェクト (名前は ArtifactId-component) は、新規 API コンポーネントの実装を保持します。これには、コンポーネント実装クラス (Java API から API マッピングクラスを生成する) と camel-api-component-maven プラグインの設定が含まれます。