2013-03-18 34 views
14

SAAJ: SOAP z załącznikami API for JavaJaka jest różnica między MTOM a funkcjami załączników dostarczonymi przez SAAJ?

MTOM: SOAP Optymalizacja Message Transmission Mechanism

mój prosty rozum: radzą sobie z załącznikami SOAP z MTOM będąc bardziej zoptymalizowany wersję Saaj . Czy to jest poprawne?

Czy są to po prostu 2 różne sposoby robienia tego samego? Czy próbuję tu porównać jabłka i pomarańcze?

Czy mogę używać SAAJ i MTOM razem?

Odpowiedz

30

Jest to nieco bardziej skomplikowane. SAAJ jest starym interfejsem API języka Java używanym do manipulowania kopertami SOAP, więc wysyłanie załączników binarnych może odbywać się w rozsądny sposób (to nie jest zakodowany ciąg znaków BASE64 w treści wiadomości). SAAJ to rodzaj niskiego poziomu interfejsu, musisz utworzyć kopertę SOAP "ręcznie" w swoim kodzie i dodać do niej załączniki.

Jeśli nie potrzebujesz pracować ze starszym kodem i chcesz pracować bezpośrednio z kopertami SOAP, spójrz na interfejsyDispatcher and Provider.

MTOM to kolejna bestia. To nie jest pełny API serwisu WWW - to wyspecjalizowany sposób wysyłania załączników. Może być używany przez dowolne "prawdziwe" API serwisu WWW, takie jak JAX-WS lub SAAJ (jeśli uda ci się wymusić działanie SAAJ w taki sposób).

MTOM jest (prawie) zawsze używany z XOP, bardziej wydajnym sposobem przesyłania danych binarnych w porównaniu z BASE64 (który ma duży narzut). Załącznik jest wysyłany osobno jako załącznik MIME, a typ MIME jest obsługiwany poprawnie (co było wcześniej problemem dla interakcji technologii Java-Microsoft).

W dzisiejszych czasach zapomnij o SAAJ, korzystaj z obsługi JAX-WS + MTOM, którą zapewnia większość implementacji JAX-WS.

+1

Dobra odpowiedź. Zdecydowanie warto więcej przegranych. – Hubert