捆绑包保持宽限期状态

bundle stays in GracePeriod status

我正在尝试在我的骆驼路线中实例化一个 "cxf:cxfEndpoint"。但是捆绑包保持 "GracePeriod" 状态,日志如下:

2016-11-10 11:03:07,598 | INFO  | rint Extender: 1 | BlueprintContainerImpl           | ? ? | 21 - org.apache.aries.blueprint.core - 1.4.2 | Bundle com.entreprise.example is waiting for namespace handlers [http://camel.apache.org/schema/blueprint]

我的 camelContext.xml 文件是:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws" xmlns:cxf="http://cxf.apache.org/blueprint/core"
xmlns:camel="http://camel.apache.org/schema/blueprint" xmlns:camelcxf="http://camel.apache.org/schema/blueprint/cxf"
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/jaxws http://cxf.apache.org/schemas/blueprint/jaxws.xsd 
http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">

<camelcxf:cxfEndpoint id="fist"
    serviceClass="com.entreprise.example.services.firstService"
    address="http://localhost:8181/cxf/example/firstMsg">
    <camelcxf:properties>
        <entry key="dataFormat" value="POJO" />
        <entry key="loggingFeatureEnabled" value="true" />
    </camelcxf:properties>
</camelcxf:cxfEndpoint>
<camelcxf:cxfEndpoint id="second"
    serviceClass="com.entreprise.example.services.secondService"
    address="http://localhost:8181/cxf/example/secondMessage">
    <camelcxf:properties>
        <entry key="dataFormat" value="POJO" />
        <entry key="loggingFeatureEnabled" value="true" />
    </camelcxf:properties>
</camelcxf:cxfEndpoint>
<camelContext trace="false" id="example"
    xmlns="http://camel.apache.org/schema/blueprint">
    <route>
        <from uri="cxf:bean:first" />
        <to uri="cxf:bean:second" />
    </route>
</camelContext>

看来您真的搞砸了蓝图架构声明。用下面的内容替换蓝图声明

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://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">

并使用“cxf”而不是“camelcxf”作为端点和 Bean 的前缀,这将变得更加清晰和可重复(尽管您可以自由使用您喜欢使用的任何前缀)。

好的,为避免混淆使用如下,这将解决等待依赖项错误:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.2.0"
    xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://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">

    <cxf:cxfEndpoint id="fist"
        serviceClass="com.entreprise.example.services.firstService" address="http://localhost:8181/cxf/example/firstMsg">
        <cxf:properties>
            <entry key="dataFormat" value="POJO" />
            <entry key="loggingFeatureEnabled" value="true" />
        </cxf:properties>
    </cxf:cxfEndpoint>
    <cxf:cxfEndpoint id="second"
        serviceClass="com.entreprise.example.services.secondService" address="http://localhost:8181/cxf/example/secondMessage">
        <cxf:properties>
            <entry key="dataFormat" value="POJO" />
            <entry key="loggingFeatureEnabled" value="true" />
        </cxf:properties>
    </cxf:cxfEndpoint>
    <camelContext trace="false" id="example"
        xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="cxf:bean:first" />
            <to uri="cxf:bean:second" />
        </route>

</blueprint>