我想将一个简单的CXF Jax-Ws服务器部署到ServiceMix。它只是一个具有服务接口和impl类的OSGI包。我需要将它部署到不同的ServiceMix服务器(版本4.4.1),因此我需要更改每台服务器的URL地址。我想在Karaf .cfg文件中执行特定于服务器的配置,其余部分在Blueprint中。这不需要骆驼。我应该怎么做蓝图?我找不到具体的文档。
答案 0 :(得分:2)
我有tutorial about CXF and blueprint in Apache Karaf。这应该为您提供一个完整的例子。
答案 1 :(得分:1)
包括我用于在Karaf中使用CXF和Blueprint配置“一体化”JAX-WS Web服务的蓝图配置。
我还包括特定于服务器的属性(在OSGi配置管理中定义)。 Karaf的etc
目录中的.cfg文件将命名为com.example.myservice.cfg
,并使用${}
表示法在蓝图文件中访问它们。我定义了一个名为schema-validation-enabled
的属性(我们为生产环境切换此值)。
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"
xmlns:cxf="http://cxf.apache.org/blueprint/core"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.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">
<cm:property-placeholder persistent-id="com.example.myservice">
<cm:default-properties>
<cm:property name="schema-validation-enabled" value="true"/>
</cm:default-properties>
</cm:property-placeholder>
<!-- A normal CXF endpoint -->
<jaxws:endpoint id="sampleService" implementor="com.example.myservice.impl.MyServiceImpl"
endpointName="s:MyServicePort" serviceName="s:MyService" address="/MyService"
wsdlLocation="/wsdl/MyService.wsdl"
xmlns:s="http://www.example.com/MyService/SVC/v1">
<jaxws:properties>
<entry key="schema-validation-enabled" value="${schema-validation-enabled}" />
</jaxws:properties>
</jaxws:endpoint>
答案 2 :(得分:0)
我也遇到了同样的问题,这是因为服务所属的捆绑包的OSGi蓝图中缺少bean定义。 我意识到,即使bean 使用服务的OSGi蓝图中存在bean ref定义,也必须在它自己的bundle蓝图中定义它。