2009-07-26 4 views
5

In Java EE 1.4 mit JAX-RPC 1.1, wie kann ich Web-Service verfügbar machen, so hat die WSDL einen komplexen Typ (Person), wo eine der Eigenschaften der Person ein Datum ist Welche wird in der WSDL/XSD als nur ein Datum (wie ein Geburtsdatum) anstelle einer DateTime (wo die Zeit nicht gewünscht ist) in der WSDL/XSD angezeigt?Java Web Service, xsd Datum anstelle von dateTime

ich möchte die XSD in der WSDL-Datei referenziert haben

<xs:element name="birthdate" type="xs:date"/> 

statt

<xs:element name="birthdate" type="xs:dateTime"/> 

java.util.Calendar und java.util.Date beide scheinen die XSD-Datentyp zu verursachen be dateTime wenn in wsdl/xsd gerendert wird.

Ich weiß, dass Java EE 1.4 nicht die Anmerkungen wie java EE 5 hat, aber gibt es irgendeine Weise, dem Webservice zu sagen, den xs: Datumdatentyp zu verwenden?

Antwort

1

Ich habe tatsächlich herausgefunden, wie man das richtig macht.

im WEB-INF/wsdl/(schemaname) .xsd Ich habe den Datentyp von dateTime auf den neuesten Stand gebracht und den Dienst erneut implementiert, und es funktioniert mit meinen vorhandenen java.util.Calendar-Typen.

0

Entsprechend der IBM docs haben Sie Recht, sowohl Datum als auch dateTime Karte zum Kalender. Es scheint keinen Standard Weg zu geben, nur den Datumsteil zu verwenden, natürlich könnte man roll your own (interessanterweise sagt die zweite Seite des referenzierten Artikels, dass das Datum nur für Daten ist, aber Seite 3 bestätigt, dass es dem Kalender zugeordnet ist).

Als Referenz gibt es eine ähnliche Frage über doing this in WCF.

+1

Vielen Dank für diese Antwort, es ist hilfreich, aber hilft mir nicht direkt bei der Lösung meines Problems, wie der Webdienst eine WSDL mit einem xs: date-Feld freigibt. Die Clientanwendung hat angefordert, dass die WSDL nur ein Datum und nicht dateTime verfügbar macht. – jasonmw

1

Ich denke nicht, dass Sie dies erreichen können, JAX-RPC hat einfach nicht die Flexibilität (weshalb es in JavaEE 5 getötet wurde). Normalerweise finde ich, dass WSDL-Generatoren nicht die Ausdruckskraft haben, die genaue WSDL zu erzeugen, die ich möchte, und deshalb neige ich dazu, sie zu verwenden, um eine WSDL als Ausgangspunkt zu erzeugen, und dann das Ergebnis zu modifizieren. Sie führen die WSDL dann als statische Datei und nicht als generierte Datei aus. Es ist nicht ideal, aber es ist auch keine große Sache.