在Java中调用使用WCF WsHttpBinding协议的WebService

11

我正在尝试让一个Java客户端与WCF wshttpbinding WebService进行通信,但是我无法做到这一点。调用要么挂起,要么出现“musunderstoodheader expcetions”。

我的Web服务只是默认的Visual Studio生成的“WCF Service Library Template”。

我的Web服务客户端只是一个空的IntelliJ项目,使用“Add Web Service Client”生成相应的存根(webservice平台指定为JAX-WS 2.X)。

当我将绑定更改为BasicHttpBinding时,一切都运行完美。

我已经尝试过修改WsHttpBinding配置,包括关闭安全性,但是没有成功。

有什么建议吗?想法?是JAX-WS 2.0仅部分支持WsHttpBinding吗?


请问您能否分享一下在Java客户端中使用wsHttpBinding的WCF服务的代码?我正在使用Axis2,并且遇到了安全令牌验证和绑定不匹配等问题。我认为Axis2不允许wcf与wsHttpBinding和Java客户端之间的互操作性。 - touseefkhan4pk
2个回答

14
你的问题是JAX-WS不支持在wsHttpBinding中使用的相同的WS协议。你需要使用WSIT代替。WSIT作为Metro库的一部分可用,该库也可以在Glassfish上使用。
我建议尽可能使用wsHttpBinding或ws2007HttpBinding,但你仍然可以通过SSL / Transport Auth使用basicHttpBinding来创建一个相当安全的服务。

0
我建议您仔细检查WCF配置并删除所有身份验证、授权等属性。请记住,默认情况下,使用安全传输/绑定时,WCF将安全地公开您的服务。因此,除非您配置Java客户端以遵守这些安全要求,否则它很可能无法进行身份验证,您也看不到两个对话。
一旦您让它们通信,逐步添加每个安全元素,直到您正确配置了Java客户端。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接