2010-09-03 21 views
7

Gram w Apache CXF, w szczególności różne obsługiwane powiązania danych: JAXB (domyślnie), MTOM, Aegis i XMLBeans. Ponieważ wszystkie te są obsługiwane, przypuszczam, że każdy ma swoje zalety. Wymyśliłem te:W CXF, dlaczego warto użyć innego wiązania niż JAXB? (Załączniki MTOM, Aegis, XMLBeans, ...)

  • Oczywiście MTOM jest preferowany w przypadku dużych załączników.
  • JAXB zależy od adnotacji, więc jest mniej odpowiedni, gdy modyfikacja zajęć jest ograniczona.
  • Aegis nie ma narzędzia wsdl2java, więc jest mniej odpowiednie do rozwoju "na początku umowy", tzn. Zaczyna się od WSDL i generuje kod Java z tego.
  • To pojawia że Aegis zapewnia nieco większą kontrolę nad mapowaniem pomiędzy klasami Java i XML za pośrednictwem swojej składni deklaratywnej w Klasa plików .aegis.xml. Z drugiej strony nie mogłem wymyślić żadnych scenariuszy, w których JAXB nie poradziłby sobie.

Znalazłem to pytanie zestawiając JAXB i XMLBeans, ale to nie daje kompleksowy przegląd:

JAXB vs Apache XMLBeans

Oprócz tych naiwny a priori rozważania, czy masz jakikolwiek krew-i- przeżycia doświadczeń, które wspierałyby użycie jakiegokolwiek innego wiązania poza JAXB? Pytam z punktu widzenia CXF, ale jeśli pojawią się jakieś inne opcje (np. Castor), proszę nie wahaj się rozwinąć.

Odpowiedz

3

Jeśli zaczynasz od zera, tworząc pierwszą usługę WWW WSDL, zdecydowanie zalecałbym trzymanie się JAXB w 95% czasu (może nawet wyższego). Jest to zdecydowanie najlepiej przetestowane wiązanie danych w CXF i działa całkiem dobrze.

przypadku gdy pozostali DataBindings przyjść są zazwyczaj na jednym z dwóch przypadków:

1) Java przypadków pierwszym użyciem, gdzie masz coś już napisany w języku Java, który chcesz wystawiać jako serwis WWW z małą lub bez modyfikacji do kodu. Aegis ma tutaj swoje mocne strony, ponieważ jest przystosowany do obsługi szerszego zakresu rzeczy niż JAXB. Jeśli jednak MOŻESZ zmodyfikować kod, dodanie adnotacji JAXB zwykle nie jest takie trudne. Jeśli masz w większości zwykłą "fasolę", to nie jest wielka sprawa.

2) Istniejące aplikacje korzystające z określonego odwzorowania. Jeśli masz już aplikacje, które oczekują fasoli XMLBeans (lub komponentów bean SDO, jeśli używasz 2.3-SNAPSHOT z CXF lub fasoli JiBX, jeśli śledzisz projekt GSoC), wówczas użycie innych powiązań danych może pomóc, usuwając wszelkie potrzebne odwzorowania z JAXB do tych modeli obiektów .

Mam nadzieję, że trochę pomaga.

3

Pamiętaj, że JAXB is a specification więc istnieje wiele implementacje: Metro (wdrożenie Reference, MOXy (Jestem tech ołów), itp

JAXB może być stosowany począwszy od klas Javy lub schematu XML Jeśli masz klasy. które nie mogą być modyfikowane indywidualnie Implementacje JAXB oferują rozszerzenia do obsługi tego.Zobacz externalizable metadane Moxy za:

JAXB został zaprojektowany do pracy z załączników MTOM patrz załącznik naziemnego/unmarshaller.

Moxy został oparty XPath mapowania który oferuje pełną kontrolę nad swoim Zobacz obiekt-to-XML Oprawa: