鑑於來自保險絲源的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