Wygenerowałem klienta usługi sieciowej przy użyciu narzędzi JBoss (kompatybilnych z JAX-WS) przy użyciu Eclipse „klienta usługi sieciowej z wsdl”.
Tak więc jedyną rzeczą, którą podałem, był adres URL do WSDL usługi internetowej.
Teraz dostawca usług sieciowych nakazuje mi zmianę „adresu URL dostępu do aplikacji punktu końcowego klienta” usługi sieciowej.
Co to jest i jak to zmienić?
java
web-services
jboss
jax-ws
EugeneP
źródło
źródło
Odpowiedzi:
IMO, dostawca mówi ci, aby zmienić punkt końcowy usługi (tj. Gdzie uzyskać dostęp do usługi internetowej), a nie punkt końcowy klienta (nie rozumiem, co to może być). Aby zmienić punkt końcowy usługi, zasadniczo masz dwie opcje.
Użyj dostawcy powiązania, aby ustawić adres URL punktu końcowego
Pierwszą opcją jest zmiana
BindingProvider.ENDPOINT_ADDRESS_PROPERTY
wartości właściwościBindingProvider
(każde proxy implementujejavax.xml.ws.BindingProvider
interfejs):Wadą jest to, że działa to tylko wtedy, gdy oryginalny WSDL jest nadal dostępny. Niepolecane.
Użyj WSDL, aby uzyskać adres URL punktu końcowego
Drugą opcją jest pobranie adresu URL punktu końcowego z WSDL.
źródło
wsimport
narzędzia nie generują już koduget[Service]Port
metodą. Zamiast tego wywołajget[Service]
i rzutuj wynikowy obiekt na a,BindingProvider
aby ustawić tego rodzaju właściwości.Aby dodać tutaj pewne wyjaśnienie, podczas tworzenia usługi klasa usługi używa domyślnego „wsdlLocation”, który został do niej wstawiony, gdy klasa została zbudowana z wsdl. Więc jeśli masz klasę usług o nazwie SomeService i tworzysz taką instancję:
Jeśli zajrzysz do środka SomeService, zobaczysz, że konstruktor wygląda tak:
Więc jeśli chcesz, aby wskazywał na inny adres URL, po prostu użyj konstruktora, który przyjmuje argument URL (jest 6 konstruktorów do ustawiania qname i funkcji). Na przykład, jeśli skonfigurowałeś lokalny monitor TCP / IP, który nasłuchuje na porcie 9999 i chcesz przekierować do tego adresu URL:
a to wywoła ten konstruktor wewnątrz usługi:
źródło
Nie posunąłbym się tak daleko, jak @Femi, aby zmienić istniejącą właściwość adresu. Możesz łatwo dodawać nowe usługi do sekcji definicji.
Nie wymaga to ponownej kompilacji WSDL na Javę, a dokonywanie aktualizacji nie jest trudniejsze niż w przypadku użycia opcji BindingProvider (która nie zadziałała w moim przypadku).
źródło
Aby zmienić właściwość adresu końcowego, edytuj plik WSDL
źródło