2011-07-29 40 views
0

我正在使用CXF wsdl2java命令行工具在https連接下從WSDL生成Java類。 一切生成過程中去,但是當我調用由WSDL提供的服務之一,我得到這個異常:wsdl2java有關disableCNCheck選項的CXF命令行錯誤

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或我的(grails)應用程序中指定的,它使用生成的java類嗎?

回答

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服務交談的對象。

0

我得到了disableCNCheck通過將下面的XML配置到的grails-app/CONF /彈簧/ resources.xml中實現[2.2.3的Grails,CXF客戶端插件1.6.1]

<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> 
+0

顯然有一個配置參數添加到插件的新版本,我無法測試,因爲我沒有使用插件注入端口bean。 https://github.com/Grails-Plugin-Consortium/grails-cxf-client#setting-secure-socket-protocol –