2017-04-23 12 views
1

동적 클라이언트의 https URL에서 WSDL을로드하기 전에 모든 SSL 오류가 발생하지 않도록 HttpConduit에 적절한 구성을 설정해야합니다. docs에 따르면 우리는 도관을 하드 코드 할 수 있지만 프로그래밍 방식으로 수행 할 수는 없습니다. DynamicClientFactoryClient 개체를 만들기 전에 HttpConduit을 확보 할 수있는 방법이 있습니까?CXF Dynamic Client에서 WSDL을로드하기 전에 HttpConduit에 액세스

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); 

//Need to get HttpConduit here before the client is created, how? 
Client client = dcf.createClient(wsdlUri); 

// Can access http conduit only after client is created 
HTTPConduit conduit = (HTTPConduit) client.getConduit(); 
+0

'''HttpConduit'''을 설정할 때 상관 없습니다. 클라이언트가 사용될 때 사용됩니다. 그래서 클라이언트 생성 후에도 설정할 수 있습니다. –

답변

1

한 가지 방법은 보류 HttpConduit의 수와 HTTP (S) 구성이 HTTPConduitConfigurer 통해 사용자 정의합니다. 아래 코드 스 니펫은 어떻게 수행 할 수 있는지 보여줍니다.

Bus bus = CXFBusFactory.getThreadDefaultBus(); 
bus.setExtension(new HTTPConduitConfigurer() { 

    @Override 
    public void configure(String name, String address, HTTPConduit conduit) { 
     //set conduit parameters ... 

     // ex. disable host name verification 
     TLSClientParameters clientParameters = new TLSClientParameters(); 
     clientParameters.setHostnameVerifier(new HostnameVerifier() { 
      @Override 
      public boolean verify(String hostname, SSLSession session) { 
       return true; 
      } 
     }); 
     conduit.setTlsClientParameters(clientParameters); 
    } 
}, HTTPConduitConfigurer.class); 

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(bus); 
Client client = dcf.createClient(wsdlUri);