31. března 2008

Apache CXF vs. Codehaus XFire

Minulý rok jsem na jednom malém projektíku použil XFire pro zpřístupnění určité funkcionality přes webové služby.

Minulý týden jsem opět potřeboval dát dohromady pro účely demo aplikace nějakou webovou službu a chtěl jsem tedy znovu použít XFire, protože jsem nechtěl nic vymýšlet. Ale hned při zobrazení úvodní stránky projektu XFire se mi zobrazila tato hláška:

XFire is now CXF - User's looking to use XFire on a new project, should use CXF instead. CXF is a continuation of the XFire project and is considered XFire 2.0. ...

Nedalo mi to, abych tedy nevyzkoušel Apache CXF, protože se to někdy v budoucnu může hodit.

Bohužel mě to moc (zatím) nenadchlo, určitě také kvůli tomu, že vše ještě není úplně dotažené jak má být:
  • Kdy píšou, že je to vlastně XFire 2.0, tak bych očekával nějakou návaznost, možnost migrace na vyšší verze. Potřeboval jsem převést popis webové služby (JAX-WS APIs, specifický binding objektů pomocí Aegis), konfiguraci webové služby (nastavení serveru) a testy.
    Migrace JAX-WS byla bez problémů, což je určitě tím, že se jedná o JSR 224 specifikaci a Apache CXF nabízí v současné době plnou implementaci. Aegis je i v Apache CXF, takže zde také nebyl problém.
    Konfigurace je nyní úplně jiná, takže tato část se musí přepsat. Ale je k dispozici celkem rozumná migrační dokumentace, takže s tímto jsem problém neměl.
    Bohužel testy se mi nepodařilo zmigrovat vůbec a o co hůře, ani se mi žádné testy nepodařilo napsat! Určitě je to také tím, že jsem k tomu našel minimum dokumentace. Pomocí XFire se psaly testy parádně.

  • S dokumentací budu pokračovat - jsem asi "rozmazlený" Springem, kde vždy najdu to co potřebuji. Tady prostě ne - základní dokumentace je dle mého názoru nedostatečná a JavaDoc mi přijde hodně slabý. Zkoušel jsem si i nějaké kusy kódu uvedené na webu a i když jsem je překopíroval, tak mi to hlásilo chyby, musel jsem něco dopisovat... Tohle je prostě slabina.

  • Každý, kdo dělá s Javou je zvyklý, že když nastane výjimka, tak se vypíše celý průběh volání. Tady to vše Apache CXF "nějak" chytá a ve výsledku to jen vypíše chybovou hlášku bez nějakých dalších informací.

  • Ani nevím, zda Apache CXF vznikl až po XFire nebo oba projekty spolu běží souběžně, každopádně bych si troufl odhadnout, že hlavní důvod přechodu na Apache CXF bude architektura aplikace. Apache CXF je zcela postaven nad Springem, má naprosto modulární architekturu, takže není žádný problém "cokoliv" změnit, upravit. Ale když k tomu není pořádná dokumentace, tak pak architektura může být sebelepší...

Hrál jsem si s Apache CXF jeden den, takže moc toho vyzkoumat zase nešlo a na něco jsem určitě nepřišel. Budu rád za vaše postřehy.

2 komentáře:

Anonymní řekl(a)...

Pokial viem, tak CXF vznikol zlucenim kodov XFire a Celtix-u (http://celtix.objectweb.org/) a vyvoj prebieha uz len v ramci Apache SF. (Koniec koncov, posledna verzia XFire vysla pred vyse rokom).

martiner řekl(a)...

d lepší než Axis2 :)