【发布时间】:2012-03-10 06:12:04
【问题描述】:
我正在使用正在构建的 Java 客户端连接到 WCF Web 服务。其他人已经成功构建了 WCF 客户端以连接到此服务。通过 HTTP 可用的 WSDL 提供消息级安全性。通过 HTTPS 可用的 WSDL 使用 TLS 和消息级别安全性。我知道在消息级别安全性之上使用 TLS 基本上是双重加密,但这是一个关键要求。
由于我可以正确连接到 HTTP 服务,我相信我已经解决了所有信任存储和密钥存储问题。
我正在使用 Metro 2.1.1 连接到服务。我已经在 Eclipse 和 Netbeans 中构建了客户端。我从 HTTP 站点获取 WSDL,并使用 wsimport(带有 -extensions 标志)成功构建并执行客户端。
当我使用 HTTPS 站点获取 WSDL 时,我可以再次成功构建两个客户端。但是当我执行它们时 - 我收到以下错误:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: An error occurred when verifying security for the message.
at com.sun.xml.ws.fault.SOAP12Fault.getProtocolException(SOAP12Fault.java:225)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:140)
at $Proxy43.request(Unknown Source)
这两个 WSDL(一个通过 HTTP 获取,另一个通过 HTTPS 获取)之间的唯一区别是 WSDL 中对 HTTPS:// 与 HTTP:// 的引用。
我无法轻松访问 WCF 服务日志 - 通常在我请求一组日志和可以查看它们之间有 3-6 小时的延迟。
我的问题是有没有人遇到过类似的情况 - 我在这里公然遗漏了什么?我可以在 NetMon 或 Wireshark 跟踪中查找问题是否存在问题?这几天我一直在为此苦苦挣扎 - 任何帮助都将不胜感激。
【问题讨论】:
标签: java wcf ssl java-metro-framework