3

我正在尝试让 Java 客户端与 WCF wshttpbinding WebService 进行通信。但到目前为止,我一直没有成功。呼叫挂起,或者我得到:“SOAPFaultException:无法处理消息。这很可能是因为操作“http://tempuri.org/ISampleService/GetServiceName”不正确,或者因为消息包含无效或过期的安全上下文令牌,或者因为绑定之间不匹配。如果服务由于不活动而中止通道,则安全上下文令牌将无效。为了防止服务过早中止空闲会话,增加服务端点绑定的接收超时。”

我的 Web 服务只是默认的 Visual Studio 2010 生成的“WCF 服务库模板”。

我的 java 客户端是在 netBeans 7.0.1 中生成的,存根是使用新的 Other --> Web Services --> Web Service Client 生成的,我正在引用本地 WSDL。

我试过添加 WebServiceFeature wsAddressing = new AddressingFeature(true); 在生成的存根中,但它只是抛出上面的异常。

我看到其他人也有类似的问题;但是,我没有看到任何真正的解决方案。任何建议将不胜感激。

4

1 回答 1

0

听起来您有肥皂格式问题。java 客户端没有生成对 WCF 服务有意义的soap XML。要了解服务所期望的soap XML,请使用WcfTestClient 命令行应用程序来调用服务。此应用程序在 WinForm 应用程序中动态创建服务代理。在应用程序中,调用服务操作并单击 XML 选项卡(在右窗格底部的格式化选项卡旁边)。您将在此选项卡中看到请求和响应肥皂。

接下来,为消息跟踪配置 WCF 服务并从 java 客户端调用它以查看它正在发送的 soap XML。现在您可以比较这两个肥皂消息,看看有什么不同。Java 客户端将需要配置为生成 WCF 所期望的肥皂格式。

WCF 团队最近发布了一些专门针对 java 的WCF 互操作绑定。这些可能不适用于您的具体情况,但它们可能值得审查。

于 2011-08-26T14:24:30.193 回答