我创建了一个包含有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扩展,如下图所示:
- IBM扩展蓝图
- JPA蓝图支持
- 蓝图事务支持
- 蓝图资源引用支持
我保证,无论是骆驼核心和骆驼蓝图束在WebSphere中的内部存储库部署。
我试图部署.eba文件作为资产。
也不太清楚,如果我错过了一些东西。 我会很高兴,如果有人能在正确的方向指向我。
最好的祝福,
Sriraman。