我在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代替(功能,性能等)时的权衡是什么?
感谢
答案 0 :(得分:1)
抱歉,cxf / servicemix集成似乎有误。问题是,cxf尝试在已经使用过的地址下注册服务(旧版本的服务)。
捆绑包重新启动/更新后,无法访问REST和SOAP服务。重启整个servicemix。 Hovewer,当业务逻辑在其他bundle中,而带有SOAP / REST服务的bundle只包含interface时,只有在接口发生变化时才需要重启。
我们长期以来一直在与这个错误作斗争,但不幸的是没有努力。
答案 1 :(得分:1)
我刚刚在Fuse 4.3.0-fuse-03-00中进行了测试,看起来效果很好。以下相关问题也必须解决我的问题......