Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Webservice mit Notes/Domino konsumieren (Eclipse WSDL2Java)
(1/1)
Raymond:
Hallo zusammen
Ich habe hier eine Lotus Domino Applikation, welche einen Webservice konsumieren soll. Es wird SSL verwendet, der Webservice Client haben wir in Java mit Eclipse entwickelt und dann den Code in einen Notes Java-Agenten importiert, welcher beim WebQuerySave einer Form abläuft. Das Ganze läuft soweit auch ganz gut.
Für die Konsumation des Webservice haben wir das Axis Packet verwendet und in Eclipse werden mit WSDL2Java aus dem WSDL die entsprechenden Klassen generiert, mit welchen man dann den Webservice ansprechen kann.
Die Probleme/Fragestellungen die nun auftauchen sind folgende. Der Agent sollte nun den identischen WebService von zwei unterschiedlichen Servern konsumieren. Das WSDL ist ja Server-/URLabhängig. Das heisst wenn wir WSDL2Java anwenden, erhalten wir für den identischen Webservice auf zwei Unterschiedlichen Server auch unterschiedliche Klassen um den Webservice zu konsumieren. Aber im Prinzip sind ja nur die Parameter URL, Login, Password pro Server unterschiedlich, der Rest ist aber identisch, da es sich ja eben um den gleichen Web Service handelt.
Mit dem jetzigen Ansatz ist jeweils für das Laufen lassen in den verschiedenen Umgebungen DEV, TEST, PROD ein Anpassen des Java Source Codes notwendig, d.h. es muss das "import" beim Code angepasst werden, der die jeweils Serverabhängigen WSDL2Java generierten Klassen verwendet.. Dies ist natürlich nicht sehr praktikabel :(
Gruss und besten Dank für jegliches Feedback!
Ray
flaite:
Sofern du nicht in den Generationsprozess von axis-wsdl2Java eingreifen kannst (was sicher nicht einfach ist), sehe ich da auch keine andere Lösung als das manuelle Nachbearbeiten. Würd da aber nicht groß Energie reinstecken.
Axis kann für bestimmte Aufgabenstellungen keine schlechte Lösung sein.
Irgendwie ist es aber auch eine technologische Sackgasse. Mittlerweile gibts nämlich wesentlich performanteres und flexibleres Axis2, das aber Java5 benötigt. Viele Webservices sind auch gar nicht SOAP, sondern REST. Und das wird von axis1 gar nicht unterstützt.
Aus diesen Gründen bin ich persönlich in Projekten für Domino Webservices erstmal low level gegangen (ausgtauschten Nachrichten selbst parsen und Nachrichten austauschen mit jakarta.httpClient.
ata:
... ich denke die Frage sollte nach Java verschoben werden...
Toni
Raymond:
Hallo zusammen
habe mich in der Zwischenzeit noch weiter mit den Unterschieden in den WSDL Files für die unterschiedlichen Server befasst. Offenbar ist die konkrete Adresse (>soap: address location>) für die Ports unterschiedlich, die kann jedoch über einen Parameter beim Aufruf des Webservice mitgegeben werden
--- Code: ---locator = new XYServiceLocator();
locator.getXYServiceSoapAddress();
//url beinhaltet die zu verwendende url
service = locator.getXYServiceSoap(url);
--- Ende Code ---
Zudem ist die URL in den jeweiligen SoapActions <soap:operation soapAction="https://xyz.com/XYService/GetXYByEMail" style="document" /> unterschiedlich, die Adresse kommt aber aus dem Targetnamespace des WSDL Dokument und kann gemäss http://bluebones.net/2003/07/server-did-not-recognize-http-header-soapaction/ unabhängig vom Server jeweils gleich sein.
Damit würden die unterschiede im Bezug auf die mit WSDL2Java generierten Klassen entfallen und man könnte mit den gleichen Klassen den identischen Webservice von unterschiedlichen Server konsumieren.
Gruss
Ray
flaite:
danke für die Infos ;)
Mag Axis trotzdem nicht :P
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln