Domino 9 und frühere Versionen > ND8: Entwicklung

Assoziative Arrays aus PHP in Lotus Notes verwenden

<< < (4/4)

m3:
Wozu den Consumer von hand programmieren, das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.

@Andy: Was versuchst Du denn konkret zu tun? Welche API versuchst Du in den Griff zu bekommen?

notes_andy:
Hallo

Den Consumer habe ich mit Notes-Mitteln gemacht.
Import des WSDL File. Den Rest macht Notes.

Ich möchte die Aktuellen Bestellungen aus dem Shop auslesen.

Mit diesem Aufruf sollte ich ja die Daten bekommen
 
Set rettabel = oMangento.call_(ret,"sales_order.info", Filter)

flaite:

--- Zitat von: m3 am 03.02.10 - 09:55:49 ---Wozu den Consumer von hand programmieren, das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.

@Andy: Was versuchst Du denn konkret zu tun? Welche API versuchst Du in den Griff zu bekommen?

--- Ende Zitat ---

Martin,

die "Transparenz" von SOAP hat sich des öfteren als leaking abstraction herausgestellt. Gerade bei Annahmen über Datentypen, die in den verschiedenen Programmiersprachen anders oder z.T. gar nicht vorhanden sind.
Falls in der WSDL als Kontrakt zwischen Producer und Consumer bestimmte Datentypen angefordert werden, die von den Entwicklern der SOAP Consumer Engine nicht bedacht wurden, funktioniert die Interoperabilität nicht. Es gibt darüber gewaltige Diskussionen in .NET und anderswo, in der sich herausstellte, dass sich die Transparenz-Versprechungen von SOAP eben genau nicht erfüllt haben.

Dem Mann kann geholfen werden, indem hier jemand konkret zeigt, ob und  wie assoziative Arrays von der Notes Soap Consumer Engine unterstützt werden. Theoretisch hätte mans ja implementieren können. Assoziative Arrays sind in LotusScript List. Wenn bereits so ein fundamentaler Datentyp nicht unterstützt wird, fänd ich DAS traurig. Würds aber auch nicht ausschliessen.

Solang das nicht geklärt ist, sollte die Aussage

--- Zitat ---das geht doch unter 8.5.1. auch schon mit Notes-Mitteln.

--- Ende Zitat ---
heißen

das geht doch unter 8.5.1. auch schon mit Notes-Mitteln, außer für die SOAP API von Magento, xxx und zzz.   

Gruß Axel

notes_andy:
Hallo

Ich habe nun das WSDL File als Java importiert.

Dann habe ich einen Java Agent erstellt.

Dann bei Importieren die Web-Service.Konstrukt gewählt.

Wie setze ich folgende Zeilen in Java um?

--- Code: ---Dim oMangento As  Mage_Api_Model_Server_HandlerPortType_n0
Set oMangento = New  Mage_Api_Model_Server_HandlerPortType_n0
ret = oMangento.Login("superuser", "xxx")
Call oMangento.Startsession()
Set rettabel =  oMangento.call_(ret,"catalog_product.info", XSD_ANYTYPE)
--- Ende Code ---

Wie kann ich nun in Jave den Datentyp
XSD_ANYTYPE umsetzen.
Ist in Java anscheinend xsd:anyType java.lang.Object

Auf der folgenden Seite gibt es eine gute Beschreibung.
http://www.ibm.com/developerworks/lotus/library/nd7-webservices/index.html
Aber mir fehlt noch einiges an wissen.


Danke im Voraus für die Hilfe.

Andreas

flaite:
Hier wird schon einmal beschrieben, wie man grundsätzlich damit arbeitet:

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/09082009051707PMWEBSY9.htm

BUT: Das Problem bleibt. Wenn die Programmierer der Notes Webservice Consumer API nicht berücksichtigt haben, dass XSD_ANYTYPE implizit assoziativer Array heissen kann, wirst du das nicht ans Fliegen bringen. Der logische Datentyp in Java für assoziative Arrays wäre java.util.Map und seine einfachste Implementierung als java.util.HashMap.

Ich würd mich damit nur näher beschäftigen, falls mir ein Kunde dafür Geld bezahlt.

Würd erstmal so vorgehen:
Die PHP Beispiele testweise implementieren und mittels eines Interceptor-Proxies (Axis-1 hat einen dabei oder sowas: http://www.allhttp.com/interceptor/) mir mal die SOAP Message anschauen, die der Service schluckt.
Dann würd ich die Nachricht aus Domino an den gleichen Interceptor schicken. Du kannst dann die Nachrichten vergleichen. Die vom Notes-Consumer abgesandte Nachricht wird anders aussehen.
Diese Dinger laufen so, dass du im Interceptor einstellst, dass du Nachrichten an den Producer (Service) x weiterleitest. Aus dem Domino Consumer schickst du die Nachrichten nicht mehr direkt an den Shopservice x sondern an den Proxy-Interceptor (hat eigenen Port). Der leitet die Nachrichten dann umgehend an den Shop Service weiter. Der Shop Service sendet dann an den Interceptor Proxy zurück und der liefert das an Domino. Dabei speichert der Interceptor Proxy die ausgetauschten Nachrichten. Unverzichtbar für jedes halbwegs abenteuerliche Webservice Projekt.

Ich hoffe, es hilft vielleicht ein wenig.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln