我正在使用CXF wsdl2java命令行工具在https连接下从WSDL生成Java类。
在生成过程中一切正常,但是当我调用WSDL提供的服务之一时,出现了此异常:

java.io.IOException: The https URL hostname does not match the Common Name (CN) on the server certificate. To disable this check (NOT recommended for production) set the CXF client TLS configuration property "disableCNCheck" to true.

这是我可以在java类生成期间设置的disableCNCheck吗?似乎不是,或者至少这不是wsdl2java的有效选项。

我必须在使用生成的Java类的wsdl或我的(grails)应用程序中指定它吗?

最佳答案

事实证明,这与生成时间无关,而与运行时有关。

要设置disableCNCheck标志,我这样做是这样的:

protected void disableCNCheck(Object port) {
    Client client = ClientProxy.getClient(port)

    TLSClientParameters params = new TLSClientParameters()
    params.setDisableCNCheck(true)
    HTTPConduit httpConduit = (HTTPConduit) client?.getConduit()
    httpConduit?.setTlsClientParameters(params)
}

其中port是用于与受SSL保护的API服务进行通信的对象。

关于grails - 关于disableCNCheck选项的wsdl2java CXF命令行错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6874039/

10-10 17:27