Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Raymond am 19.02.07 - 15:31:32

Titel: Web Service (Java) und Rückgabe von komplexem Datentyp
Beitrag von: Raymond am 19.02.07 - 15:31:32
Hallo zusammen

ich versuche mich gerade an Web Services. Ich möchte ein Array von Datenwerten zurückgeben. Jedes Element des Arrays entspricht einigen Feldern aus jeweils einem Dokument.  Das funktoniert soweit auch ganz gut, wenn eine eigene Klasse erstellt wird, welche dann innerhalb eines Arrays zurückgegeben wird.

Klasse, welche die Feldinformationen beinhaltet:

public class MultiFieldArray {
   public String strEmail;
   public String strJobID;
   public String strJobTitle;
   public String strState;
   public String strCreated;
   //public DateTime dtCreated; -> the WSDL does not like the notes DateTime...

}

Array, welches ich im WebService abfülle und zurückgebe:

MultiFieldArray[ ] mfa = new MultiFieldArray[0];
...
return mfa


Mein einziges Problem ist nun, wenn ich in der Klasse nicht nur "String" Datentypen verwendet möchte. "Create" solte ein DateTime sein. Wenn ich jedoch ein DateTime verwende, dann meckert mir der WebService beim Speichern, dass dieser Typ nicht "data "The WebService has been saved but is not valid:... type lotus.domino.DateTime is not a conforming value type or enumeration, and..."

Hat jemand von Euch eine Idee/einen Tipp?


Vielen Dank und Gruss
Ray
Titel: Re: Web Service (Java) und Rückgabe von komplexem Datentyp
Beitrag von: flaite am 20.02.07 - 18:31:14
Muss aber jetzt warum frage.
Webservices benutzt man doch normalerweise, um von einem nicht-Domino-System mit einem Domino System zu kommunizieren.
Das nicht-DominoSystem wird aber kaum etwas mit der Lotus Klasse DateTime anfangen können.
Kannst du nicht vielleicht vorher einfach einen entsprechenden String-Wert (oder vielleicht java.util.Date) aus DateTime extrahieren?
Oder welchen Grund gibt es ein Objekt vom Typ DateTime über Webservice zu versenden?
Titel: Re: Web Service (Java) und Rückgabe von komplexem Datentyp
Beitrag von: animate am 21.02.07 - 09:18:00
google Suche führt zu diesem Treffer: http://tinyurl.com/35zq2z


Ich denke, der sollte dein Problem erklären. Das läuft darauf hinaus, was Axel schon gesagt hat.

*edit* ich sehe gerade, dass der Link nicht mehr funktioniert. als ich den Link gepostet habe ging er noch. Der entsprechende KB Eintrag heißt:
Error: 'The Web Service has been saved, but is not valid:data type SOMECLASS is not a conforming value type..' [1230702]
Titel: Re: Web Service (Java) und Rückgabe von komplexem Datentyp
Beitrag von: Raymond am 21.02.07 - 09:48:19
Hallo zusammen

Vielen Dank für eure Tipps. Die Argumetation betreffend NotesDateTime macht natürlich Sinn. Da habe ich wohl zu fest im Lotus Notes Schema gedacht... Der Konsument des Web Service ist natürlich kein Domino System und der hätte wohl in der Tat keine Freude am eine NotesDateTime. Die Variante mit String hatte ich bereits, aber java.util.Date ist noch ein Ansatz den ich ausprobieren werde.

Gruss
Ray
Titel: Re: Web Service (Java) und Rückgabe von komplexem Datentyp
Beitrag von: flaite am 21.02.07 - 10:05:06
Raimond: Halte die übertragenen Objekte besser as-simple-as-possible.
Es gibt ISO normierte String Repräsentationen von DateTime Werten. Gebräuchlich ist z.B. ISO 8601.
Hier gibts die Infos. Und komplex ist das auch nicht. http://www.cl.cam.ac.uk/~mgk25/iso-time.html
Die Konvertierung von Java Datums Objekten (nimm Joda Time, wenn möglich) und Lotus Datums Objekte in diese Werte sollte keine größeren Schwierigkeiten bereiten. V.a. wenn du keine Zeitzonen beachten mußt.
java.util.Date ist ein wesentlich komplexeres Objekt als Strings.


Kleinigkeit, aber ich find btw, dass dieses Thema eher in Notes7 Entwicklung als in Java gehört.
Das sind Lotus Domino Webservices ein neues Feature von Notes 7.
Zufällig ist der Webservice in Java programmiert, aber das selbe Problem wäre mit Lotus Script als Sprache für das Domino 7 Designelement Webservice aufgetreten.   ;)