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つのディレクトリのみを使用します bin & etc。
事実上、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