【问题标题】:Consuming a WCF service in a Java Client using wsHttpBinding使用 wsHttpBinding 在 Java 客户端中使用 WCF 服务
【发布时间】:2011-11-04 13:39:53
【问题描述】:

我正在尝试让 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);在生成的存根中,但它只是抛出上面的异常。

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

【问题讨论】:

  • WsHttpBinding 默认使用带有 SSPI 协商和安全对话的消息安全性。
  • 我在这方面也花了很多时间,但我还没有找到任何解决方案。 Glassfish 应该支持 WS 安全性,但我无法得到任何工作。
  • @Jeff 你找到解决方案了吗?我面临着完全相同的问题。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多