当部署到 Glassfish(最好也部署到 TomEE)时,我试图控制我的 Web 服务的 URL 端点。
我有一堂课:
@Stateless
@WebService(
targetNamespace = "http://foo.net/doc/2012-08-01",
name = "FooService",
portName = "FooPort",
serviceName = "FooService")
public class FooSoapService extends SoapBase {
...
}
还有一个 web.xml:
<servlet>
<description>SOAP Endpoint for Foo operations.</description>
<servlet-name>Foo</servlet-name>
<servlet-class>com.foo.FooSoapService</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FooPack</servlet-name>
<url-pattern>/soap/FooPack</url-pattern>
</servlet-mapping>
如果我在 Glassfish 中部署时访问 /context-root/soap/FooPack?wsdl 我最终会得到:
java.lang.ClassCastException: com.foo.FooSoapService cannot be cast to javax.servlet.Servlet
除了一些 jax-rs 的东西外,web.xml 中几乎没有其他内容。
有任何想法吗?