我試圖使用Metro 2.1在Windows Server 2008 R2上使用Tomcat 7.0.11創建一個簡單的webservice。我來自C#/ WCF背景,試圖更好地理解Web服務的互操作性。實際上,我正在關注Martin Kalin的書「Java Web服務啓動和運行」中的一個例子。我有以下幾點:使用Metro 2.1的Tomcat 7.0.11上的WSServlet ClassNotFoundException錯誤
CATALINA_HOME=c:\tomcat-7.0.11
在catalina.properties文件我有:
server.loader=c:/metro-2.1/bin/*.jar
(注意,我也嘗試添加該路徑common.loader太)。
我複製到以下METRO jar文件CALALINA_HOME \ lib目錄下:
web服務-api.jar中, web服務,extra.jar, web服務,額外api.jar中, webservices- rt.jar中, web服務-的tools.jar
,並CALALINA_HOME \贊同:
web服務-api.jar中
(注意,我本來試圖用地鐵上,tomcat.xml螞蟻文件,但它似乎並沒有爲Tomcat 7 *已經被更新)
我我也試圖把其他METRO罐子放在上面的位置,但也沒有任何幫助。
現在,Tomcat的啓動,確定並初始化METRO好吧,這裏從卡塔利娜日誌文件中的相關部分:
INFO:部署Web應用程序 根目錄18 2011年5月8點00分55秒 com.sun.xml.ws.transport.http.servlet.WSServletContextListener contextInitialized INFO:WSSERVLET12: JAX-WS上下文偵聽器初始化 18-May-2011 08:01:07 com.sun.xml.ws.server。 MonitorBase createRoot INFO:城域監控 rootname成功設置爲: com.sun.metro:PP = /,類型= WSEndpoint,名稱= -TempConvertImplService-TempConvertImplPort 18 2011年5月8點01分08秒 com.sun.xml.ws.transport.http.servlet.WSServletDelegate INFO :WSSERVLET14:JAX-WS servlet初始化
因此,你會認爲Tomcat已經加載了所有的METRO類。從我收集的內容來看,WSServlet是作爲METRO的一部分發貨的JAX-WS 2.1的一部分,因此它應該已經加載。但是,當我真正嘗試瀏覽到我的服務的WSDL我得到本地主機日誌中:
嚴重:分配例外的servlet TempConvertWS 拋出java.lang.ClassNotFoundException: 了com.sun.xml。 ws.transport.http。WSServlet 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 在 org.apache。 catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415).... (堆棧跟蹤的其餘部分)
我的太陽jaxws.xml看起來是這樣的:
<endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" version="2.0">
<endpoint
name="TempConvertWS"
implementation="TimeServer.TempConvertImpl"
url-pattern="/tc"
/>
</endpoints>
和從我的網站相關部分。 xml文件是:
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>TempConvertWS</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TempConvertWS</servlet-name>
<url-pattern>/tc</url-pattern>
</servlet-mapping>
任何人都可以從Tomcat的原因無法找到/加載WSServlet類瀏覽到該服務時看到了什麼?
它需要的是jaxws-ri庫 我認爲它們是'jaxws-api.jar,jaxws-rt.jar,jaxws-tools.jar,streambuffer.jar'以提及一些。確保它們在'CATALINA_HOME/lib'中 – 2013-09-09 13:01:32