【发布时间】:2016-04-25 14:31:01
【问题描述】:
我需要在 WebSphere 8.5.5 中开发和公开 SOAP Web 服务。我已经开发了一个 Spring WS 并部署在 WAS 8.5.5 服务器上[在隔离了冲突的 JAR 并设置了 parent-last 类加载之后]。一切正常,我可以毫无问题地部署/访问我的 WAR 文件。我正在使用 Spring 的 4.1.0.RC2 版本和 Spring WS 的 2.2.1.RELEASE 版本以及 JDK 7。
问题是,当我登录到 WAS 管理控制台并单击我的应用程序时,我没有看到“Web 服务属性”部分正在显示。我也没有在 Services -> Service Providers 下看到我的应用程序。我向 IBM 提出了 PMR,他们确认他们的管理功能将仅扫描并查找 @Webservice 注释,而不是任何其他注释。一旦找到 @Webservice 注释,WAS 就会将该应用程序标记为服务提供者。到目前为止,我看到的所有 Spring WS 示例都使用了 @Endpoint 注释,我不确定为什么 WAS 无法识别这一点。
我们必须在 WAS 中配置登录模块 [使用 SAML 令牌],而网络管理员说只有在显示“Web 服务属性”部分时才能完成。 IBM 的响应使它看起来像是一个应用程序问题,但我不确定在应用程序代码中还能做什么。我不想修改我的代码以使用 JAX-WS 注释。我已经尝试在我的 WEB-INF 文件夹中使用 'ibm-web-bnd.xml' 和 'ibm-web-ext.xml' 以及实际的 WSDL,但没有成功.我还尝试将我的 WAR 打包到 EAR 中,但这没有帮助。我在 web.xml 中使用以下行:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
有人遇到过这个问题吗?要更改任何包装器代码或配置以使我的 WAR 模块在 WAS 8.5.5 中被识别为 Web 服务?请指教。
【问题讨论】:
-
“到目前为止,我看到的所有 Spring WS 示例都使用了 @Endpoint 注释,我不确定 WAS 为何无法识别这一点。” -- WAS 从它实现的 EE 规范中寻找注解,而不是从做类似事情的框架中寻找注解,这并不奇怪。