使用cxf-extension-osgi重启OSGi包

时间:2010-12-17 23:32:10

标签: jax-rs cxf apache-servicemix

我在Fuse 4.2中部署了一个简单的CXF RS软件包,在初始安装时可以正常工作。但是,当我更新或重新安装捆绑包时,无法再访问REST服务。

我尝试了各种配置,发现使用cxf-extension-osgi是问题......

从这......

<import resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml"/>

到此......

<import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/>

另外,我将地址更新为非相对...最终使用此配置(在捆绑重启后工作等)

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml" />

<jaxrs:server id="testService" address="http://localhost:9000/">
    <jaxrs:serviceBeans>
        <ref bean="testBean" />
    </jaxrs:serviceBeans>
</jaxrs:server>

使用cxf-extension-osgi时是否知道导致此问题的原因是什么?另外,使用cxf-extendsion-http-jetty代替(功能,性能等)时的权衡是什么?

感谢

2 个答案:

答案 0 :(得分:1)

抱歉,cxf / servicemix集成似乎有误。问题是,cxf尝试在已经使用过的地址下注册服务(旧版本的服务)。

捆绑包重新启动/更新后,无法访问REST和SOAP服务。重启整个servicemix。 Hovewer,当业务逻辑在其他bundle中,而带有SOAP / REST服务的bundle只包含interface时,只有在接口发生变化时才需要重启。

我们长期以来一直在与这个错误作斗争,但不幸的是没有努力。

答案 1 :(得分:1)

我刚刚在Fuse 4.3.0-fuse-03-00中进行了测试,看起来效果很好。以下相关问题也必须解决我的问题......

https://issues.apache.org/jira/browse/CXF-2947