JBossFuse-クイックガイド

この章では、エンタープライズサービスバスの要点から始めます。以下に、ESBの詳細な説明と、その長所、短所、および理解を容易にするためのいくつかの図を示します。

ESBとは何ですか?

ESBはEnterpriseServiceBusの略です。最も単純な形式のESBは、複数のアプリケーションが通信するのを支援する情報ハイウェイとして機能するミドルウェアです。

エンタープライズの世界では、さまざまなソリューションを開発しています。これらのソリューションは、異なるテクノロジーと異なるデータ形式を使用する場合があります。これらのテクノロジーでは通信やデータ形式の互換性が異なるため、これらのソリューションを一緒に使用するのは面倒になります。したがって、私たちはそれを可能にする技術が必要ですloosely coupled integration これらの異なるソリューション間。

ESBは、すべてのアプリケーションの中央に配置され、アプリケーション間のメッセージルーティングを容易にする「ハブ」になることで、この統合の問題を単純化することを目的としています。ESBはメディエーターとして機能し、情報ハイウェイとして機能し、データ変換ルーティングを処理し、コーダーまたは開発者が自分のアプリケーションロジックに集中できるようにします。

ESBが特別に設計された問題を理解し、解決策が簡単になると、ESBの理解は非常に簡単になります。さまざまな言語で記述され、さまざまなデータ形式を使用してさまざまなマシンで実行され、情報を共有して統合されたビジネスプラットフォームを形成する、さまざまなシステムを有効にする方法を明確に理解する必要があります。

統合の問題

エンタープライズプラットフォームでは、複数のアプリケーションが連携してビジネス機能全体を提供するのが一般的ですが、これらのアプリケーションの統合が最も頻繁に発生する問題です。アプリケーションが成長するにつれて、時間とともにさらに困難になります。

各アプリケーションは、独自の形式でデータを入力および出力できます。このアプローチは、アプリケーションの数が少ない場合はうまく機能しますが、アプリケーションの数が増えるにつれて、統合ホイールもより良いアプローチでかき混ぜる必要があります。たとえば、ビジネスの特定のアプリケーションを変更する必要がある場合、そのマスターアプリケーションに依存しているすべてのアプリケーションの出力または入力データ形式が影響を受けます。

このようなアプローチは、緊密に結合されたアーキテクチャを期待する統合の最大のハードルとして機能します。ここでESBが登場します。各アプリケーションは、他のアプリケーションと直接通信する必要はありません。代わりに、すべてのアプリケーションがESBと通信し、ESBが情報のルーティングと内部データ形式の変換を処理します。

なぜESBなのか?

以下は、エンタープライズサービスバスが不可欠である理由を説明するいくつかのポイントです。

  • ESBは、バリアント互換アプリケーションとの統合の問題を単純化することを目的としています。

  • ミドルウェアとして機能し、すべてのアプリケーションのメディエーターとして機能し、アプリケーション間のメッセージルーティングを容易にします。

  • すべてのアプリケーションが他のすべてのアプリケーションと直接インターフェースする代わりに、各アプリケーションはESBへのインターフェースを1つだけ持つようになりました。

  • ESBは、メッセージを共通の形式との間で変換し、宛先にルーティングする責任があります。

  • このアプローチの大幅な節約は、既存のアプリケーションのいずれかを置き換える必要がある場合に役立ちます。たくさんの新しいインターフェースを作成する代わりに、(アプリケーションとESBの間で)気にするインターフェースは1つだけになりました。

SOAとESB?

SOAとESBは一般的に同じ意味で使用されますが、まったく異なります。

SOAは、アプリケーションが通信プロトコルを介してネットワーク上のサービスとして機能を公開できるようにするデザインパターンです。一方、ESBは、異種システム間の通信を容易にするモデルですが、ESBは、SOAを実装する際のバックボーンとして使用できます。

JBoss Fuseは、RedhatによるオープンソースのESBソリューションです。これは、コミュニティプロジェクトであるApacheServicemixに基づくエンタープライズソリューションです。

ヒューズへの統合

JBoss Fuseは、エンタープライズアプリケーションの迅速な統合を可能にする軽量で柔軟な統合プラットフォームです。

Fuseは当初、2012年にRedhatに買収されたProgressive softwareInc。によって開発されました。JBossFuse6.1.0.redhat-379GAは、公式WebサイトからダウンロードできるFuseの安定バージョンです。

建築

Fuseは、さまざまなテクノロジーを1つの製品として組み合わせています。

コンポーネント

Apache CXF

Apache CXFは、SOAP&RestWebサービスの開発もサポートするオープンソースのWebサービス開発フレームワークです。

Apache Camel

Apache Camelは、EIPベースの統合フレームワークです。EIPまたはエンタープライズ統合パターンは、エンタープライズ統合で繰り返し発生する問題に対する特定されたソリューションです。完全な統合ソリューションは、これらの事前定義されたすぐに使用できるパターンの組み合わせを使用して、気象的に実現できます。

これにより、Java、Spring DSL、Scalaなどのいくつかのドメイン固有言語でルーティングロジックを記述できます。

Apache AMQ

Apache AMQは、JMS標準に従って信頼性の高いメッセージングシステムを提供するJMSです。これは、JMS仕様をサポートするだけでなく、JMS仕様に含まれていないいくつかのエキサイティングで便利な機能も提供します。

アパッチカラフ

Apache Karafは、アーティファクトのランタイムとして機能する軽量のOSGiコンテナーです。Apache Karafは、JVMと比較して本質的に動的です。実行時にモジュールをインストールまたはアンインストールできます。FuseのすべてのアーティファクトはKarafにデプロイされます。

ファブリック

ファブリックは、大規模な分散環境でアーティファクトのデプロイメントを管理する簡単な方法を提供します。複数のヒューズインスタンスすべてを一元管理します。

ヒューズのインストール

Fuseのインストールは非常に簡単です。他のJBoss製品と同様に、Fuseは抽出可能なzipファイルとして提供され、いくつかのマイナーな構成変更の後、直接開始できます。

Fuseのインストールは4ステップのプロセスです-

ダウンロード

次のリンクからFuse6.1.0GAをダウンロードします。 http://www.jboss.org/

解凍する

他のすべてのJBoss製品と同様に、Fuseもプラットフォームに依存しないzipです。

ダウンロードしたファイルを、Fuseインストールディレクトリにしたい宛先ディレクトリに解凍します。このディレクトリは、Fuseインスタンスの存続期間中同じである必要があるため、賢明に選択してください。

Note − Fuseは他のJBoss製品と同様に解凍して起動しますが、インストールの完了後にFuseのインストールをある場所から別の場所に移動することはお勧めしません。

構成、設定

Fuseを解凍すると、抽出されたディレクトリ内に次のディレクトリが見つかります-

  • bin
  • etc
  • deploy
  • lib
  • licenses
  • extras
  • quickstarts

そのうち2つのディレクトリのみを使用します binetc

事実上、Fuseを抽出した後、Fuseを直接開始できるはずですが、これにより、実稼働環境には推奨されないすべてのデフォルト構成でFuseが開始されます。Fuseを起動する前に、次の変更を行うことを強くお勧めします。

環境変数を設定する

  • 次の環境変数を設定します– JAVA_HOME

  • 変数はJavaインストールディレクトリを指している必要があります– M2_HOME

  • 変数はMavenインストールディレクトリを指している必要があります– PATH

  • JavaおよびMaven実行可能ファイルを含めるようにpath変数を設定します。

ウィンドウズ

Windowsでは、以下の手順に従って設定を行うことができます-

スタート→マイコンピュータ→右クリック→プロパティ→システムの詳細設定→環境変数。

UNIXとクローン

ユーザーごとに、bashプロファイルがあります *nixオペレーティングシステム。このファイルを変更することで、既存のシステム変数を追加または編集できます。

$ vi ~/.bash_proflle

Note−このファイルの変更は永続的です。元のファイルを変更する前に、既存のファイルのバックアップを取ることを強くお勧めします。

基本構成

JBoss Fuseの基本設定について説明します。そのためには、次のコマンドから開始する必要があります。 Edit $FUSE_INSTALLATION_DIR/etc/

  • user.properties

    • #admin=admin,admin

    • これは、必要なユーザー名を持つ最初の管理者、パスワードを持つ2番目の管理者に応じて変更する必要があります。3番目の管理者は役割を示しているため、そのままにしておくことができます。#を削除することを忘れないでください。

    • 例– FuseAdmin = FusePAss、admin

  • System.properties

    • karafName = root

      • これは、Karafインスタンスに付ける名前を示します。

      • Cont1のように好きな名前を付けることができます。

      • 指定するこの名前が一意の名前であり、Fuseの別のインスタンスによってまだ使用されていないことを確認してください。

  • org.ops4j.pax.web.cfg

    • Org.osgi.service.http.port = 8181

    • このプロパティは、Fuseが提供するブラウザベースのインターフェイスHAWTIOにアクセスするために使用されるポートを示します

    • HAWTIOは、6.0以降で利用可能なFuseへの組み込みブラウザインターフェイスです。

  • org.ops4j.pax.url.mvn.cfg

    • org.ops4j.pax.url.mvn.localRepository = D:/ repository

    • このプロパティは、FuseがアーティファクトをインストールするMavenのlocalRepositoryへのパスを示します。

    • org.ops4j.pax.url.mvn.settings = D:/Maven/conf/settings.xml

    • このプロパティは、FuseがMavenからアーティファクトを取得するために使用するsettings.xmlを示します。

Mavenの構成

MavenはFuseをインストールするための前提条件です。Mavenが何であるかわからない場合は、を参照してください。http://www.tutorialspoint.com/maven/

Mavenは、Fuseアーティファクトを構築するために使用される構築ツールです。アーティファクトをインストールするコマンドを発行すると、Fuseは最初にMavenローカルリポジトリでアーティファクトを検索します。したがって、Mavenがインストールされている場所とMavenのローカルリポジトリのパスをFuseに通知する必要があります。

$ FUSE_INSTALLATION_DIR / etc /を編集しますorg.ops4j.paxurl.mvn.cfg

次の2つのプロパティを更新します-

  • org.ops4j.pax.url.mvn.settings = $ M2_HOME / conf /settings.xml
  • org.ops4j.pax.url.mvn.localRepository = $ local_repo

Note −変更してください $local_repo Mavenssettings.xmlに記載されているローカルリポジトリの実際のパスを使用します。

実行

基本的な構成変更を行った後、Fuseを起動できます。Fuseで動作するすべてのバイナリファイルはにあります$FUSE_INSTALLATION_DIR

ヒューズを起動するには2つの方法があります-

  • 使用する ./fuse

    • これにより、Fuseを起動したのと同じウィンドウですべての進行状況とログを確認できます。

    • 以下に示すように、同じ端末にKarafコンソールが表示されます。

Note−これにより、コンソールモードでヒューズが開始されます。つまり、ユーザーがセッションからログアウトするか、ターミナルを閉じると、ヒューズプロセスも停止します。これは、本番または開発のシナリオでは望ましくありません。このスクリプトは、Fuseのデバッグにのみ使用してください。

  • 使用する ./start

    • これにより、進行状況も画面にログが表示されませんが、バックグラウンドでFuseが開始され、ユーザーがセッションを終了したり端末を閉じたりしてもFuseサービスが停止することはありません。

    • 実際のアプリケーションでは、このタイプの動作が望まれます。ターミナルを閉じても、ヒューズはバックグラウンドで動作しているはずです。

    • バックグラウンドで実行されているFuseに接続する場合は、次を使用できます。 client 同じフォルダにあるスクリプト。

    • 次のスクリーンショットに示すような表示が得られるはずです。

    • クライアントスクリプトを終了しても、Fuseサービスは停止しません。ヒューズコンソールを閉じるだけです。

HAWTIO

Fuseは、FMC(Fuse管理コンソール)を使用して、Fuseへの完全なGUIアクセスも提供します。以下のURLでGUIを見つけることができますhttp://localhost:8181

コマンドを実行して行ったすべてのことは、このブラウザーベースのGUIにアクセスすることでも実行できます。複数のコンテナがあり、Fabric環境で実行している場合に非常に役立ちます。

この章では、Apache Karafと、それが軽量OSGiコンテナーと呼ばれる理由とその利点およびその他の重要な機能について説明します。

JVMの問題

JVMまたはJava仮想マシンは、実際の仮想マシンとして機能しません。内部で実行されているコンポーネントをその場で停止、開始、または再起動できるマシン。クラスレベルでのホットデプロイメントが許可される場合がありますが、アプリケーションのコンポーネントを再起動せずに仮想マシンにデプロイまたはアンデプロイする方法はありません。

この問題を解決し、Javaアプリケーションのモジュール性を可能にするために、FuseはApacheKarafと呼ばれるOSGiベースのランタイムを使用します。

OSGi

OSGiテクノロジーは、Javaの動的コンポーネントシステムを定義する一連の仕様です。これらの仕様により、アプリケーションが(動的に)多くの異なる(再利用可能な)コンポーネントで構成される開発モデルが可能になります。

OSGiの利点

  • Reduced Complexity −アプリケーションは、実装の詳細を相互に隠すコラボレーションコンポーネントとして構築されているため、複雑さが軽減されます。

  • Reusability −多くのコンポーネントは、コンテナにデプロイされた同じコンポーネントを活用できます。

  • Deployment − OSGiは、コンテナーを再起動せずに、ライフサイクル管理APIを使用して、コンポーネントの開始、停止、および更新をオンザフライでサポートします。

バンドルと機能

以下は、バンドルと機能の比較です。

バンドル

バンドルは、JVMに対するjarとはOSGiと同等です。バンドルは、OSGiコンテナーにデプロイ可能なアーティファクトです。バンドルは、連携して、または独立して機能してアプリケーションを形成するコンポーネントです。

これらのバンドルは、コンテナーを再起動せずに、実行時にインストール、アンインストール、更新、開始、または停止できます。

特徴

機能は、複数のバンドルを一緒に展開する方法です。バンドルをグループにデプロイする方が理にかなっている場合があります。機能を使用すると、1つのコマンドでバンドルのグループをデプロイできます。

なぜ別のコンテナ?

Apache KarafはOSGiベースのランタイムであり、アプリケーションバンドルが実行される場所です。Fuseは、バンドルが実行およびコラボレーションしてビジネス機能を提供するランタイムとしてApacheKarafを使用します。

Karafは、OSGiフレームワークであるFelixとequinoxに基づいて構築されています。

Karafアーキテクチャ

Apache Karafは、基本的なOSGiランタイムに次の追加機能を追加します。

ホットデプロイメント

Karafはホットデプロイメントをサポートしています。ホットデプロイディレクトリが含まれています。このディレクトリに配置されたものはすべて、自動的にデプロイされ、バンドルとしてKarafにインストールされます。

ロギング

Karafは、のすべてのバンドルのログを生成することにより、集中ログを提供します $Fuse_home/data/log。ロガー構成はで編集できますorg.ops4j.pax.logging.cfg$Fuse_home/etc directory

管理コンソール

Karafは、実行中のfuseのインスタンスと対話するための洗練された明快な管理コンソールを提供します。また、実行時にコンポーネント(バンドル)を管理および監視するために使用できる、プリインストールされた一連のコマンドも提供します。このコンソールは拡張可能であるため、コンソールに新しいバンドルを追加することで、コンソールに新しいコマンドを追加できます。

SSHアクセス

Karafは、SSHを使用したこの管理コンソールへのリモートアクセスを許可します。有効な資格情報を持っている人は誰でも、SSH端末を介してkaraf管理コンソールに接続できます。

この章では、Apache Camelとは何か、エンドポイント間でデータを効果的にルーティングする方法について、いくつかの例とともに説明します。

Apache Camelとは何ですか?

Apache Camelは、2007年の初めに開始されたオープンソースの統合フレームワークです。

これは、EIP(Enterprise Integration Pattern)ベースのアプローチであり、エンタープライズ統合の問題を解決するために使用できる、すぐに使用できるパターンの実装をいくつか提供します。EIPは、エンタープライズ統合で十分に文書化され、繰り返し発生する問題に対する実証済みのソリューションに他なりません。

Camelは、データ形式の変換やエンドポイントの接続などの負荷をかけながら、エンドポイント間でデータを効果的にルーティングするため、ルーティングおよびメディエーションエンジンとしても知られています。

基本例

ApacheCamelを使用するための前提条件は次のとおりです。

  • Java
  • Maven
  • Redhat JBoss Fuse 6.1-GA-379

アプリケーションの基本的なスケルトンを作成する

mvn:archetype generate 
–DgroupId = com.tutorialpoint.app 
–DartifactId = camel-first-app 
–DarchetypeGroupId = org.apache.camel.archetypes
–DarchetypeArtifactId = camel-archetype-spring 
–DinteractiveMode = false -X

これにより、次のディレクトリ構造が生成されます。

これは、生成されるCamelアプリケーションの基本的なスケルトンです。

camel-context.xmlを編集します

編集 camel-first-app → src → main → resources → META-INF\spring\camel-context以下のように一致する.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">

   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input file
         (leaving them in place - see the 'noop' flag) 
         then performs content based routing on the message using XPath -->
			
      <route>
         <from uri = "file:///d:/src/data?noop=false"/>
         <choice>
            <when>
               <xpath>/person/city = 'London'</xpath>
               <log message = "UK message"/>
               <to uri = "file:///d:/target/messages/uk"/>
            </when>
				
            <otherwise>
               <log message = "Other message"/>
               <to uri = "file:///d:/target/messages/others"/>
            </otherwise>
				
         </choice>
			
      </route>
   </camelContext>
</beans>

pom.xmlを編集します

<plugins> </ plugins>内に次のコードを追加します

<plugin>
   <groupId>org.apache.felix</groupId>
   <artifactId>maven-bundle-plugin</artifactId>
   <version>2.3.4</version>
   <extensions>true</extensions>
	
   <configuration>
      <instructions>
         <Bundle-SymbolicName>
            ${project.artifactId}
         </Bundle-SymbolicName>
         <Import-Package>*</Import-Package>
      </instructions>
   </configuration>
	
</plugin>

パッケージタイプをから変更 jar → bundle

<packaging>bundle</packaging>

次のコマンドを使用してプロジェクトをビルドします-

mvn clean install

プロジェクトをFuseにインストールする

を使用してFuseを開始します Fuse.bat/start.bat。Fuseを使用して開始した場合start.bat、 使用する client.batヒューズに接続します。次のスクリーンショットに示すようなUIが表示されます。

これは、KarafおよびFuseコマンドにアクセスするためのCLIです。

install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

プロジェクトが実行されているかどうかをテストします

これで、アプリケーションがFuseにインストールされます。内部のデータディレクトリをコピーしますcamel-first-app に入れます D:/src/ そして、city = Londonのメッセージをにコピーする必要があります D:/target/merssages/uk

入力ファイルをに配置します D:/src/data

Input

Message1.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

Message2.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>

Output

D:/ target / messages / uk

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "james">
   <firstName>James</firstName>
   <lastName>Strachan</lastName>
   <city>London</city>
</person>

D:/ target / messages / others

<?xml version = "1.0" encoding = "UTF-8"?>
<person user = "hiram">
   <firstName>Hiram</firstName>
   <lastName>Chirino</lastName>
   <city>Tampa</city>
</person>

この章では、さまざまなラクダの概念を理解します。まず、基本的な例を取り上げて、コアコンセプトを理解することから始めましょう。

CamelContext

すべてのラクダアプリケーションには、少なくとも1つのCamelContextがあります。これは、ラクダのルートを追加する場所です。に似ていますApplicationContext 春の。

キャメルコンテキストは、すべてのものをまとめるコンテナと考えることができます。1つのラクダコンテキストは、その中に複数のルートを持つことができます。

ルート

CamelContextには、1つ以上のルートが含まれる場合があります。ルートは、データがラクダのコンテキストで1つのエンドポイントから別のエンドポイントにどのように流れるかを定義する統合ロジックです。

終点

エンドポイントは、システムがメッセージを送受信できるチャネルの終わりです。これは、通信言語で宛先またはソースと呼ばれるものです。

コンポーネント

コンポーネントはCamelの拡張ポイントです。コンポーネントは、テクノロジー、データ形式、トランスフォーマーなどへのインターフェイスにすることができます。また、エンドポイントのファクトリとして機能する場合もあります。

EIP

EIPはEnterpriseIntegrationPatternの略です。これらは、繰り返し発生する問題に対する特定されたよく知られた解決策です。Camelは、ほとんどのエンタープライズ統合パターンをサポートしています。

コンテンツベースのルーター

CBRパターンを使用すると、入力ファイルの内容に従ってデータをルーティングできます。

このパターンは、入力の本文の内容に応じて値をルーティングする必要がある場合に使用されます。

次の例では、からデータを読み取ります D:/data/inputディレクトリ。読み取った後、データタグ内の値タグをチェックします。値タグにが含まれている場合value1、に送信されます D:/value1、含まれている場合 value2、に送信されます D:/value2 これらの両方がない場合は、他の人に送信されます。

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "file:///D:/data/input"/>
      <choice>
         <when>
            <xpath>/data/value = 'value1'</xpath>
            <to uri = "file:///D:/value1"/>
         </when> 
         <when>
            <xpath>/data/value = 'value2'</xpath>
            <to uri = "file:///D:/value2"/>
         </when>  
			
         <otherwise>
            <to uri = "file:///D:/others "/>
         </otherwise>
			
      </choice>
   </route>
</camelContext>

Input

D:/data/input/message1.xml

<data>
   <value>value1</value>
</data>

D:/data/input/message2.xml

<data>
   <value>value2</value>
</data>

Output

D:/ value1 /

<data>
   <value>value1</value>
</data>

D:/ value2 /

<data>
   <value>value2</value>
</data>

スプリッター

スプリッターパターンは、入力データをより小さなチャンクに分割するために使用されます。

このパターンは、チャンクに分割する必要がある巨大なデータ入力でほとんどの場合使用されるため、処理可能になります。入力トークン文字列に基づいて、入力をより小さなフラグメントに分割します。

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "file:///D:/inbox"/>
      <split streaming = "true">
         <tokenize token = "order" xml = "true"/>
         <to uri = "activemq:queue:order"/>
      </split>
   </route>
</CamelContext>

Input

D:/inbox/message.xml

<order>
   <data>
      <value>value1</value>
   </data>
</order>

<order>
   <data>
      <value>value2</value>
   </data>
</order>

<order>
   <data>
      <value>value3</value>
   </data>
</order>

Output

AMQをチェックすると、3つのメッセージが投稿されていることがわかります。

<order>
   <data>
      <value>value4</value>
   </data>
</order>

受信者リスト

受信者リストパターンは、受信者のリストをメッセージ本文自体から取得する必要がある場合に使用されます。

次の例では、customerタグにコンマ区切りの文字列リストとしてリストされているすべての受信者にメッセージが送信されます。

<CamelContext xmlns = "http://camel.apache.org/schema/spring">
   <route>
      <from uri = "jms:xmlOrders" />
      <recipientList>
         <xpath>/order/customer</xpath>
      </recipientList>
   </route>
</camelContext>

その他のEIP

Camelは、特定されたほぼすべてのEIPをサポートします。一般的に使用されるEIPのいくつかは以下のとおりです。

  • Log −メッセージ全体またはその一部をログに記録する

  • Message Filter −メッセージの内容のフィルタリング

  • Re-Sequencer −すべてのトークンを順番に取得するには

  • Wiretap −移動メッセージを検査する

EIPとその使用法の完全なリストは、Camelの公式ドキュメントにあります。 http://camel.apache.org/eip.html

Camelでの例外処理

Using Error Handler −これはラクダの例外を処理する最も簡単な方法です。

これを使用するには、エラーハンドラークラスBeanを構成し、それを参照として提供する必要があります。 CamelContext errorHandlerRef 属性。

<bean id = "loggingErrorHandler" class = "org.apache.camel.builder.LoggingErrorHandler">
   <property name = "logName" value = "mylogger.name"/>
   <property name = "level" value = "DEBUG"/>
</bean>

<camelContext errorHandlerRef = ” loggingErrorHandler” >
   …
</camelContext>

最後にキャッチを試すを使用する

キャメルはJavaスタイルもサポートしています Try Catch Finally block エラー処理用。

Javaと同様に、次の3つのブロックがあります-

  • doTry ブロックには、例外を生成する可能性のあるコードが含まれています。

  • doCatch ブロックには、例外が発生した場合に実行する必要のあるコードが含まれています。

  • doFinallyブロックには、例外に関係なく実行する必要のあるコードがあります。例外が発生したかどうかに関係なく、常に実行されます。

Note−モックはコンポーネントをテストしているため、他の目的にはお勧めしません。これは、テスト駆動開発のjMOckコンポーネントと同様に、テストに使用されるラクダのコンポーネントです。

<route>
   <from uri = "direct:start"/>
   <doTry>
      <process ref = "someProcesorThatmayFail"/>
      <to uri = "mock:result"/>
		
      <doCatch>
         <exception>java.io.IOException</exception>
         <exception>java.lang.IllegalStateException</exception>
         <to uri = "mock:catch"/>
      </doCatch>
		
      <doFinally>
         <to uri = "mock:finally"/>
      </doFinally>
		
   </doTry>
</route>

上記の例では、catchブロックで処理する必要のある例外のリストを指定できます。

バンドルをFuseにデプロイする

を使用してFuseを開始します Fuse.bat/start.bat

start.batを使用してFuseを起動する場合は、client.batを使用してFuseに接続します。次のスクリーンショットに示すようなUIが表示されます。

これは、KarafおよびFuseコマンドにアクセスするためのCLIです。

install –s mvn:group.id /artifact.id/version 
e.g. install –s mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

この章では、Apache CXFとは何か、SOAPおよびRestWebサービスの開発にどのように役立つかについて説明します。

Apache CXFとは何ですか?

Apache CXFは、SOAPおよびRestWebサービスの開発に利用できるWebサービス開発フレームワークです。CXFは完全に準拠していますJAX-RS and JAX-Ws 標準。

現在、最も広く使用されているWebサービス開発フレームワークです。CXFは、現在徐々にCXFに置き換えられているAxis2を学習し、改善しました。

CXFとAxis2

CXF Axis2
改善点

現在、CXFが最も使用されているフレームワークです。

Axis2よりも多くの改善があります

Axis2は徐々にCXfに置き換えられています。

CXFと比較してより多くのコードが必要です

必要なコード

CXFは、Axis2と比較して必要なコードが少なくて済みます

Axis2は比較的多くのコードを必要とします

標準コンプライアンス

CSFはJAX-RSおよびJAX-WSに完全に準拠しています

Axis2はJAX-RSおよびJAX-WSに完全には準拠していません

Springと互換性があります

はい

番号

フロントエンドの分離

フロントエンドとJAX-WSコードの明確な分離

クリーンな分離は提供されません

石鹸

SOAPはSimpleObject AccessProtocolの略です。これは、2つのシステム間でWebサービスを介して構造化情報を交換するためのプロトコルです。データの構造化には主にXMLに依存し、メッセージのネゴシエーションと送信にはHTTPまたはSMTPを使用します。

SOAPWebサービスを開発するには2つのアプローチがあります-

  • Code first −このアプローチでは、WSDLはコードから生成されます。

  • Contract first −最初の契約では、コードはWSDLから生成されます。

CXFを使用したSOAP開発

Mavenを構成する

次のプロファイルをMavenのsettings.xmlに追加します。

<profiles>
   <profile>
      <id>Jboss-Fuse</id>
		
      <activation>
         <activeByDefault>true</activeByDefault>
      </activation>
		
      <repositories>
         <repository>
            <id>fusesource</id>
            <url>http://repo.fusesource.com/nexus/content/groups/public/</url>
            <snapshots>
               <enabled>false</enabled>
            </snapshots>
            <releases>
               <enabled>true</enabled>
            </releases>
         </repository>
      </repositories>
		
   </profile>
</profiles>

スケルトンを作成する

mvn archetype:generate
-DarchetypeGroupId = org.apache.servicemix.tooling 
-DarchetypeArtifactId = servicemix-cxf-code-first-osgi-bundle 
-DarchetypeVersion=2012.01.0.redhat-60024 
-DgroupId = org.fusesource.example 
-DartifactId = cxf-basic 
-Dversion = 1.0-SNAPSHOT

Build Web Service Project

mvn clean install

Install web-service into Fuse using the following command

JBossFuse:karaf@root>install -s mvn:org.fusesource.example/cxf-basic/1.0-SNAPSH

Check if bundle has registered SOQP web-service

URLを開く http://localhost:8181/cxf

Webサービスは次のようにリストされている必要があります。

Testing Web-Service

mvn -Pclient

INFO −サービスの作成{http://ws.totorials.com/}クラスcom.toのPersonService

torials.ws.Person
Invoking getPerson...
getPerson._getPerson_personId = Guillaume
getPerson._getPerson_ssn = 000-000-0000
getPerson._getPerson_name = Guillaume
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.668 s
[INFO] Finished at: 2016-02-15T21:01:20+05:30
[INFO] Final Memory: 10M/37M
[INFO] ------------------------------------------------------------------------

まず、RESTはRepresentational StateTransferの略です。これは、ステートレスでキャッシュ可能なクライアントサーバープロトコル(ほとんどの場合HTTP)に基づいてWebサービスを開発する方法です。

REST Webサービスは、HTTP要求を使用して、ネットワークからデータを投稿、取得、削除します。

CXFを使用したREST開発

簡単なMavenクイックスタートプロジェクトを作成する

mvn archetype:generate 
-DgroupId = com.tuts.abhinav 
-DartifactId = rest-service
-DarchetypeArtifactId = maven-archetype-quickstart 
-DinteractiveMode = false

依存関係を追加する

<dependency>
   <groupId>org.apache.servicemix.specs</groupId>
   <artifactId>org.apache.servicemix.specs.jsr311-api-1.1.1</artifactId>
   <version>1.9.0</version>
   <scope>provided</scope>
</dependency>

<dependency>
   <groupId>org.apache.servicemix</groupId>
   <artifactId>servicemix-http</artifactId>
   <version>2013.01</version>
</dependency>

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.16</version>
</dependency>

ビルド命令を追加

<build>
   <defaultGoal>install</defaultGoal>
   <plugins>
      <plugin>
         <groupId>org.apache.felix</groupId>
         <artifalctId>maven-bundle-plugin</artifactId>
         <version>2.3.4</version>
         <extensions>true</extensions>
			
         <configuration>
            <instructions>
               <Bundle-SymbolicName>rest-example-database-post-method
                  </Bundle-SymbolicName>
               <Import-Package>* </Import-Package>
            </instructions>
         </configuration>
			
      </plugin>
   </plugins>
</build>

Fuseプラグインリポジトリを追加する

<pluginRepositories>
   <pluginRepository>
      <id>fusesource.m2</id>
      <name>FuseSource Community Release Repository</name>
      <url>http://repo.fusesource.com/nexus/content/repositories/releases</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
		
      <releases>
         <enabled>true</enabled>
      </releases>
   </pluginRepository>
<pluginRepositories>

リポジトリを追加する

<repositories>
   <repository>
      <id>fusesource.m2</id>
      <name>FuseSource Community Release Repository</name>
      <url>http://repo.fusesource.com/nexus/content/repositories/releases</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
		
      <releases>
         <enabled>true</enabled>
      </releases>
		
   </repository>
	
   <repository>
      <id>fusesource.ea</id>
      <name>FuseSource Community Early Access Release Repository</name>
      <url>http://repo.fusesource.com/nexus/content/groups/ea</url>
      <snapshots>
         <enabled>false</enabled>
      </snapshots>
      <releases>
         <enabled>true</enabled>
      </releases>
   </repository>
	
</repositories>

サービスクラスの作成

com / tuts /の下にクラスUserService.javaを作成します

package com.tuts;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/UserService_1")
public class UserService {
   @GET
   @Path("/get_data")
   @Produces(MediaType.APPLICATION_JSON)
	
   public String getUser() {
      String reponse = "This is standard response from REST";
      return reponse;
   }
}

Blueprint.xmlを作成します

/ src / main / resources / OSGI-INF / blueprintblueprint.xmlの下にblueprint.xmlを作成します

<?xml version = "1.0" encoding = "UTF-8"?>
<blueprint xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:jaxrs = "http://cxf.apache.org/blueprint/jaxrs"
   xsi:schemaLocation = "http://www.osgi.org/xmlns/blueprint/v1.0.0 
   http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
   http://cxf.apache.org/blueprint/jaxrs 
   http://cxf.apache.org/schemas/blueprint/jaxrs.xsd">
	
   <jaxrs:server id = "service" address = "/users">
      <jaxrs:serviceBeans>
         <ref component-id = "userService" />
      </jaxrs:serviceBeans>
   </jaxrs:server>
	
   <bean id = "userService" class = "com.tuts.UserService" />
</blueprint>

FuseにRESTサービスをインストールする

install -s mvn:com.tuts.abhinav/rest-service/1.0-SNAPSHOT

バンドルに登録済みのWebサービスがあるかどうかを確認します

URLを開く http://localhost:8181/cxf

Webサービスをテストする

URLを開く http://localhost:8181/cxf/users12/UserService_1/get_data

この章では、ActiveMQと、ActiveMQがメッセージのブローカーとして機能してアプリケーションが相互に通信できるようにする方法について説明します。

AMQとは何ですか?

ActiveMQは、Javaで記述されたオープンソースのメッセージブローカーです。これは、JMS1.1標準に完全に準拠しています。

JMSは、メッセージベースのシステムの開発を可能にする仕様です。ActiveMQは、アプリケーション間に存在するメッセージのブローカーとして機能し、アプリケーションが非同期で信頼性の高い方法で通信できるようにします。

メッセージングの種類

理解を深めるために、以下で説明するメッセージングオプションには2つのタイプがあります。

ポイントからポイントへ

このタイプの通信では、ブローカーは1人のコンシューマーにのみメッセージを送信し、他のコンシューマーはブローカーからメッセージを受信するまで待機します。消費者は同じメッセージを受け取りません。

コンシューマーがない場合、ブローカーはコンシューマーを取得するまでメッセージを保持します。このタイプの通信は、Queue based communicationここで、プロデューサーはメッセージをキューに送信し、1つのコンシューマーのみがキューから1つのメッセージを取得します。複数のコンシューマーが存在する場合、次のメッセージを受け取る可能性がありますが、他のコンシューマーと同じメッセージを受け取ることはありません。

パブリッシュ/サブスクライブ

このタイプの通信では、ブローカーはすべてのアクティブなコンシューマーに同じメッセージのコピーを送信します。このタイプの通信は、Topic based communicationブローカーは、特定のトピックをサブスクライブしているすべてのアクティブなコンシューマーに同じメッセージを送信します。このモデルは、送信されたメッセージの検証が期待されない一方向通信をサポートします。

キューとトピックの作成

FuseはActiveMQにバンドルされています。FMCコンソール(AMQを操作するためのブラウザーベースのインターフェース)を使用してActiveMQにアクセスできます。

を使用してFMCにログインします localhost:8181 選択します ActiveMQ タブ。

  • +作成をクリックします
  • キュー/トピック名を入力してください
  • ラジオボタンからキュー/トピックを選択します
  • [キューの作成] / [トピックの作成]をクリックします

今、あなたは見ることができるはずです TestQ ルート→キュー→で作成

作成されたトピックを確認するには、root→トピックに従ってください。

キューの内容の閲覧/削除

  • を使用してFMCにログインします localhost:8181

  • ActiveMQタブを選択します

  • ルート→キュー→TestQ <参照するキューを選択>→参照

  • このメッセージの内容を確認するには、その特定のメッセージをクリックしてください。
  • 右上隅に表示されている[削除]ボタンをクリックすると、特定のメッセージを削除できます

この章では、ActiveMQがCamelと連携する方法の基本を学習します。

ActiveMQコンポーネントへの構成

コードでActiveMQキューまたはトピックを使用する前に、ActiveMQComponentを構成する必要があります。ActiveMQComponentの最小構成は、次のプログラムに示すように実行できます。

<bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
   <property name = "brokerURL" value = "tcp://localhost:61616"/>
   <property name = "userName" value = "admin"/>
   <property name = "password" value = "admin"/>
</bean>
  • brokerURL −AMQブローカーのホストとポートを指定します。

  • username −AMQブローカーへの接続に使用するユーザー名を指定します。

  • password −AMQブローカーに接続するためのパスワードを指定します。

キューに接続しています

ActiveMQComponentを構成したので、CamelContextでエンドポイントとして使用できます。

次の形式でAMQエンドポイントを使用します-

Activemq:[queue|topic]:[queueName|topicName]

AMQへのメッセージの書き込み

<?xml version = "1.0" encoding="UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">

このバンドルをFuseコンテナーにデプロイすると、AMQに投稿されたメッセージがファイルとして配置されたことがわかります。 D:/src/data

Input

D:/src/data/input.txt

Test me

Output

AMQからの読み取り

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring
   http://camel.apache.org/schema/spring/camel-spring.xsd">
	
   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input files
         (leaving them in place - see the 'noop' flag)
          then performs content based routing on the message using XPath -->
			 
      <route>
         <from uri = "activemq:queue:TestQ"/>
         <to uri = "file:///d:/src"/>
      </route>
   </camelContext>
	
   <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
      <property name = "brokerURL" value = "tcp://localhost:61616"/>
      <property name = "userName" value = "admin"/>
      <property name = "password" value = "admin"/>
   </bean>
	
</beans>

Input

このバンドルをデプロイすると、D:/ srcにファイルが生成され、メッセージが消費されます。また、そのキューのコンシューマーを表示する必要があります。

Output

D:/ src

Test me

トピックへの書き込み

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring 
   http://camel.apache.org/schema/spring/camel-spring.xsd">
	
   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input files
         (leaving them in place - see the 'noop' flag)
          then performs content based routing on the message using XPath -->
			 
      <route>
         <from uri = "file:///d:/src"/>
         <to uri = "activemq:topic:TestTopic” />
      </route>
   </camelContext>
	
   <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
      <property name = "brokerURL" value = "tcp://localhost:61616"/>
      <property name = "userName" value = "admin"/>
      <property name = "password" value = "admin"/>
   </bean>
	
</beans>

トピックから読む

<?xml version = "1.0" encoding = "UTF-8"?>
<!-- Configures the Camel Context-->
<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://camel.apache.org/schema/spring 
   http://camel.apache.org/schema/spring/camel-spring.xsd">
	
   <camelContext xmlns = "http://camel.apache.org/schema/spring">
      <!-- here is a sample which processes the input files
         (leaving them in place - see the 'noop' flag)
         then performs content based routing on the message using XPath -->
			
      <route>
         <from uri = "activemq:topic:TestTopic"/>
         <to uri = "file:///d:/src2"/>
      </route>
   </camelContext>
	
   <bean id = "activemq" class = "org.apache.activemq.camel.component.ActiveMQComponent">
      <property name = "brokerURL" value="tcp://localhost:61616"/>
      <property name = "userName" value = "admin"/>
      <property name = "password" value = "admin"/>
   </bean>
	
</beans>

Input

D:/src/file1.xml

<order>
   <data>
      <value>value1</value>
   </data>
</order>

<order>
   <data>
      <value>value2</value>
   </data>
</order>

<order>
   <data>
      <value>value3</value>
   </data>
</order>

Output

D:/ src /

<order>
   <data>
      <value>value1</value>
   </data>
</order>

<order>
   <data>
      <value>value2</value>
   </data>
</order>

<order>
   <data>
      <value>value3</value>
   </data>
</order>

ファブリックとは何ですか?

Fabricは、複数のFuseインスタンスに管理およびオーケストレーション機能を提供します。Fabricを使用すると、それに接続されているすべてのFuseインスタンスを単一のポイントから制御できます。通常のヒューズコンテナは、ファブリックとして機能するように変換できます。ファブリックには、コンテナに関するすべての情報を含むデータストアとして機能するファブリックレジストリがあり、管理します。

なぜファブリックなのか?

ファブリックには次の特殊な機能があり、分散環境での使用に最適です。

  • ファブリック内のすべてのコンテナーの状態を監視します。
  • リモートコンテナの開始と停止。
  • 特定のアプリケーションを実行するためにリモートコンテナーをプロビジョニングします。
  • ライブシステムでのアプリケーションのアップグレードとパッチのロールアウト。
  • たとえば、システムの負荷の増加に対処するために、新しいコンテナをすばやく開始してプロビジョニングします。

ファブリックのセットアップ

ファブリックの作成

通常のヒューズコンテナは、次のコマンドを使用してファブリックに変換できます

fabric: create --clean --zookeeper-password myZooPass

他のコンテナをファブリックに接続する-

fabric:join --zookeeper-password myZooPass <fabric_host>:2181 Cont1

Note − <fabric_host>を、ファブリックが実行されている実際のホスト名に置き換えてください。

を使用してブラウザからヒューズ管理コンソールにログインする場合 localhost:8181、次のスクリーンショットに示すように、2つのコンテナが表示されるはずです。ファブリックコンテナは、その前に小さな雲の記号で示されます。

プロファイル

プロファイルには次の情報が含まれています-

  • インストールするバンドル
  • インストールする機能
  • 適用する構成

プロファイルは、ファブリック環境で同じバンドル、機能、および構成のセットを複数のサーバーにインストールする方法を提供します。

同じプロファイルが複数のコンテナに適用され、任意のコンテナからそのプロファイルに変更を加えると、同様の変更が、それが適用される残りのコンテナに自動的に展開されます。

プロファイルの作成

  • FMCにログインします localhost:8181

  • ランタイム→管理

  • 左側の[プロファイル]メニューで、 +

プロファイルに付ける名前を入力し、[作成]をクリックします。

この後、プロファイルを作成する必要があります。

コンテナへのプロファイルの適用

ランタイム→コンテナ→ルート(必要なコンテナを選択)

クリック Addポップアップボックスが表示されます。必要なプロファイルを検索して、もう一度クリックしますAdd

次のスクリーンショットに示すように、プロファイルがリストに表示されます。

バンドルの展開

バンドルをデプロイするには、次のパスを使用します-

ランタイム→コンテナ→ルート(必要なコンテナを選択)→First_profile(プロファイルを選択)

[バンドル]タブをクリックします。バンドルパスを次の形式で設定し、をクリックします+

mvn:group.id/artifact.id/version

例えば: mvn:com.tutorialpoint.app/camel-firt-app/1.0-SNAPSHOT

バンドルがプロファイルに追加され、プロファイルが割り当てられているすべてのコンテナーにデプロイされます。

バンドルのアンデプロイ

バンドルをアンデプロイするには、次のパスを使用します-

ランタイム→コンテナ→ルート(必要なコンテナを選択)→First_profile(プロファイルを選択)

[バンドル]タブをクリックし、削除するバンドルを検索して、[ X。バンドルは、プロファイルが適用されるすべてのコンテナーから削除されます。

子コンテナは、増加する負荷を管理する最も簡単な方法を提供します。システムでトラフィックの突然の負荷が発生し、単一のコンテナで負荷に対応できない場合、完全に新しいコンテナを作成するのではなく、子コンテナのセットを簡単に作成して負荷を分散できます。

子コンテナの作成

を使用してFMCにログインします localhost:8181

次に、次のパスに従います。ランタイム→コンテナ→+作成(右側のボタン)

子名、親コンテナインスタンス数などの詳細を入力します。

クリック Create And Start Container

子コンテナの管理

子コンテナは通常のコンテナとしてのみ機能します。

子コンテナの停止

子コンテナーを停止するには、次のパスに従います。ランタイム→コンテナー→Child1

[停止]をクリックして、子コンテナを停止します。

子コンテナの開始

子コンテナーを開始するには、次のパスに従います。ランタイム→コンテナー→Child1

[開始]をクリックして、子コンテナーを開始します。

この章では、Fuseの操作中に発生する可能性のあるいくつかの既知の問題について説明します。また、これらの問題を解決する方法についても説明します。

コードの変更は反映されません

クライアントスクリプトを使用してFuseインスタンスに接続します。次のコマンドを使用して、問題が発生しているバンドルを検索します。

JBossFuse:karaf@root > list|grep <Bundle Description>
For Example:
JBossFuse:karaf@root > list|grep Camel
[ 255] [Active ] [ ] [ ] [ 60] Fabric8 :: Camel Component (1.0.0.redhat-379)
[ 266] [Active ] [ ] [Started] [ 60] A Camel Spring Route (1.0.0.SNAPSHOT)

Note −上記のコマンドの出力からのバンドルのバンドルID。以下のコマンドを使用します。

JBossFuse:karaf@root > update <bundle id>
JBossFuse:karaf@root > update 266

バンドルがダウンロードされていません

次の2つの理由で発生する可能性があります-

  • Mavenリポジトリが指定されていません
  • バンドルがリポジトリに存在しません

Mavenリポジトリが指定されていません

Mavenは、Fuseアーティファクトを構築するために使用される構築ツールです。アーティファクトをインストールするコマンドを発行すると、Fuseは最初にMavenローカルリポジトリでアーティファクトを検索します。したがって、Mavenがインストールされている場所とMavensローカルリポジトリのパスをFuseに通知する必要があります。

$ FUSE_INSTALLATION_DIR / etc /を編集しますorg.ops4j.paxurl.mvn.cfg

次の2つのプロパティを更新します-

  • org.ops4j.pax.url.mvn.settings = $ M2_HOME / conf /settings.xml
  • org.ops4j.pax.url.mvn.localRepository = $ local_repo

Note − Mavenssettings.xmlに記載されているローカルリポジトリの実際のパスで$ local_repoを変更してください

バンドルがリポジトリに存在しません

Maven設定が設定されていても、バンドルのダウンロード中に問題が発生する場合は、バンドルを確認してください JAR Mavenリポジトリの正しい場所にあります。

たとえば、次のバンドルがダウンロード中にエラーをスローしている場合-

mvn:com.tutorialpoint.app/camel-first-app/1.0-SNAPSHOT

実際のJARが存在する場合は、$ M2_REPO / com / tutorialpoint / app / camel-first-app /1.0-SNAPSHOTをチェックインする必要があります。

Note − $ M2_REPOは、Fuseが使用するように構成されているMavenリポジトリーの実際のパスに置き換える必要があります。

FMC(ブラウザベースのGUI)にログインできない

Users not Created −次のUIを取得しているが、「ログインに失敗しました、禁止されています」というメッセージでログインできない場合。

にユーザーを追加したかどうかを確認します $FUSE_INSTALLATION_HOME/etc/users.properties

ユーザーを追加するための正しい形式は次のとおりです。

Username = Password,Role

HAWTIOポートが異なります

ブラウザのlocalhost:8181でUIを取得することさえできない場合は、URLに正しいポートが記載されているかどうかを確認してください。

$FUSE_INSTALLATION_HOME/etc/org.ops4j.pax.web.cfg

アクセスするポートを使用するには、ファイル内の次のプロパティを編集します。

org.osgi.service.http.port=8181

AMQブローカーが機能していません

61616ポートが開いていて、現在別のポートで使用されていないことを確認してください。同じもののデフォルトの61616ポートを変更したい場合は、で編集できます。$FUSE_INSTALLATION_HOME/etc/System.properties

activemq.port = 61616