wsdl2java关于disableCNCheck选项的CXF命令行错误

时间:2011-07-29 13:39:43

标签: grails command-line wsdl cxf

我正在使用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.

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

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

2 个答案:

答案 0 :(得分:3)

事实证明,这不是关于生成时间,而是运行时的东西。

要设置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服务进行通信的对象。

答案 1 :(得分:0)

我通过将以下xml配置添加到grails-app / conf / spring / resources.xml [Grails 2.2.3,cxf-client插件1.6.1]获得了disableCNCheck

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:http="http://cxf.apache.org/transports/http/configuration" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
      "> 

  <http:conduit name="*.http-conduit"> 
    <http:tlsClientParameters disableCNCheck="true" /> 
  </http:conduit> 

</beans>