Ich habe einen Webdienst-Client mit JBoss-Utils (JAX-WS-kompatibel) mithilfe von Eclipse 'Webdienst-Client aus einer WSDL' generiert.
Das einzige, was ich zur Verfügung stellte, war eine URL zu einer Webdienst-WSDL.
Jetzt fordert mich der Webdienstanbieter auf, die "URL des Zugriffs auf Client-Endpunktanwendungen" des Webdienstes zu ändern.
Was ist das und wie kann man es ändern?
java
web-services
jboss
jax-ws
EugeneP
quelle
quelle
Antworten:
IMO, der Anbieter fordert Sie auf, den Service-Endpunkt (dh wo Sie den Web-Service erreichen) und nicht den Client-Endpunkt zu ändern (ich verstehe nicht, was dies sein könnte). Um den Service-Endpunkt zu ändern, haben Sie grundsätzlich zwei Möglichkeiten.
Verwenden Sie den Bindungsanbieter, um die Endpunkt-URL festzulegen
Die erste Option besteht darin, den
BindingProvider.ENDPOINT_ADDRESS_PROPERTY
Eigenschaftswert vonBindingProvider
(jeder Proxy implementiert diejavax.xml.ws.BindingProvider
Schnittstelle) zu ändern :Der Nachteil ist, dass dies nur funktioniert, wenn auf die ursprüngliche WSDL noch zugegriffen werden kann. Nicht empfohlen.
Verwenden Sie die WSDL, um die Endpunkt-URL abzurufen
Die zweite Option besteht darin, die Endpunkt-URL aus der WSDL abzurufen.
quelle
wsimport
Tools keinen Code mehr mit einerget[Service]Port
Methode generieren . Rufen Sie stattdessenget[Service]
das resultierende Objekt auf und wandeln Sie es in aBindingProvider
um, um diese Art von Eigenschaften festzulegen.Um hier einige Erläuterungen hinzuzufügen, verwendet die Serviceklasse beim Erstellen Ihres Dienstes den Standardwert 'wsdlLocation', der beim Erstellen der Klasse aus der wsdl eingefügt wurde. Wenn Sie also eine Serviceklasse namens SomeService haben und eine Instanz wie diese erstellen:
Wenn Sie sich SomeService ansehen, werden Sie feststellen, dass der Konstruktor folgendermaßen aussieht:
Wenn Sie also möchten, dass es auf eine andere URL verweist, verwenden Sie einfach den Konstruktor, der ein URL-Argument akzeptiert (es gibt 6 Konstruktoren zum Festlegen von qname und Features). Wenn Sie beispielsweise einen lokalen TCP / IP-Monitor eingerichtet haben, der Port 9999 überwacht, und zu dieser URL umleiten möchten:
und das ruft diesen Konstruktor innerhalb des Dienstes auf:
quelle
Ich würde nicht so weit gehen wie @Femi, um die vorhandene Adresseigenschaft zu ändern . Sie können dem Definitionsabschnitt problemlos neue Dienste hinzufügen.
Dies erfordert keine Neukompilierung der WSDL nach Java und das Durchführen von Updates ist nicht schwieriger als wenn Sie die Option BindingProvider verwendet haben (was übrigens bei mir nicht funktioniert hat).
quelle
Um die Eigenschaft der Endadresse zu ändern, bearbeiten Sie Ihre WSDL-Datei
quelle