2010-07-08 50 views
5

作爲一個Web服務初學者,我已經嘗試了兩個星期來得到一個hello世界web服務,使用maven,eclipse和tomcat。如何部署一個jax-ws服務到eclipse或tomcat?

我放棄了試圖讓任何代碼/ wsdl生成器工作,並且我按照本教程http://myarch.com/create-jax-ws-service-in-5-minutes手動編寫了一個示例,這非常棒。

這會產生4個類文件和一個WSDL文件。

所以我的愚蠢問題是如何「運行」在eclipse和/或在tomcat的服務?

我試着將它們部署爲一個web應用程序,但沒有喜悅 - web.xml中沒有任何內容告訴servlet引擎該web服務存在,所以我想它可能永遠不會工作。

我是否必須在tomcat內部有一個特殊的Web服務容器(例如axis2,metro或CXF),並部署到這個容器?或者它可以運行一些jax-ws jar +神祕配置?

我不想要安裝到Tomcat地鐵(它使用螞蟻,併爲玻璃魚desiged),或axis2(它使用螞蟻,並且大多數人似乎不推薦)。

我看着CXF,但無法找到他們的網站上的任何地方如何在沒有彈簧的情況下在tomcat(或eclipse)上安裝/配置它。我將CFX jar放在maven dependencies中,並安裝了eclipse插件,但是這個desolent讓你更接近於實際運行web服務而不用神祕的配置膠水。 CXF似乎與春季相關,這對我們來說是一個很大的負面因素,因爲我們不使用春季(或者需要它的任何功能)。

我注意到helios wtp有一些名爲JSR-109的網絡服務項目。僅此java RPC還是它支持完整的SOAP websiervice系統,是否值得試圖找出答案?

任何建議非常歡迎。我必須搜索1000個頁面來搜索web serive聖盃 - 即如何創建和部署一個tomcat端到端。它應該是這麼難嗎?

回答

4

這個片段添加到您的的web.xml文件

<servlet> 
    <servlet-name>wshello</servlet-name> 
    <servlet-class> 
     com.sun.xml.ws.transport.http.servlet.WSServlet 
    </servlet-class>    
</servlet>  
<servlet-mapping> 
    <servlet-name>wshello</servlet-name> 
     <url-pattern>/webservice</url-pattern> 
</servlet-mapping> 

然後就是創建一個名稱爲太陽jaxws.xml的文件。

<?xml version="1.0" encoding="UTF-8"?> 
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0"> 
    <endpoint name="WebServiceTest" 
      implementation="your.webservice.impl.ClassName" 
      url-pattern="/webservice"/> 
</endpoints> 

然後像往常一樣創建一個戰爭文件。您不需要CXF或Axis將基本WebService部署到Tomcat中。 順便說一句jax-ws庫jars(jaxws-api.jar,jaxb-impl.jar等)應該在你的類路徑中。您可以從here下載jax-ws庫

1

我知道這是一個陳詞濫調,但它聽起來像你試圖重新發明輪子。 Axis2和CXF是有原因的。他們爲你做了很多艱苦的工作。我已經使用了它們,並且取得了很多成功。請記住,我是從有限的個人經歷談起的。

我發現CXF和Spring使設置合同優先的JAX-WS服務甚至添加WS-Security,消息日誌記錄,模式驗證和HTTP配置設置變得非常簡單。大部分都是用Spring XML配置文件完成的。我還了解到Spring可以與Quartz一起使用來安排作業和管理數據訪問。這是一個非常方便的工具。我記得它讓我們很容易將一些POJO變成一項服務,只需很少的努力。

我對Metro的唯一體會是使用NetBeans創建的一點測試服務,並在內置的Glassfish服務器上運行它。這很容易,但IDE爲你做了很多工作,這可能不是一種好的學習方式。它感覺就像是點了一堆鼠標,突然間有一種服務。

this question是一種有關。

祝你好運!