是否可以在 Web 上下文的根部启动 JAXWS servlet,以便也可以访问 WSDL?
我在 application.xml 中定义的上下文根是/myapp/webservice/v1
(最后一部分应该可以在部署描述符中配置,并且 Web 服务应该在 Web 上下文根中可用)。
我试过了:
<servlet>
<display-name>WebService</display-name>
<servlet-name>WebService</servlet-name>
<servlet-class>my.package.WebServiceServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>WebService</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
WebService 在 address 下回答/myapp/webservice/v1
,但是当我输入 时/myapp/webservice/v1?wsdl
,它被转换为/myapp/webservice/v1/?wsdl
,它不返回 WSDL,但它尝试调用 WebService 本身,它回答:“你好!这是一个 Axis2 Web 服务!” (对 WebService 进行 GET 时的标准问候语)。
我也尝试过使用 url 模式“。”。' ' 和 '/ ' 不被接受 (WebSphere)。
当我使用
<url-pattern>ws</url-pattern>
和
<welcome-file-list>
<welcome-file>ws</welcome-file>
</welcome-file-list>
Web 服务有效,但 WSDL 仅在 上可用/myapp/webservice/v1/ws?wsdl
,这使得解决方案与现有客户端不兼容。
背后的原因是将版本创建为单独的 WAR,然后可以独立部署或在 EAR 中部署,并且要使 WebService 地址完全可配置,我们需要使其在 Web Module 的上下文根下可访问。
我不知道我们遇到的问题是特定于 WebSphere 还是特定于 Axis...