Obecnie piszę nowy zestaw usług internetowych przy użyciu JAX-WS, ale mam trudności z podjęciem decyzji o najlepszym sposobie sprawdzania poprawności danych wejściowych. Mogę wykonać pewne sprawdzanie poprawności w moich klasach implementacji, ale niektóre błędy wejściowe nie działają po cichu. Na przykład dane znakowe w elemencie numerycznym będą skutkowały pustą liczbą całkowitą w obiekcie JAXB.Jak najlepiej sprawdzić wejścia JAX-WS?
Oto projekty, które spotkałem.
@SchemaValidation
mogę dodać adnotację do klasy końcowego i JAX-WS zajmie walidacji. To działało lokalnie w tomcat, ale istnieją obawy, że nie zadziała na niektórych serwerach. Moim głównym zarzutem jest to, że muszę poddać kontroli, w jaki sposób błędy są wyprowadzane w odpowiedzi.Wszystkie dane wejściowe jako ciągi znaków
Nienawidzę tego podejścia, ale widziałem inne usługi internetowe, w których wszystkie dane wejściowe są zdefiniowane jako ciągi. To mogłoby uchwycić przypadek danych znakowych w elemencie numerycznym, ponieważ mogłem to sprawdzić, gdybym zadzwonił do naszego API, chociaż nadal brakowałoby ci nieprawidłowo nazwanych elementów xml.
Naprawdę chcę, aby błędy powracały w taki sam sposób, jak błędy API, a nie jako błąd mydła. Jakieś pomysły? Widziałem kilka witryn mówiących o przechwytywaniu żądania za pomocą pewnego rodzaju filtru. Nie wiem jednak, jak to by działało w przypadku różnych odpowiedzi dla różnych operacji.
E.G.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<myOperationResponse>
<return>
<success>false</success>
<errors>
<error>
<code>UNIQUECODE</code>
<message>Message text</message>
</error>
</errors>
</return>
</myOperationResponse>
</S:Body>
</S:Envelope>
Może za dużo żądam, ale pomyślałem, że zobaczę, czy coś przeoczyłem. TIA.
Upomnienie właśnie mi o tym przypomniało. To jest teraz w produkcji dla kilku projektów i nie mieliśmy żadnych problemów. –