2017-09-01 16 views
1

私はそうのような春のJavaの設定を使用して、キャメルにCXFエンドポイントを設定しようとしている:Apache camel cxfエンドポイント - http(s)プロキシを指定しますか?

@Bean 
public CxfEndpoint anEndpoint() { 
    CxfEndpoint endpoint = new CxfEndpoint(); 
    endpoint.setAddress(getEndpointUrl()); 
    endpoint.setServiceClass(ServiceSOAP.class); 
    endpoint.setWsdlURL("/wsdl/ServiceSOAP.wsdl"); 

    String httpProxyHost = httpProxyHost(); 
    String httpProxyPort = httpProxyPort(); 

    Map<String, Object> properties = new HashMap<>(); 

    properties.put("https.proxyHost", httpProxyHost()); 
    properties.put("https.proxyPort", httpProxyPort()); 
    properties.put("http.proxyHost", httpProxyHost()); 
    properties.put("http.proxyPort", httpProxyPort()); 

    endpoint.setProperties(properties); 
    return endpoint; 
} 

しかし、これはHTTPまたはHTTPSのいずれかのエンドポイントのURLに取り組んでいません。

私は同じ結果をCamelContextで直接設定しようとしました。

インターネットへの直接接続(たとえば、ローカル)では、経路は正常に動作していますが、httpプロキシの背後に配置されている場所では正しく動作していません。

私たちは、apache camel 2.15.2とapache cxf 3.1.0を使用しています。どんな助けでも大歓迎です!

答えて

2

把握しにくい場合、解像度は簡単であることが判明しました。

@Bean 
public CxfEndpoint anEndpoint() { 
    CxfEndpoint endpoint = new CxfEndpoint(); 
    endpoint.setAddress(getEndpointUrl()); 
    endpoint.setServiceClass(ServiceSOAP.class); 
    endpoint.setWsdlURL("/wsdl/ServiceSOAP.wsdl"); 

    endpoint.setCxfEndpointConfigurer(anEndpointClientConfigurer()); 

    return endpoint; 
} 

private CxfEndpointConfigurer anEndpointClientConfigurer() { 
    return new CxfEndpointConfigurer() { 

     @Override 
     public void configure(AbstractWSDLBasedEndpointFactory factoryBean) { 
     } 

     @Override 
     public void configureClient(Client client) { 
       HTTPConduit conduit = (HTTPConduit) client.getConduit(); 
       HTTPClientPolicy policy = new HTTPClientPolicy(); 
       policy.setProxyServer(httpProxyHost()); 
       policy.setProxyServerPort(httpProxyPort()); 

       conduit.setClient(policy); 
      } 
     } 

参考文献:12

一つはHTTPConduitそうのようなプロパティを設定するためにCxfEndpointConfiguratorを使用しなければなりません
関連する問題