首页 > 解决方案 > WebSphere 中的 JAX-WS 空响应,但 Tomcat 中没有

问题描述

我正在开发一个简单的 SOAP JAX-WS WebService。
我在 JRE 7 上,所以我不得不选择相当旧的库,因为我必须在 WebSphere 8.5 上进行部署。
我使用了 Spring 和 CXF。
使用soapUI 进行测试我看到WebSphere 上的响应对象是空的,并且在Tomcat 7 中正确表示(使用JDK 7 运行),但是在开发和生产环境中,一切都可以执行(我可以看到日志跟踪和数据库更新)。
另一方面,错误(自定义复杂类型也是)在两个系统上都正确表示。
我试图用一系列元素或一组属性来改变复杂类型之间的模式;同样,在 Tomcat 上一切正常,响应是格式正确的 XML,具有正确的名称空间,但在 WebSphere 上为空。

以下是两个响应示例:

网络球体

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:authResponse xmlns:ns2="http://www.my-ws-domain.com/schema/geco-reply-ws/"/>
   </soap:Body>
</soap:Envelope>

雄猫

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:authResponse xmlns:ns2="http://www.my-ws-domain.com/schema/geco-reply-ws/">
         <authToken>33WDg36lr+IKUdEMhrfW+L4pg5SzRjtuHtp3kDC5pBE=</authToken>
      </ns2:authResponse>
   </soap:Body>
</soap:Envelope>

我认为它可以是 JAXB 实现(WebSphere 上的 XML 编组)。
有什么建议么?

标签: javaxmlweb-serviceswebspherejax-ws

解决方案


事实证明,WebSphere 8.5 在处理javax.crypto包中的哈希算法时存在一些问题。
如果我用纯文本或一些 Base64 编码或自定义哈希函数进行响应,一切正常。
如果在调用堆栈的某些部分,我尝试使用加密函数对字符串进行散列,WAS 控制台中不会显示错误,但散列函数返回 null。


推荐阅读