apache camel route (Java DSL) を持つ 1 つの osgi バンドルを含む .eba ファイル (エンタープライズ バンドル アーカイブ) を作成しました。camel コンテキストの定義は、ブループリント xml ファイルを介して行われます。.eba ファイルを Websphere Application Server 8.5 にデプロイしようとすると、次の例外が発生しました。
org.apache.aries.application.modelling.ModellerException: CWSAL0126E: バンドル ib-base_0.0.1.SNAPSHOT のモデリング中に例外が発生しました: org.apache.aries.application.modelling.ModellerException: org.osgi.service.blueprint.container. ComponentDefinitionException: サポートされていないノード名前空間: http://camel.apache.org/schema/blueprint .
私のブループリントxmlファイルは次のとおりです。
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/blueprint"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-
blueprint.xsd">
<camel:camelContext id="cbrContext" trace="false">
<camel:packageScan>
<camel:package>a.b.c.d</camel:package>
</camel:packageScan>
</camel:camelContext>
</blueprint>
これが Websphere で失敗する理由はよくわかりません。同じ .eba ファイルが Karaf 3.0.0-SNAPSHOT に正常に展開されます。(このバージョンの Karaf は、Aries ブループリント バージョン 1.0.0 を使用します)。
同じものが使用されているか、Aries Blueprint 1.0.0 の分岐バージョンが Websphere 8.5 で使用されていると思います。
OSGi 仕様に従って、camel: などのカスタム名前空間のブループリント拡張ハンドラーは、キー (osgi.service.blueprint.namespace) の下の OSGi サービス レジストリから取得されます。value 要素は、実際の名前空間 uri を示します。
例えば:
<service interface="org.apache.aries.blueprint.NamespaceHandler">
<service-properties>
<entry key="osgi.service.blueprint.namespace" value="http://camel.apache.org/schema/blueprint"/>
<entry key="osgi.service.blueprint.namespace" value="http://camel.apache.org/schema/blueprint/cxf"/>
</service-properties>
<bean class="org.apache.camel.blueprint.handler.CamelNamespaceHandler">
</bean>
</service>
IBM がこの仕様を尊重しない理由はよくわかりません。
熟考すべきもう 1 つの興味深い点は、Websphere Application Developer Tool を使用して blueprint .xml ファイルを作成しようとしたときに、以下に示すように 4 つの拡張子しか表示されないという事実です。
- IBM ブループリント拡張機能
- JPA ブループリントのサポート
- ブループリント トランザクションのサポート
- ブループリント リソース リファレンスのサポート
camel-core バンドルと camel-blueprint バンドルの両方が websphere の内部リポジトリにデプロイされていることを確認しました。
.eba ファイルをアセットとしてデプロイしようとしました。
私が何かを逃したかどうかはわかりません。誰かが私を正しい方向に向けることができれば幸いです。
よろしくお願いします、
スリラマン。