29 grudnia 2010

Co z tą Javą (Java SE 7 i 8)

Co się dzieje z Javą? Wszyscy którzy śledzą rozwój Javy, już od dłuższego czasu zadają sobie pytanie - kiedy będzie Java SE 7? Miała być dawno temu, ale po drodze dużo się działo i cały czas nie wiadomo kiedy specyfikacja ujrzy światło dzienne. No właśnie, póki co nie było nawet JSRa, w ramach którego specyfikacja miałaby być opracowywana.

Aż tu nagle, równocześnie, tworzy się JSRy dla specyfikacji Java SE 7 i - uwaga, uwaga - Java SE 8! Wyciągam na tej podstawie wniosek, że Java 7 nie będzie miała długiego życia. Pewnie nie długo potem pojawi się Java 8. Miejmy nadzieję, że tak będzie, bo się nam Java trochę przyblokowała w rozwoju.

Przy okazji warto odnotować, że głosowanie nad standardami Java SE 7 i 8 przebiegło w nieprzyjemnej atmosferze wojny o licencje. W obydwu przypadkach mamy 3 głosy na NIE a ci którzy głosowali na TAK wyraźnie zaznaczają, że im też nie podoba się to co się dzieje. Komentarze głosujących można streścić w dwu zdaniach.

Grupę głosującą na NIE dobrze reprezentują słowa Googla:

"While we support the technical content of this JSR, Google is voting no because of its licensing terms."

A grupę głosującą na TAK słowa Red Hat'a:

"Red Hat's vote is based solely on the technical merits of the JSR. (...). However, we are extremely disappointed with the license terms and that a more open license has not been adopted by the Specification Lead."

Mówiąc w skrócie, wszyscy zgadzają się co do tego, że merytorycznie standardy Java SE 7 i 8 zmierzają w dobrą stronę, jednak jednocześnie wszyscy dostrzegają, że coś niedobrego dzieje się jeśli chodzi o otwartość platformy.

13 grudnia 2010

Nowości na portalu naukaJavy.pl

Idąc za głosem użytkowników, którzy od samego początku istnienia portalu domagali się zadań i kursów multimedialnych, zapoczątkowałem ten właśnie kierunek rozwoju, wychodząc na przeciw i jednym i drugim.

Pojawiło się więc pierwsze zadanie - zadanie do rozdziału "Zbiory"; oraz pierwszy filmik szkoleniowy - "HelloWorld w Eclipse IDE", a właściwie to cała sekcja "Multimedia", która to jednakowoż póki co zawiera tylko ten jeden film.

Filmik póki co jest dosyć słaby, ale szlaki przetarte i mam nadzieję z czasem zastąpić go produkcją wyższej jakości. Zadanie za to wydaje mi się być w pełni ciekawe. Jest też rozwiązanie. Zapraszam do testowania nowych materiałów.

24 listopada 2010

Mam certyfikat z TOGAF 8


Właśnie pobrałem z TOGAF Directory of Certified People PDFa z moim certyfikatem. Od dziś jestem TOGAF 8 Certified - mały krok dla ludzkości, ale duży dla mnie!

Co to jest TOGAF próbowałem pisać - jak jeszcze sam nie do końca wiedziałem, ale wyszło całkiem nieźle - w artykule "Co to jest EA na przykładzie metody TOGAF". A jest to taka metodyka do planowania rozwoju firmy, z głównym naciskiem na to, w jaki sposób muszą się rozwijać systemy IT aby tenże rozwój całej firmy jak najlepiej wspierać.

Certyfikat z TOGAF 8 zdobywa się w sposób niestandardowy, tj. wpierw trzeba przejść przez certyfikowane szkolenie, a potem - już w domu - trzeba napisać egzamin, tj. odpowiedzieć na dwadzieścia kilka pytań, i wysłać go do The Open Group do oceny. Dwa z nich wymagają odpowiedzi w formie małego opowiadanka, a pozostałe w formie jednego czy dwu zdań. W każdym razie nie jest to test.

3 listopada 2010

Tabela oceny umiejętności

Każdy z nas od czasu do czasu musi wypełnić jakąś tabelę, która to ma rzekomo opisywać nasze umiejętności. Taką tabelę samooceny zawodowej. Właśnie wypełniam jedną z nich i znów pojawia się we mnie to nieodparte poczucie, że wyrazić swoje umiejętności w postaci takiej tabeli jest niezmiernie trudno. Nie to żebym uważał że się nie da – wprost przeciwnie – tylko że jeszcze nigdy nie zdarzyło mi się widzieć takiej tabeli, która to pozwalałaby mi „pokazać prawdziwego siebie”. Ktoś z was widział? Jakieś ciekawe spostrzeżenia w temacie?

13 października 2010

Nie ma iBatisa, jest MyBatis

Jakiś czas temu wydano wersję 3.0 iBatisa. Wprowadzono kilka ciekawych funkcjonalności; między innymi możliwość definiowania mapowania za pomocą adnotacji czy obsługę funkcji pobierania wygenerowanych kluczy (tj. wykorzystanie operacji JDBC getGeneratedKeys()) bez konieczności pisania (i uruchamiania) osobnych zapytań. Mnie interesuje akurat to drugie. Jeszcze nie wykonałem migracji więc nie wiem jak i czy to działa - wersja 3 nie jest w pełni wstecz kompatybilna z wersją 2 iBatisa więc nie jest to zadanie trywialne i troszkę potrwa.

Jednocześnie (może nie całkiem jednocześnie) zrobiono mały rebranding, tzn. iBatis nazywa się teraz MyBatis i nie jest już dzieckiem fundacji Apache tylko Googla. Nowa strona domowa projektu to http://www.mybatis.org/.

17 września 2010

Kariera dla informatyka – od Programisty do Czekoladnika

Każdy z nas zastanawia się czasem nad kierunkiem w którym zmierza – odwieczne pytanie – kim chcę być w przyszłości?

Ja swoją karierę zawodową zaczynałem, razem z dwoma kolegami z uniwersyteckiej ławy, jako Konsultant IT ds. PeopleSoft CRM (IBM który nas zatrudnił wysłał nas właśnie w takim charakterze do TP S.A.). Teraz jestem Architektem SOA w AGORZE i zastanawiam się co dalej. Jeden ze wspomnianych kolegów – Tomasz Sienkiewicz – wybrał błyskotliwą karierę Czekoladnika (!).




Jeszcze kilkanaście miesięcy temu Tomek był dobrze zapowiadającym się Architektem IT. Teraz, do spółki z kolegą (także informatykiem), prowadzi Manufakturę Czekolady – maleńki zakład produkcyjny, gdzie zgodnie z tradycyjną recepturą wytwarzają najprawdziwszą i najpyszniejszą czekoladę jaką tylko ludzkość nauczyła się wytwarzać. Bez wypełniaczy w stylu masło kakaowe czy lecytyna i bez sztucznych dodatków. Wszystko robi się na miejscu, począwszy od prażenia i miażdżenia ziarna kakaowca, aż do ręcznego zawijania w złote papierki.



Manufaktura Czekolady ma w swojej ofercie 6 smaków. Najbardziej wyjątkowy z nich to Czekolada Deserowa z Kwiatem Soli Morskiej. Jak smakuje? Trzeba spróbować samemu! Ja mogę pokazać jedynie jak wygląda.





15 września 2010

Zadania cykliczne w bazie Oracle - pakiet DBMS_JOB

Ilekroć pada stwierdzenie, że jakiś proces powinien być uruchamiany cyklicznie, pada też stwierdzenie, że należy napisać skrypt uruchamiany przez Unixowego demona CRON. Pewnie nie jest to podejście złe, ale jeśli jedyne co trzeba robić, to wykonywać operacje na bazie danych Oracle, to można to zrobić prościej, w ramach samego Oracla, przy użyciu pakietu DBMS_JOB.

Aby zdefiniować i uruchomić cyklicznie zadanie operujące na danych w bazie danych Oracle wystarczy napisać procedurę składowaną PL/SQL i uruchomić funkcję SUBMIT(…) z pakietu DBMS_JOB, przekazując jako argumenty wywołania nazwę procedury PL/SQL, czas pierwszego uruchomienia oraz wyrażenie określające interwał.

Przykładowo, jeśli chcemy aby procedura składowana o nazwie DO_CLEAN uruchamiana była co dzień o godzinie 1:00 w nocy, to wystarczy wykonać blok:
VARIABLE v_jobno NUMBER;
BEGIN
dbms_job.submit(:v_jobno,'DO_CLEAN;',trunc(sysdate)+1+1/24,'trunc(sysdate)+1+1/24');
END;
Definicje zadań uruchomionych w powyższy sposób są umieszczane w tabeli systemowej USER_JOBS. Możemy tam wyszukać nasze zadania i zobaczyć jaki jest ich status. Dobra dokumentacja pakietu DBMS_JOB jest na stronie http://psoug.org/reference/dbms_job.html.

Jeśliby nam chodziło o cykliczne kasowanie starych (starszych niż 5 dni) danych z tabeli LOGS to procedura DO_CLEAN mogłaby wyglądać następująco:
CREATE PROCEDURE DO_CLEAN IS
ts_max TIMESTAMP := trunc(current_timestamp - 5);
BEGIN
DELETE FROM logs WHERE logs.ts < ts_max;

COMMIT;
END DO_DELETE;
W najnowszych wersjach bazy danych Oracle powinno się zamiast pakietu DMBS_JOB używać pakietu DBMS_SCHEDULER, aczkolwiek wersja z którą ja pracuję jeszcze na tyle nowa nie jest.

3 sierpnia 2010

Podział na tych co robią i tych co wymagają

Bardzo dobrze jest, gdy osoba która określa w jaki sposób wykonać pewną pracę i osoba która tę pracę wykonuje, to są różne osoby. Bardzo dobrze dla jakości ostatecznego produktu, niezależnie od tego co tym produktem jest.

Człowiek ma tendencję do chodzenia na skróty. Nawet najambitniejsi z czasem zaczną zniżać swe loty, jeśli to oni sami będą decydowali o tym jak zrobić to co robią i jeśli nikt nie będzie kontrolował jakości ich pracy. Najłatwiejsza do pokonania ścieżka nigdy nie prowadzi na najwyższy szczyt.

Przekładając powyższe na język projektów IT - Analityk, który określi jak to co powstaje ma działać, Architekt, który zadecyduje jak to coś należy zaimplementować i Programista, który to implementować będzie to powinny być różne osoby. Tester, który przetestuje finalne rozwiązanie to w żadnym razie nie może być Programista, który to rozwiązanie implementował. Ważną rolą w procesie projektowym jest także Kierownik Projektu i także ta rola nie powinna być łączona z pozostałymi.

Idealnie jest, gdy każda z ról obsadzona jest przez inną osobę, ale jeśli to nie jest możliwe, to powinniśmy starać się co najmniej o to, aby nikt nie robił w dalszej fazie projektowej tego, co sobie sam w poprzedniej fazie zdefiniował. Najważniejsze jest więc, żeby nie byli tą samą osobą Analityk i Architekt, Architekt i Programista, Programista i Tester. Kierownik projektu nie powinien być w żadnym razie Architektem. Kierownikowi zależy przecież głównie na tym, żeby było szybko. Zadaniem architekta jest zadbać o to, żeby było dobrze. Te dwa cele często niestety kłócą się ze sobą. Patrząc długofalowo jest może nawet wprost przeciwnie, ale w rzeczywistości rzadko się tak niestety patrzy, a już na pewno nie patrzą tak kierownicy projektów, których głównym celem jest przecież wykonać dany projekt.

9 czerwca 2010

Co to jest EA na przykładzie metody TOGAF

Jakiś czas temu moim światem zawodowym zawładnął trzyliterowy skrót SOA. Najbliższy czas upłynie mi zdaje się nad zgłębianiem sensu akronimu EA (akr. Enterprise Architecture). Kolejny akronim, o którym zaczyna się robić głośno… a może i było o nim głośno już od dawna, tyle że ja nie słyszałem, jako że stoję teraz nieco z boku, tj. w firmie która wdrożenia nowinek IT raczej kupuje a nie sprzedaje, w związku z czym nowinki te docierają do niej troszkę wolniej. W każdym razie wygląda na to, że potrzebuje rozeznać się nieco lepiej w temacie, co niniejszym wspólnie z wami czynię.

No więc cóż kryje się pod pojęciem Enterprise Architecture? Co to jest architektura IT wszyscy my – a więc profesjonaliści IT – dobrze rozumiemy. Architektura IT to sposób zorganizowania IT, tj.: komponenty IT, relacje między tymi komponentami oraz relacje komponentów z otoczeniem.

Architektura jest to – w ogólności – podział całości na części, ze zrozumieniem funkcji każdej z tych części i wzajemnych relacji poszczególnych części oraz relacji tych części ze światem zewnętrznym, a więc z tym co jest poza naszą całością.

A co to jest Enterprise? Enterprise to jest zbiór jednostek (firm, działów jednej firmy, oddziałów, agencji, itd.) mających wspólne cele i funkcjonujących jako pewnego rodzaju całość.

Enterprise Architecture jest więc podziałem na części korporacji. Próbą zrozumienia jak funkcjonuje korporacja i próbą planowego i celowego zarządzania zmianami w tejże korporacji, włączając w to, ale nie ograniczając się do IT.

Enterprise Architecture jest pomysłem na to, aby zanim przystąpi się do jakichkolwiek działań w obrębie IT, zastanowić się poważnie nad tym, po co te działania w IT miałyby być robione i jak to co ostatecznie będzie zrobione ma wyglądać.

Oczywistym jest, że rolą IT jest wspieranie funkcjonowania firmy w tym sensie, że powinno ono wytwarzać narzędzia ułatwiające to funkcjonowanie. Zanim przystąpimy do zastanawiania się, jak powinno wyglądać nasze IT, a więc zanim przystąpimy do rozważań nad Architekturą IT, powinniśmy zastanowić się, jak chcemy aby wyglądał nasz biznes, tj. nad architekturą biznesu, przedsiębiorstwa jako takiego. To jest właśnie sens EA. W sumie rzecz zdaje się dość oczywista, tyle że jak zwykle diabeł tkwi w szczegółach. Ważne jest, aby robić to w sposób systematyczny i planowy a co za tym idzie rozumny i celowy.

Dobrym zobrazowaniem idei EA jest pobieżne choćby przyjrzenie się metodzie TOGAF (The Open Group Architecture Framework). Po pierwsze, mówi się tam, że Architektura Przedsiębiorstwa to Architektura Biznesowa, Architektura Danych, Architektura Aplikacji i Architektura Infrastruktury IT.

Architektura Biznesowa to sposób funkcjonowania korporacji, a więc struktura organizacyjna, strategia biznesowa i kluczowe procesy biznesowe.

Architektura Danych to typy i źródła oraz cykl życia danych niezbędnych do funkcjonowania korporacji. Zauważmy, że to właśnie dane są najważniejsze. Aplikacje mają za zadanie jedynie wspomagać zbieranie i przetwarzanie oraz przeszukiwanie tych danych. To jakie to są dane i w jaki sposób są przetwarzane w dużym stopniu determinuje sposób konstrukcji oprogramowania, które te dane ma za zadanie przetwarzać. Architektura Danych jest łącznikiem pomiędzy Architekturą Biznesu i Architekturą IT.

Architektura Aplikacji to znaczna część tego co można rozumieć pod pojęciem Architektury IT. Jest to sposób organizacji oprogramowania, tj. podział na poszczególne aplikacje i integracja tych aplikacji tak aby wspólnie zapewniały zaplanowane przetwarzanie danych i wspierały istniejące procesy biznesowe.

Architektura Infrastruktury IT to rozwiązania techniczne zapewniające funkcjonowanie oprogramowania zgodne z przyjętymi założeniami i istniejącymi możliwościami.

TOGAF opisuje także metodę rozwoju architektury, tj. Architecture Development Method (ADM). Metoda ta złożona jest z kilku kroków kojarzących się z cyklem rozwoju oprogramowania, tyle że tylko część etapów związana jest bezpośrednio z oprogramowaniem.

Pierwsza faza metody ADM to w wielkim skrócie ustalenie kontekstu biznesowego i konsolidacja wokół inicjatywy wszystkich kluczowych interesariuszy.

W fazie drugiej tworzona jest wizja korporacji do której dążymy. Jest to kluczowy krok z punktu widzenia celowości pracy. W końcu każda praca rozwojowa powinna być nakierowana na osiągnięcie jakiegoś konkretnego celu mającego znaczenie z perspektywy korporacji jako całości. Jeśli miało by się na tym etapie okazać, że tak naprawdę nikt nie wie do czego omawiana inicjatywa dąży, to jest to bardzo dobra przesłanka, aby tej inicjatywy szybko zaprzestać.

Kolejny etap to opisanie istniejącej Architektury Biznesowej oraz Architektury Biznesowej docelowej, a więc tej do której dążymy. To na tym etapie zaczyna być widoczne, co trzeba będzie zrobić. Są to zmiany na poziomie procesów biznesowych, a więc trzeba to będzie jeszcze przełożyć na zmiany w IT, ale wstępny zakres tych zmian zaczyna być już widoczny. Nie zapominajmy też, że projekt IT to tylko część całego projektu, który może zawierać także takie elementy jak reorganizacja. Po tym etapie ma być wiadomym co trzeba zmienić w firmie, nie tylko w IT.

Dalsze etapy to właśnie rzutowanie zmian w biznesie na zmiany w IT, a więc opracowanie niezbędnego zakresu zmian Architektury Danych, Architektury Aplikacji i Architektury Infrastruktury IT oraz implementacja i wdrożenie tych zmian. Ten fragment pracy związany jest już stricte z rozwojem oprogramowania.

Już dawno zorientowałem się, że użyte technologie mają – paradoksalnie – najmniej decydujący wpływ na ostateczny rezultat projektu IT. Jeśli to nie technologia decyduje o powodzeniu lub porażce projektów technologicznych to w takim razie co? Właśnie sprawność zarządzania architekturą korporacji, bo takie zarządzanie i taka architektura w każdej korporacji istnieje, tyle że nader często jest to architektura niekontrolowana, powstała i zarządzana samorzutnie. Jeśli kogoś interesuje rozwój IT, to w pierwszym rzędzie powinien zająć się rozwojem architektury. Im szerzej pojęta architektura to będzie, tym lepiej.

6 maja 2010

SOA to tylko element architektury IT

SOA to tylko jeden z elementów architektury – jeden z wielu drogowskazów, uczących nas jak należy organizować systemy informatyczne przedsiębiorstwa, by były takie jakimi chcielibyśmy je widzieć. Może to się wydawać stwierdzeniem dość banalnym, ale wynika z niego jedna fundamentalna prawda, bez zrozumienia której nie mamy co myśleć o wdrożeniu SOA. Nie da się wdrożyć SOA, jeśli nie wdrożymy wpierw – albo co najmniej równolegle – procesów zarządzania globalnego architekturą IT!

SOA nie może się rozwijać w oderwaniu od rozwoju poszczególnych systemów dziedzinowych, które udostępniają usługi będące fundamentem SOA. Jeśli systemy dziedzinowe będą budowane bez myślenia o uniwersalności i re-używalności, to nie wiele re-używalności i uniwersalności uda nam się osiągnąć na poziomie usług.

Jeśli współpracujące systemy będą ze sobą powiązane w sposób logiczny, tj. jeden będzie budowany ściśle pod kątem drugiego, to zupełnie niewiele pomoże nam, że komunikację pomiędzy tymi systemami zaimplementujemy jako wywoływanie usług. Może to dobrze wyglądać z lotu ptaka, ale to nie jest SOA!

9 marca 2010

Mam SCWCD

W zeszły piątek zdobyłem nowe trofeum - certyfikat SCWCD, EE 5. Kolekcja rośnie. Wynik egzaminu bardzo dobry, aż 94 %. Trochę nawet ponad to czego bym się spodziewał.

Jakie wrażenia? W sumie było dosyć podobnie jak na egzaminie do SCJP. Uprzedzając pytania - uczyłem się z książki "Head First Servlets & JSP". Dodatkowo przerobiłem testy z pakietu WGS-PREX-J083C od SUNa. Testy kupiłem w promocji - pisał o niej Jacek w artykule "Pakiety certyfikacyjne od Suna za 600 PLN (...)" - razem z Voucherem w pakiecie za 600 zł. BTW - dzięki Jacek. Nie dość że dzięki tobie miałem dostęp do dobrych testów przygotowujących to jeszcze zaoszczędziłem 150 zł na Voucherze. Kolejny dowód na to, że warto czytać blogi o Javie :)

Poniżej raport z egzaminu. Co trochę mnie zaskoczyło błędy popełniłem w częściach z których czuję się dosyć mocny - może to właśnie ta pewność siebie mnie zgubiła? Może troszkę za mało się zastanawiałem nad odpowiedziami?


1 marca 2010

Portal naukaJavy.pl

Nadszedł już czas ujawnić moje nowe przedsięwzięcie. Jacek Laskowski ujawnił swoje plany stworzenia nowego serwisu ad. Javy i społeczności wokół niej skupionej już na etapie domeny internetowej (no, może ma więcej tylko trzyma to w szafie a nie w sieci) czym zachęcił mnie nieco do ujawnienia się troszkę wcześniej niż inicjalnie planowałem. No więc... jakiś czas temu zacząłem budowę serwisu przeznaczonego dla osób które chcą rozpocząć naukę Javy. Treści jeszcze nie ma wiele, ale już widać mniej więcej jak to ma wyglądać. Zapraszam do oględzin - www.naukaJavy.pl!

16 lutego 2010

Jak zacząć naukę Javy

Wielokrotnie zdarzało mi się słyszeć pytanie - "jak najlepiej zacząć naukę Javy"? Co zwykłem odpowiadać w takiej sytuacji? Coś w stylu "yyy... uuuu... może od... Thinking in Java?"

Właściwie to nie wiem co polecić. O "Thinking in Java" mówiłem tylko i wyłącznie dlatego, że jest to jedyne konkretne źródło jakie znam; choć sam tej książki nie czytałem - zbyt rozlazła jak dla mnie. A skąd ja sam się uczyłem? Yyyy... uuuu... sam nie wiem jak to było. Trochę tu, trochę tam.

A co wy odpowiadacie na takie pytanie? Zapewne każdy z was od czasu do czasu takie pytanie gdzieś słyszy. Jak najlepiej zacząć naukę Javy?

12 lutego 2010

IE to jednak straszne G

Narzekanie na Internet Explorera to nic nowego. Ja sam używam głównie Firefoxa, ale jakoś tak - aż do tej pory - bez większego przekonania o jego ogromnej wyższości nad IE. Teraz, kiedy to zobaczyłem na własne oczy, jakie cuda wyczynia IE 7, przejrzałem. IE to straszne G!

Właśnie zobaczyłem, jak słabo wygląda mój serwis getSCJP.pl w IE 7. Niby nic takiego, ale ewidentnie IE 7 nie radzi sobie ze skalowaniem grafiki. Można oczywiście zwalić całą winę na mnie - przecież mogę wrzucić grafikę w odpowiednim rozmiarze, wtedy nie będzie problemu ze skalowaniem - tyle że ten problem ma tylko IE. Firefox radzi sobie bardzo dobrze.

IE 7 (nie sprawdziłem jeszcze IE 6 czy 8) nie radzi sobie także z formatowaniem w znacznikach <pre>. Od zawsze IE miał problem z wyświetlaniem pustych linii (puste linie wyświetla tylko jeśli są w niej jakieś spacje), ale IE 7 przechodzi samego siebie. IE 7 zupełnie nie radzi sobie z białymi znakami w elementach <pre> których zawartość ustawiana jest dynamicznie, np. przez Google Code Prettify. Więcej o tym w artykule "IE <pre> tag bug". To jak bardzo sobie nie radzi niestety można zobaczyć na moim blogu, gdzie właśnie używam Google Code Prettify do kolorowania kodu.

27 stycznia 2010

Komisja Europejska akceptuje przejęcie SUNa

Oracle otrzymał bezwarunkową zgodę Komisji Europejskiej na przejęcie SUNa. Swojego TAK nie wypowiedziały jeszcze Chiny i Rosja, ale sprawa wydaje się być przesądzona. Co to oznacza dla przyszłości Javy? W swoim FAQ na temat przejęcia SUNa Oracle obiecuje, że będzie tylko lepiej:

"Oracle plans to accelerate investment in the Java platform for the benefit of customers and the Java community. (...) Oracle plans to not only broaden and accelerate its own investment in the Java platform, but also plans to increase the commitment to the community that helps make Java an ubiquitous, innovative platform unified around open standards."

Dziś, tj. 27 stycznia 2010, w godzinach 9:00 – 14:00 czasu tamtejszego (18:00 - 23:00 czasu polskiego) odbędzie się w siedzibie Oracle konferencja prasowa na temat strategii "Oracle + SUN". Ja raczej poczekam do dnia następnego żeby przeczytać jakiś skrót, ale jeśli ktoś nie może się doczekać (tudzież chce z innych względów posłuchać), to może - wydarzenie można oglądać w formie webcasta.

19 stycznia 2010

Uruchamiamy usługę JAX-WS na serwerze Tomcat

Jakiś czas temu (już dosyć dawno) zmagałem się z uruchomieniem usługi sieciowej JAX-WS na serwerze Tomcat. Nie udało mi się wtedy... ale udało mi się dzisiaj. A udało mi się, bo wszystko co było trzeba (a o czym nie wiedziałem) zrobił za mnie nowy NetBeans w wersji 6.8.

Pobrałem zaimplementowany przez samego siebie - i opisany w artykule "JAX-WS i Maven 2 w podejściu Contract First Development" - projekt implementacji usługi sieciowej z użyciem technologi JAX-WS i postanowiłem jeszcze raz zmierzyć się z problemem. Projekt po zaimportowaniu do Eclipsa nie chciał się kompilować, a że nie byłem w nastroju do walki tego rodzaju, sięgnąłem po NetBeans IDE. Projekt zaimportował się i zbudował bez problemu. Skonfigurowałem serwer Tomcat w wersji 6.0.20 i kliknąłem 'Run'. Zaskoczenie było ogromne - NetBeans odezwał się komunikatem:

Kliknięcie na guzik z napisem 'Yes' spowodowało utworzenie pliku 'sun-jaxws.xml' i dodanie co nieco do pliku 'web.xml'. Uruchomienie mimo wszystko zakończyło się błędem:

java.lang.ClassNotFoundException:
com.sun.xml.ws.transport.http.servlet.WSServletContextListener

Dziwne - Tomcat nie widzi klas JAX-WS. Co prawda Tomcat ich nie zawiera, ale powinny być w Java SE 6 SDK! W każdym razie póki co postanowiłem poradzić sobie z tym problemem w sposób prosty, a mianowicie dodać niezbędne JARy do WARa. W tym celu usunąłem linijkę '<scope>provided</scope>' z konfiguracji zależności od JAX-WS w projekcie 'math-ws':

<dependency>
<groupid>com.sun.xml.ws</groupid>
<artifactid>jaxws-rt</artifactid>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>

Przebudowałem projekt i ponownie kliknąłem 'Run'. Sukces! W ten oto prosty sposób udało mi się z pomocą NetBeans IDE uruchomić usługę sieciową JAX-WS na serwerze Tomcat. Dla ciekawych podaje jeszcze zawartość wygenerowanych plików 'web.xml' i 'sun-jaxws.xml' (w tej właśnie kolejności):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>MathServiceBeanService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MathServiceBeanService</servlet-name>
<url-pattern>/MathServiceBeanService</url-pattern>
</servlet-mapping>
</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
<endpoint
implementation="pl.centric.jaxws.math.service.MathServiceBean"
name="MathServiceBeanService"
url-pattern="/MathServiceBeanService"/>
</endpoints>