2013-03-15 50 views
0

環境:的Apache CXF Web服務作爲一個Tapestry5模塊集成了.Net客戶端

  • Servlet容器:的Apache Tomcat 7
  • 的Java Web \ IoC框架:阿帕奇掛毯5.3 .6
  • Web服務框架: Apache CXF 2.7.3

要求

我需要提供一種用於.Net客戶端web服務(即C#)。此Web服務應該能夠利用Tapestry的IoC框架,以便能夠使用它的註冊表自動初始化Tapestry配置服務(即公用服務)

目前進展

我很新的jax-ws但在從Apache CXF文件中讀取一些後,我試圖模仿以下sample。 所以我開發了一個簡單的服務,沒有接口,成功執行以下命令:

java2ws -wsdl -server -verbose -o IpkWS.wsdl -databinding aegis -portname IxAccess -address http://localhost:8080/ipk-ws -servicename IpkWS -frontend jaxws -soap12 -s ws_build -d ws_resources com.sc.ipk.ws.services.Calculator 

這創造了一個wsdl文件和Endpoint類。根據上面鏈接的示例,我仍然需要在我的web.xml文件中定義CXFServlet。而且還必須創建cxf-servlet.xml文件。

問題

  1. 我知道如何寫一個Tapestry模塊,但我應該如何使用Web服務辦呢?
    • 是否有可能配置CXFServlet沒有永久在我的網絡應用程序的web.xml文件?我應該可以免費在我的web.xml文件中不包含CXFServlet,因爲我很可能不會爲其他客戶端部署此模塊。
    • 什麼是最低需要Apache CXF/JAX-WS我需要我的網絡服務在Apache Tomcat 7上運行的庫?
  2. 我是否需要cxf-servlet.xml文件?它是爲了什麼?
  3. 是否有任何需要的配置可以使.Net客戶端使用我的服務?如果是,那會影響\阻止其他客戶端平臺正常使用我的Web服務嗎?
  4. java2ws創建的Endpoint類有什麼用途? CXFServlet執行的方法是main
  5. 什麼是我將不得不返回一個複雜的Java對象集合,應該與.Net客戶端一致嗎?

回答

1

這可能是一點點出來的話題,但Tynamo的球隊在Tapetry處理JAX-RS集成大量的工作:http://docs.codehaus.org/display/TYNAMO/tapestry-resteasy+guide 如果你真的不NEAD一個WSDL,它可以幫助你。

如果你一定要使用JAX-WS,這裏薩姆「想法」:http://tapestry.1045711.n5.nabble.com/Web-services-using-Tapestry-td4974432.html

+0

感謝您的建議,事情是,我是新來的'JAX-ws',我覺得derkoe的代碼難以把握。但是,我下載了Metro的src和javadoc,希望derkoe的代碼現在可以更容易理解。再次感謝:) – 2013-03-16 18:47:52

+0

可悲的是我用derkoe的代碼去。我很傷心,因爲我想使用'Apache CXF',所以我不必處理'JAXB'的限制。謝謝Jean。 – 2013-04-16 12:13:22