Często zdarza się że metody, które piszemy i później testujemy mają argumenty w postaci tablic. EasyMock wówczas potrafi zgłosić wyjątek, że przekazana tablica jest różna od oczekiwanej mimo, że zawartość tablic jest identyczna.
Do Javy 6.0 zostało dołączone API ( [JSR 223](http://www.jcp.org/en/jsr/detail?id=223)) umożliwiające wywoływanie różnych języków wewnątrz wirtualnej maszyny. Można w ten sposób przesunąć chociażby moment kompilowania kodu na później bądź od razu podpiąć język interpretowany.
Każdy z obiektów który jest konfigurowany w kontekście Springa ma szansę zweryfikować swój stan tuż po zainicjowaniu wszystkich wartości, które zostały mu przekazane. Wynika to z tego, że czasami obiekty potrafią działać na kilku różnych zasobach i można wstrzyknąć do nich tylko jeden rodzaj tegoż. Czasami po prostu potrzebujemy sprawdzić czy są przekazane wszystkie ustawienia konfiguracyjne bądź zainicjować połączenie do bazy danych na podstawie przekazanych parametrów.
_Jako, że nie zawsze mam czas pisać dłuższe noty, a nie wszyscy znają Springa postanowiłem publikować krótkie porady, które mogą kiedyś komuś się przydać._
Ostatnimi czasy odbyłem kilka spotkań w większych i mniejszych firmach. To co mnie zastanowiło po jednej z ostatniej rozmów to zdanie:
> Korzystamy z profesjonalnych narzędzi takich jak [Tibco](http://www.tibco.com/), [WebMethods](http://www.softwareag.com/Corporate/products/wm/default.asp), czasami [Bea](http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/aqualogic/service_bus/).
Co łączy wymienione produkty? Otóż wszystkie są rozwiązaniami z klasy EAI i ... są płatne. Zdanie to usłyszałem w odniesieniu do [Apache Service Mix](http://servicemix.apache.org), którym się interesuję. Wniosek z tej wypowiedzi jaki udało mi się wysnuć od razu stał się tematem tej noty, czyli jeśli coś nie jest komercyjne nie jest też profesjonalne. Tak jakby OSS był gorszym rozwiązaniem od kupienia licencji na pudełkowe rozwiązanie od jakiegoś producenta.
[Log4j](http://logging.apache.org/log4j/) jest najpopularniejszą biblioteką do logowania dla Javy. Została ona wydana już jakiś czas temu i w chwili obecnej rozwija się znacznie wolniej niż kiedyś, warto jednak nadmienić że społeczność wciąż dostarcza nowych możliwości. Może najpierw o samej strukturze log4j.
Pamiętam, jak jakiś już czas temu, kiedy pracowałem w [PZU](http://pzu.pl) dyskutowałem z kolegą na temat [Springa](http://www.springframework.org/). Obaj podziwialiśmy wówczas jego jakość. Chyba wszyscy ludzie którzy mieli styczność z tym narzędziem przyznają, że jest to na prawdę porządnie napisany kawałek kodu. Połączenie bardzo dobrej dokumentacji oraz duża społeczność sprzyjały cały czas Springowi w odnoszeniu kolejnych sukcesów.
Do dnia 17 września, kiedy to [SpringSource](http://springsource.com) ogłosiło zmianę zasad - i poniekąd [konieczność wykupywania subskrypcji](http://www.springsource.com/node/558). Wiadomość ta zaiste zelektryzowała społeczność.
W nawiązaniu do [poprzedniej noty o CXFie](http://blog.dywicki.pl/2008/07/23/budowanie-uslugi-sieciowej-w-oparciu-o-apache-cxf/), którą napisałem jakiś czas temu, gonię aby uzupełnić brak konfiguracji klienta. Sam proces jest bardzo zbliżony do tworzenia klienta w oparciu o XFire. Nie jest wymagana duża ilość kodu Javy, a w zasadzie tylko dwa pliki XML (client.xml, _myservice.xml_).
Pierwszy z nich odpowiada za wczytanie wymaganych rozszerzeń CXFa oraz definicję bazowej konfiguracji fabryki z interceptorami. W interceptorach możemy skonfigurować logowanie, obsługę załączników czy standardów WS-Security etc. Wszystkie te ustawienia będą dziedziczone, a fabryki docelowych usług będą dodawać tylko adres, do odpytywania. Na koniec bean klienta będzie miał określony **autowire** by nie przekazywać mu wszystkich własności.
[](http://blog.dywicki.pl/wp-content/uploads/2008/09/junit.jpg)
Temat testów jednostkowych nie pojawiał się na tym blogu tak często jak [PHP](http://blog.dywicki.pl/category/php) czy [JAXB](http://blog.dywicki.pl/category/jaxb), jakkolwiek temat ten poruszałem w 2 notach - [o testach](http://blog.dywicki.pl/2007/04/22/testy-jednostkowe/) oraz [o singletonie](http://blog.dywicki.pl/2007/02/01/singleton/).
Tych, którzy chcieliby dowiedzieć się więcej o testach na przykładzie [JUnit](http://junit.org) i Javy zapraszam się do zapoznania z bardzo dobrą pozycją na temat testów jednostkowych, z którą miałem przyjemność się zetknąć.
Od jakiegoś czasu w pracy do tworzenia usług sieciowych korzystam z [Apache CXF](http://cxf.apache.org). Jako że biblioteka jest stosunkowo nowa i nie najlepiej udokumentowana postanowiłem przedstawić na blogu jak wygląda proces tworzenia.
CXF jest połączeniem kilku bibliotek - [YOKO](http://cwiki.apache.org/YOKO/), [Celtixa](http://celtix.objectweb.org/) oraz [XFire](http://xfire.codehaus.org/). Każda z nich wcześniej realizowała pewien fragment obecnej funkcjonalności CXF - YOKO obsługuje Corbę a XFire usługi sieciowe. Obecne CXF jest gotowy do używania "produkcyjnego", ponieważ niedawno wyszedł z fazy inkubacji. :)