我在针对 .NET STS 和安全 Web 服务运行 Java(使用 Metro)客户端时遇到问题。但是,当我运行基于 .NET 的客户端时,它总是可以工作。
您可能已经知道,当运行 JAX-WS 客户端时,它会在运行时向服务请求元数据(即使它在设计时已经运行了 wsimport)。但是,似乎这个运行时元数据请求是我的问题所在。
我面临的问题是,在元数据的运行时请求期间,我的 WCF 服务导出的一些 WSDL 导致 Java 客户端在 mex 请求期间只是“挂起”。当它挂起时,它甚至没有到达发出 RST 请求的地步。
例如,我可以到达一个我有 9 个 [OperationContract] 属性的地方并且它可以工作。但是当我添加第 10 个服务方法时,它不起作用。但是,如果我删除 9 个中的一个,则它可以工作。我知道特定方法没有问题,因为我可以混合和匹配并且保持相同的模式。
我似乎无法推断出某些 WSDL 有效而某些无效的模式或原因。我强烈怀疑服务方法的数量是有限的。但是,这可能是导出的 WSDL 的“整体复杂性”问题吗?
有没有人有任何想法?有没有人遇到过这个问题?
如果需要更多信息,我很乐意发布。我只是想让最初的帖子保持可管理的长度。
我还要补充一点,我在 .NET 4 中运行 STS 和安全 Web 服务,它们基于 WIF(所以我不必担心安全设置)。我的 .NET 客户端也是 .NET 4。在 Java 方面,我使用 Netbeans 6.9.1 和运行 Glassfish 3 的 Metro 2.1。我已经验证在 Metro 2.0 上运行时遇到了同样的问题。