3 Stimmen

JAX-WS-Client ohne Generierung neuer Proxys beim Wechsel zwischen Test/Produktion

Ich versuche, meinen JAX-WS-Client so zu konfigurieren, dass er zwischen Test-/Produktionspunkt umschalten kann, ohne Proxy-Klassen mit wsimport neu generieren zu müssen.

Der Dienst, den ich zu konsumieren versuche, verwendet unterschiedliche WSDLs in Test und Produktion. Zum Beispiel ist der targetNamespace unterschiedlich, ebenso wie die soapAction-Adresse.

Ich habe versucht, mit Springs JaxWsPortProxyFactoryBean und haben es geschafft, auf die verschiedenen wsdl je nach Bereitstellungsumgebung zu verweisen, aber auch wenn ich auf Produktion verweisen, es verwendet immer noch die WebMethod Aktion Adressen von Test. Ich vermute, dass dies daran liegt, dass sie in der Dienstschnittstelle, die mit wsimport generiert wurde, hart kodiert sind und auf die Test-Wsdl verweisen.

Weiß jemand, ob es möglich ist, zwischen wsdls mit unterschiedlichen targetNamespace- und Aktionsadressen zu wechseln, ohne Proxys neu zu generieren?

1voto

Dave Punkte 12858

Sie können die Eigenschaft der Endpunktadresse außer Kraft setzen:
https://jax-ws.dev.java.net/guide/How_to_invoke_and_endpoint_by_overriding_endpoint_address_in_the_WSDL.html .

//Create service and proxy from the generated Service class.
HelloService service = new HelloService();
HelloPort proxy = service.getHelloPort();

<b>((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                                                    "http://new/endpointaddress");</b>

proxy.sayHello("Hello World!");

Bei Ihrer Frage bin ich mir nicht sicher, ob Sie auch andere Parameter außer Kraft setzen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X