使用wsHttpBinding在Java客户端中使用WCF服务

时间:2011-08-26 14:00:12

标签: java wcf web-services java-metro-framework wshttpbinding

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

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

我的java客户端是在netBeans 7.0.1中生成的,并且使用new Other生成存根 - >网络服务 - > Web服务客户端和我引用本地WSDL。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

WCF团队最近专门针对java发布了some WCF interop bindings。这些可能不适用于您的具体情况,但它们可能值得回顾。