2

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

4

3 回答 3

2

我有一个关于 Apache Karaf 中的 CXF 和蓝图的教程。那应该为您提供一个完整的示例。

于 2013-05-10T13:23:48.473 回答
1

包括我用来在 Karaf 中使用 CXF 和 Blueprint 配置“一体式”JAX-WS Web 服务的蓝图配置。

我还包括了特定于服务器的属性(在 OSGi Config Admin 中定义)。Karafetc目录中的 .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>

于 2012-10-30T15:26:28.797 回答
0

我也遇到了同样的问题,这是因为服务所属的捆绑包的 OSGi 蓝图中缺少 bean 定义。我意识到即使 bean ref 定义存在于使用服务的捆绑包的 OSGi 蓝图中,也必须在它自己的捆绑蓝图中定义它。

于 2013-02-27T06:10:57.060 回答