我试图使用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