2

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 つの拡張子しか表示されないという事実です。

  1. IBM ブループリント拡張機能
  2. JPA ブループリントのサポート
  3. ブループリント トランザクションのサポート
  4. ブループリント リソース リファレンスのサポート

camel-core バンドルと camel-blueprint バンドルの両方が websphere の内部リポジトリにデプロイされていることを確認しました。

.eba ファイルをアセットとしてデプロイしようとしました。

私が何かを逃したかどうかはわかりません。誰かが私を正しい方向に向けることができれば幸いです。

よろしくお願いします、

スリラマン。

4

1 に答える 1

1

WebSphereは、カスタム名前空間拡張(IBMが提供するものを除く)をサポートしていません。主な理由は、Aries(ブループリントコンテナ)の分離されたランタイムで実行されることです。2つのオプションがあります

  • ブループリントタグの代わりにキャメルAPIを使用する
  • カスタム名前空間拡張をサポートする他のコンテナ(たとえば、Karaf)を使用する

カラフはラクダのやさしい容器です。

于 2012-10-06T07:32:33.343 に答える