2009-07-26 16 views
5

W języku Java EE 1.4 przy użyciu JAX-RPC 1.1, w jaki sposób mogę udostępnić usługę sieci Web, aby wsdl miał typ złożony (osobę), gdzie jedną z właściwości osoby jest data który jest wyświetlany w WSDL/XSD jako tylko data (na przykład data urodzenia) zamiast dateTime (gdzie czas nie jest pożądany) w WSDL/XSD?Serwis WWW Java, data xsd zamiast dateTime

chciałbym XSD mowa w WSDL mieć

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

zamiast

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

java.util.Calendar i java.util.Date wydają się przyczyną zarówno typ danych xsd do be dateTime po wyrenderowaniu w pliku wsdl/xsd.

Wiem, java EE 1.4 nie ma adnotacji takich jak java EE 5, ale czy jest jakiś sposób, aby powiedzieć usługi internetowej, aby użyć dataccess xs: date?

Odpowiedz

1

Rzeczywiście wymyśliłem, jak to zrobić poprawnie.

w WEB-INF/wsdl/(schemaname) .xsd Zmieniłem typ danych na datę z dateTime i ponownie wdróżę usługę i działa ona z moimi istniejącymi typami java.util.Calendar.

0

Zgodnie z IBM docs masz rację, zarówno datę, jak i datę Mapa czasu do kalendarza. Wydaje się, że nie ma standardowego sposobu korzystania tylko z części daty, oczywiście mógłbyś roll your own (co ciekawe druga strona cytowanego artykułu mówi, że data dotyczy tylko dat, ale strona 3 potwierdza, że ​​mapuje do Kalendarza).

Dla odniesienia istnieje podobne pytanie dotyczące doing this in WCF.

+1

Dziękuję za tę odpowiedź, jest pomocna, ale nie pomaga mi bezpośrednio rozwiązać problem polegający na tym, że usługa sieci Web może ujawnić kod wsdl z polem daty xs: date. Aplikacja kliencka zażądała, aby wsdl wyświetlał tylko datę, a nie dateTime. – jasonmw

1

Nie sądzę, że będziesz w stanie to osiągnąć, JAX-RPC po prostu nie ma elastyczności (dlatego został zabity w JavaEE 5).

Ogólnie rzecz biorąc, zwykle stwierdzam, że generatory WSDL nie mają mocy ekspresyjnej do generowania dokładnego WSDl, którego potrzebuję, więc używam ich do generowania WSDL jako punktu początkowego, a następnie modyfikowania wyniku. Następnie serwer serwer WSDL jako plik statyczny, a nie jako wygenerowany. To nie jest idealne, ale to też nie jest wielka sprawa.