0

fabric-camel コンポーネントに問題があります。

ブループリントからラクダのエンドポイントを検出します。

2014-10-02 15:27:43,598 | INFO  | 26c-351-thread-2 | FabricPublisherEndpoint          | 204 - io.fabric8.fabric-camel - 1.1.0.CR5 | Child: jetty:https://127.0.0.1:1221/https/incontrol?matchOnUriPrefix=true
2014-10-02 15:27:43,598 | INFO  | 26c-351-thread-2 | FabricPublisherEndpoint          | 204 - io.fabric8.fabric-camel - 1.1.0.CR5 | Consumer: jetty:https://127.0.0.1:1221/https/incontrol?matchOnUriPrefix=true

しかし、その後、「原因: java.lang.IllegalStateException: コンポーネントが開始されていません」というメッセージが表示されます

2014-10-02 15:27:43,602 | ERROR | 26c-351-thread-2 | BlueprintContainerImpl           | 197 - org.apache.aries.blueprint.core - 1.4.0 | Unable to start blueprint container for bundle pl.com.xxxxxx.esb.esb-incontrol-proxy
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to initialize bean .camelBlueprint.factory.inControlProxyContext
...    
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: fabric://incontrol:jetty:https://127.0.0.1:1221/https/incontrol?matchOnUriPrefix=true due to: Component is not started
...
Caused by: java.lang.IllegalStateException: Component is not started
    at io.fabric8.camel.ZKComponentSupport.createGroup(ZKComponentSupport.java:53)

より詳細なスタックトレースhttp://pastebin.com/BFrPBarp

私の blueprint.xml (関連部分):

<!-- Boundary beans -->
<bean id="httpsRouteBuilder" class="pl.com.xxxxxxx.camel.builder.HttpsRouteBuilder">
    ...

    <property name="incomingUri" value="fabric:incontrol:jetty:${endpoint.https.incoming.url}?matchOnUriPrefix=true"/>
    <property name="outgoingUri" value="${endpoint.https.outgoing.url}?bridgeEndpoint=true&amp;throwExceptionOnFailure=false"/>

    ...
</bean>
...
<camelContext id="inControlProxyContext" trace="false" streamCache="true"
              xmlns="http://camel.apache.org/schema/blueprint"
              xsi:schemaLocation="http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint-2.10.0.xsd">
    ...
    <routeBuilder ref="httpsRouteBuilder"/>
    ...
</camelContext>

私の pom.xml (関連部分):

<!-- Fabric -->
<dependency>
    <groupId>io.fabric8</groupId>
    <artifactId>fabric-camel</artifactId>
    <scope>provided</scope>
</dependency>

デバッグ ログを有効にして、他に何が見つかるか見てみます。残念ながら、根本的な問題をまだ理解していません。コンポーネントが開始されなかったのはなぜですか?

バージョン情報:

  • カラフ: 2.3.0.redhat-610379
  • ファブリック: 1.1.0.CR5
4

1 に答える 1

0

ルートが開始される前に、コンポーネントを手動でインスタンス化して開始するように強制することができます: 次のようなことを試してください:

<endpoint xmlns="http://camel.apache.org/schema/blueprint" id="fakeFabricEndpoint" uri="fabric:fake:jetty:${endpoint.https.incoming.url}?matchOnUriPrefix=true"/>
于 2014-10-13T11:47:07.493 に答える