如何使用Blueprint配置CXF JAX-WS服务器

时间:2012-09-26 18:28:33

标签: cxf jax-ws apache-karaf apache-servicemix blueprint-osgi

我想将一个简单的CXF Jax-Ws服务器部署到ServiceMix。它只是一个具有服务接口和impl类的OSGI包。我需要将它部署到不同的ServiceMix服务器(版本4.4.1),因此我需要更改每台服务器的URL地址。我想在Karaf .cfg文件中执行特定于服务器的配置,其余部分在Blueprint中。这不需要骆驼。我应该怎么做蓝图?我找不到具体的文档。

3 个答案:

答案 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蓝图中定义它。