无法部署包含经由白羊蓝图在WebSphere 8.5所定义的驼路线的OSGi包(Unable to

2019-07-31 03:20发布

我创建了一个包含有Apache的骆驼航线(Java的DSL)一个OSGi包的.eba文件(企业捆绑归档)。 骆驼上下文定义是通过蓝图xml文件来完成。 当我试图部署在WebSphere Application Server 8.5的.eba文件,我得到了以下异常:

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快照。 (这Karaf的版本使用白羊座蓝图版本1.0.0)。

我猜想的一样,使用或白羊座蓝图1.0.0分支版本是WebSphere 8.5中使用。

按照OSGi的规格,对于像骆驼自定义命名空间的任何蓝图扩展处理器:从OSGi服务注册表键(osgi.service.blueprint.namespace)下检索。 值元素告诉实际的命名空间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不遵守此规范。

另一个有趣的一点思考过的事实是,当我试图创建一个使用WebSphere应用程序开发工具的蓝图.xml文件,它仅显示4扩展,如下图所示:

  1. IBM扩展蓝图
  2. JPA蓝图支持
  3. 蓝图事务支持
  4. 蓝图资源引用支持

我保证,无论是骆驼核心和骆驼蓝图束在WebSphere中的内部存储库部署。

我试图部署.eba文件作为资产。

也不太清楚,如果我错过了一些东西。 我会很高兴,如果有人能在正确的方向指向我。

最好的祝福,

Sriraman。

Answer 1:

的WebSphere不支持自定义命名空间扩展(而不是由IBM提供的一个除外)。 主要原因是它白羊(Blueprint容器)分离的运行时运行。 有两个选项

  • 使用骆驼的API,而不是蓝图标签
  • 使用支持自定义空间扩展其他容器(如用于Karaf)

Karaf是骆驼友好的容器。



文章来源: Unable to deploy a osgi bundle containing a camel route defined via aries blueprint in Websphere 8.5