2016-06-15 11 views
0

Ich möchte Adresse jedes Mal, wenn ich meine Endpunkt Bean erreichen. Wenn ich setAddress das erste Mal aufruft, funktioniert es, nachdem diese Adresse und die Endpunkt-URL sich geändert haben, aber ws an die ersten Adressen gegangen ist. hier ist mein CodeCamel CxfEndpoint gesetzt Adresse funktioniert nicht nach dem ersten Anruf

@Bean 
public CxfEndpoint xWSwithoutAddress() { 
    final CxfEndpoint endpoint = new CxfEndpoint(); 
    endpoint.setServiceClass(IntegrationSoap.class); 
    return endpoint; 
} 

@Bean 
@Scope(value="prototype",proxyMode = ScopedProxyMode.TARGET_CLASS) 
public CxfEndpoint xWS() { 
    XSettings settings = configFileManager.readSettings(XSettings.class); 
    final CxfEndpoint endpoint = xWSwithoutAddress(); 
    endpoint.setAddress(settings.getWsdlAddress()); 
    return endpoint; 
} 

und Strecke

from("direct:getEbysServices") 
     .to("cxf:bean:xWS?wrapped=true&loggingFeatureEnabled=true"); 
+0

Sie stellen sicher, dass jedes Mal, wenn Sie eine Verbindung zum CXFendPoint herstellen möchten, eine neue Bean aus dem Spring-Kontext angefordert wird? Es funktioniert, wenn Sie direkt 'endpoint = xWSwithoutAddress(); endpoint.setAddress (settings.getWsdlAddress()); 'als neue Instanz anstelle von @Bean? – pedrofb

+0

Sie könnten das [dynamische Routing] (http://camel.apache.org/how-to-use-a-dynamic-uri-in-to.html) verwenden. In Ihrer Route können Sie die Eigenschaft 'wsdlURL' Ihres cxf-endpoint als dokumentiert [hier] (http://camel.apache.org/cxf.html) ändern. – Frank

+0

neue Instanz funktioniert nicht korrekt. @pedrofb – Utk12

Antwort

0

und Strecke mein Problem löst Start Stoppen.

Ich gebe Route eine ID-

from("direct:getEbysServices") 
     .routeId("ebysRoute") 
     .to("cxf:bean:xWS?wrapped=true&loggingFeatureEnabled=true"); 

und wenn Adressänderungen i Route stoppen und starten.

Verwandte Themen