鉴于来自保险丝源的apache-servicemix-4.4.1-fuse-00-08的“cxf-osgi”示例,使用maven 3.0.3构建,当将其部署到apache karaf 2.2.4和CXF 2.4.3时,web服务从不发布,并且CXF servlet永远不可见(http:// localhost:8181/cxf /)。卡拉夫日志中没有错误。如何去调试这种行为?如何调试CXF端点发布?
回答
这是值得关注的日志级别 - 您可以在etc/org.ops4j.pax.logging.cfg
或在控制台log:set TRACE org.apache.cxf
- IIRC永久性地执行此操作 - 这将显示一些有用的信息。
还要检查它是否在本地主机/ 127.0.0.1上发布 - 它可能会在另一个接口上发布,即本地网络的IP,但不是本地主机的IP。尝试使用0.0.0.0作为地址,这样它将绑定到所有可用的接口。
当您使用maven时,您可以下载CXF源代码(在Eclipse中很容易),并将远程调试器连接到Karaf实例,通过一些战略性布局的断点,您应该能够掌握正在发生的事情。
不幸的是,我没有一个IDE来进行逐步调试,并且增加了日志记录没有提供任何有用的信息。 – chugadie
尝试更改为Equinox而不是Felix的默认值。 2.4.3中有一个错误,它与Felix不兼容。或者,CXF 2.4.4现在也可以修复它。
看看这个问题,我在本周提交:https://issues.apache.org/jira/browse/CXF-4058
我发现那是什么,如果我的beans.xml是CXF包JAR之前加载,那么端点与CXF注册,但不与OSGi http服务。所以从日志中看起来一切都很好,但终端永远不可访问。这是一个竞赛条件。
我做了两个解决方法:1)在短期内,稍后在引导顺序(我使用Karaf功能)中移动我自己的罐子,以便Spring和CXF在我的beans.xml被读取前完全加载并且2)放弃春推出这种方法基于松散的我自己绑定代码:http://eclipsesource.com/blogs/2012/01/23/an-osgi-jax-rs-connector-part-1-publishing-rest-services/
我刚刚实施的解决方案#2昨天我已经与它非常高兴。它解决了我所有的类加载器问题(之前我不得不手动添加大量的Import-Package行,因为BND没有看到beans.xml引用)并修复了我的引导竞争条件。
- 1. CXF jaxws端点相对发布地址
- 2. Apache CXF未发布客户端
- 3. 如何使用CXF和Grails在多个地址(端点)上发布Web服务?
- 4. 如何调试404发布节点站点到Github页面?
- 5. 如何识别cxf Web服务端点
- 6. 如何使用cxf端点消耗肥皂测试路由
- 7. 如何将JSON发布到API端点?
- 8. 如何发布载体的HTTP端点
- 9. 春CXF客户端测试
- 10. 获取CXF端点的URL
- 11. apache cxf - 指定端点url
- 12. Camel:Bean代理到CXF端点
- 13. 如何调试apk签名发布?
- 14. 发布和调试
- 15. 在localhost发布cxf webservice
- 16. 用CXF发布NonSpring webservice
- 17. 何处添加CXF:车内了Apache CXF端点XML文件
- 18. 调试vs发布库版本与调试/发布客户端应用程序具有不同的行为
- 19. CXF:如何重新发送来自CXF客户端的原始请求?
- 20. 如何从您的CXF端点调用Spring集成应用程序
- 21. PyQt发布与调试
- 22. 调试和发布配置
- 23. Android GoogleCredential调试与发布
- 24. Qt调试与发布
- 25. 如何调试SWT布局?
- 26. 如何调试CSS布局?
- 27. 如何编写用于调试和发布配置的测试
- 28. Apache CXF Spring JAXWS端点的Java配置
- 29. 骆驼和CXF生产者端点
- 30. Servicemix - 在SOAP 1.2中公开CXF端点
更新:使用Blueprint XML而不是Spring XML发布包可使CXF正常工作。我敢肯定,这不是一个127.0.0.0和0.0.0.0的问题。我将增加日志记录并升级到cxf 2.4.4 – chugadie