访问WSDL的方式并不是特定于容器的特定的WS-stack. GlassFish中的WS-stack是Metro(Metro = JAX-WS RI WSIT).您是否在Tomcat上安装/部署Metro或JAX-WS RI?有关步骤,请参见
Metro on Tomcat 6.x或
Running JAX-WS Samples with Tomcat 6.x(JAX-WS RI可能足够在您的情况下).
更新:您需要在web.xml中声明WSServlet(参见Deploying Metro endpoint):
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
WebServicePort
com.sun.xml.ws.transport.http.servlet.WSServlet
1
WebServicePort
/services/*
60
然后在sun-jaxws.xml(也包装在WEB-INF中),声明您的服务端点接口(SEI):
name="MyHello"
implementation="hello.HelloImpl"
url-pattern="/hello"
/>
并且您访问WSDL:
http://localhost:8080//services/hello?wsdl
A B C D
> A是servlet容器的主机和端口.> B是战争文件的名称.> C来自web.xml文件中的url-pattern元素.> D来自sun-jaxws.xml文件中的url-pattern属性的结尾部分.