30 listopada 2007

Dzień Geronimo - Running JBoss Seam 2.0.0.GA on Geronimo 2.1

1 komentarzy
Borykałem się z tym tematem od dobrych kilku tygodni. Zawsze coś mi krzyżowało szyki i tym razem, walcząc z katarem, udało mi się przygotować, jak sądzę, ciekawy zestaw kilku dokumentów "Jak To Zrobić" (ang. how-to). Pamiętam, jeszcze w Toruniu, kiedy próbowałem organizować spotkania Toruńskiej Grupy Użytkowników Linuksa w akademiku małżeńskim nr 10, uczestniczyła w nich osoba (bodajże Tomek), która prowadziła projekt JTZ, który miał na celu tłumaczenie dokumentacji linuksowej. Stare dzieje, ale nazwa projektu odpowiada formie dzisiejszych dokumentów i tak mi się jakoś przypomniało.

Mamy więc długo oczekiwany dokument o uruchomieniu przykładowej aplikacji booking projektu JBoss Seam 2.0.0.GA - Running JBoss Seam 2.0.0.GA on Geronimo 2.1. Nie jest to dokument dla ludzi słabego serca, ale Ci, którzy są gotowi na "jazdę po bandzie" na pewno znajdą dla siebie coś ciekawego. Bez względu na stan Twojego serca, ważna informacja jaka płynie z dokumentu to fakt poprawnego uruchomienia JBoss Seam 2.0.0.GA wraz z Hibernate JPA na Apache Geronimo 2.1.

Kolejne dwa dokumentu już są mniejszego kalibru, ale równie ciekawe. Pierwszy z nich How to disable Geronimo services to avoid port conflicts dotyczy sposobu wyłączania usług Geronimo w celu zapobieżenia konfliktom związanym z portami usług, a drugi How to change port numbers for Geronimo services dotyczy zmiany portów usług Geronimo. Oba mają przybliżyć możliwości Geronimo, co może być szczególnie przydatne podczas uruchamiania kilku instancji Geronimo na jednej maszynie.

Trzy nieduże dokumenty o Geronimo zdejmuje długooczekujące zadania z mojej listy "Do Zrobienia" i śmiało mogę powiedzieć, że 30.11 (piątek) jest dniem dokumentacji Geronimo.

Wracam do lektury Learning Ruby Michaela Fitzgeralda wydawnictwa O'Reilly. Zaczynam dostrzegać zalety języków skryptowych i teraz mam kolejny problem do rozwiązania JRuby vs Groovy. Jestem na 4 rozdziale i już mnie nosi, aby wszystkie następne projekty tworzyć z JRuby/Groovy ;-)

29 listopada 2007

Testowanie złączeń FETCH JOIN w JPA

0 komentarzy
Miało być prosto i szybko, bo planowałem to na nie więcej niż 30 minut. Skończyło się na kolejnym artykule i 1,5 dnia poszło w zapomnienie. Na szczęście wiedza pozostała i może się nawet okazać, że znalazłem błąd w OpenJPA w kontekście złączenia INNER JOIN. Na ostateczną ocenę przyjdzie mi jeszcze poczekać, a tym którzy nie mają zamiaru tego robić polecam lekturę mojego artykułu o złączeniach JPA - Testowanie złączeń FETCH JOIN w JPA.

A zaczęło się całkiem niewinnie, kiedy na grupie użytkowników Geronimo Tomasz Mazan (aka Beniamin) zadał pytanie Force to load subobjects in OpenJPA o wymuszenie wczytywania danych relacji w Java Persistence API (JPA). Domyślnie JPA wczytuje pola relacyjne z opóźnieniem, jednakże istnieje kilka możliwości zmiany tego zachowania. Tak się złożyło, że wcześniej badałem temat złączeń (ang. joins), więc krótka odpowiedź, uściślenie i ostatecznie problem został rozwiązany. Jest kilka możliwości zaprezentowania tematu, z czego ja wybrałem sposób praktyczny z kilkoma wspierającymi narzędziami. Będzie OpenJPA, Maven, JUnit 4 i Derby wszystko, aby zestawić środowisko do potwierdzenie działania złączeń w JPA. Miłej lektury!

25 listopada 2007

SCEA 5 Part 2 assignment - kolejny etap do 12 grudnia

2 komentarzy
Kolejna wiadomość wyjaśnia zasady drugiego etapu w certyfikacji SCEA 5 BETA (Sun Certified Enterprise Architect). Czas zakończenia etapu to 12 grudzień 2007. Zadania dotyczą znajomości UML, więc, w połączeniu z moimi zawodowymi obowiązkami, zamierzam wykorzystać do tego IBM Rational Software Architect 7. Niech się przekonam na własnej skórze, co to cacko potrafi i jak pomocne może być w kontekście mojej certyfikacji.

Jest też element polski w zadaniu - You will be graded on correctly solving the technical and performance requirements, not on the "polish" of the finished product. Czyżby przypuszczali, że będę wysyłał mój esej po polsku?! To oni jeszcze się nie nauczyli polskiego?! ;-)

Zainteresowanych tematem certyfikacji SCEA 5 BETA oraz wyników innych zapraszam na forum Architect Certification (SCEA) na JavaRanch.

Congratulations! You have passed the Multiple Choice - Part I, of the SCEA 5 free beta exam.
Part II and Part II Beta Dates:

Assignment (Part II) Beta Dates: November 21st - December 12th, 2007
Short Essay (Part III) Beta Dates: November 28th - December 26th, 2007

Below you will find the instructions on what you must accomplish in the free assignment beta exam 311-301A and how to submit for grading.

Assignment Instructions:

You will have three weeks to complete the assignment part. If you feel you cannot do this free beta assignment in three weeks, please do not start it, as December 12th is the last day to submit your assignment in order for it to be valid and graded. If you do not submit your assignment, please delete this assignment as it is obsolete once the submission deadline is reached. If you do NOT complete Part II, you do not have to do Part III as you must complete all three parts of the SCEA beta exam in order to receive your certification.

The assignment requires that you architect a solution using the JEE platform for a well-defined set of business requirements. You have been given a business scenario with a business domain model, use case diagram and use case narrative. You will be graded on correctly solving the technical and performance requirements, not on the "polish" of the finished product. However your submission should be easy to read, understand and follow.

We have designed the complexity of the assignment so that it should take between 40-60 hours. If you find yourself spending more than 60 hours, then you are probably providing more detail than is necessary or you are lacking some of the skills necessary to complete the assignment. In order to help us validate the complexity, please provide the number of hours it took you to complete the assignment. This will not have any impact on your grade.

Your submission will be evaluated on a large number of objective criteria that fall into five categories:

1) Class Diagram: This category covers how well your class diagram(s) address the object model needed to satisfy the requirements.

2) Component Diagram: This category covers how well your component diagram(s) convey the structure of the architecture in satisfying the requirements.

3) Deployment Diagram: This category covers how well your deployment diagram conveys the production environment in satisfying the requirements.

4) Sequence/Collaboration Diagrams: This category covers how well your sequence or collaboration diagrams satisfy the requirements of the assignment.

5) Risk and Mitigation List: This category covers how well you have identified and mitigated risks that are involved in architecting the solution.

Additionally, categories 1-4 are evaluated on UML compliance.

Attached is your assignment.

Submitting Assignment for Grade

When you have completed the 311-301A Free Assignment - Part II beta, please zip it up, attach it to an email with the subject line "311-301A Part II Beta", and send it to sunbeta@prometric.com with your:

Name:
Last Name:
Prometric Id Number:
Email:
Country:
Number of hours it took you to complete the assignment:

You will have until December 12 to submit your final assignment, after this date, we will no longer accept submissions and the assignment you have is obsolete.

Essay Beta Instructions

If you did not submit your assignment – Part II, please disregard this section.

You will receive a 3rd and final email which will contain your voucher number for the SCEA Part 3 Beta exam. This email will be sent within 24 hours.

Registration for the Essay - Part III will start on November 24th.

To register for the Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5 Essay beta exam, exam number: 311-062, you may register online at www.prometric.com/Sun/default.htm, and follow the prompts. Or, you may register by phone, by calling your regional Prometric registration office, listed at www.prometric.com/ContactUs/TestTakers.

Asia/Australia - 61-2-96405830

Europe - 31-320-239-800

Japan - 81-0120-107737

Latin America - Contact your local Prometric testing center, listed at www.2test.com

USA/Canada - 1-800-795-3926

You will have until December 26th to complete the Essay beta Part III at a worldwide Prometric testing center.

Thank you for your participation and Good Luck.

Please note: The attached assignment is property of SUN Microsystems

22 listopada 2007

Wykład o EJB 3.0 na Politechnice Poznańskiej

7 komentarzy
Dzięki uprzejmości dr Dawida Weissa z Politechniki Poznańskiej 7 grudnia 2007 roku w godzinach 13:15-16:00 na Centrum Wykładowym Politechniki Poznańskiej, ul. Piotrowo 2 sala 6 zaprezentuję specyfikację Enterprise JavaBeans 3.0 (EJB3).

3 godziny wydają się być wystarczające, aby poruszyć większość (jeśli nie wszystkie) ważniejsze elementy specyfikacji i jej implementację w wykonaniu Apache OpenEJB, Apache Geronimo i potencjalnie GlassFish. Zgodnie z zaproszeniem wysłanym przez Dawida, obecność osób spoza specjalności TWO będzie mile widziana i nie będzie nikomu przeszkadzać.

Zachęcam do nadsyłania (np. jako komentarze do tej notatki) propozycji tematów dotyczących EJB 3.0 jakie powinienem poruszyć podczas prezentacji oraz sposobu jej prowadzenia - warsztaty, prezentacja, czy mikstura obu.

21 listopada 2007

SCEA 5 Beta results - przechodzę dalej!

3 komentarzy
Właśnie miałem kończyć na dzisiaj, kiedy ostatnie spojrzenie do skrzyki pocztowej i co widzę - SCEA Beta results, a tam:

Dear Jacek Laskowski,

Congratulations! You passed the SCEA Part 1 Beta exam. Passing score is 57%, your score is 69%. We will be sending a separate email containing your Part 2 assignment (which is a PDF file), complete with instructions, within the next 8 hours. If you do not receive the second email containing the assignment within the next 8 hours, please notify us at SunBeta@prometric.com. Thank you.

Sincerely,
SunBeta@prometric.com

Jeśli to kawał, to strasznie nieśmieszny. Czekam do rana na kolejne instrukcje. W końcu jak kawał to może rano będzie śmieszniej ;-) I jak tu zasnąć?!

Dla przypomnienia - FREE: SCEA 5 Beta Certification Exam (Three Parts).

Czy ktoś jeszcze podszedł do egzaminu? Jaki wynik? Jak tam wrażenia?

Relacja z WarsJava 2007 w Warszawie

2 komentarzy
O konferencji WarsJava 2007 (czytamy: warsdżawa) możnaby pisać wiele, jednakże jako, że należałem do ścisłego grona współorganizatorów pozwolę sobie na relację zdjęciową okraszoną kilkoma komentarzami. Mówi się, że zdjęcie, obrazek może wyrazić często więcej niż 1000 słów, a mając na uwadze nasze ogólne zarobienie, skrócę relację do niezbędnych szczegółów.

Proszę o namiary na osoby, których relacje z WarsJava ukazały się gdzieś w sieci. Najlepiej umieścić je jako komentarze do tej notatki.

Oczywiście jak to bywa przy organizowaniu tego typu przedsięwzięć przy 2-osobowej grupie organizatorów wszystko domykane było na ostatnią chwilę. Pewnie, że można było wcześniej, ale skoro zespół czynnych organizatorów składał się wyłącznie z 2 osób, a obowiązki nie pozwalały o sobie zapomnieć, nie dało się inaczej. Wspólnie z Łukaszem Świerczyńskim domykaliśmy sprawę wydatków do ostatniego dnia przed warsztatami, co ostatecznie zakończyło się decyzją, że koszulki będą dostępne na kolejnym spotkaniu Warszawa JUG w dniu 4.12.


Firma BLStream zdecydowała się pokryć koszty koszulek i tym samym konferencja miała swojego pierwszego (i jak się później okazało jedynego) sponsora. Jeszcze raz oficjalnie dziękuję w imieniu grupy Warszawa JUG za podjęcie decyzji o sponsorowaniu WarsJava 2007. W ten sposób nasze fundusze wzrosły i w ogóle nadzieje, że coś ciekawego może na tej konferencji się wydarzyć,np. rozdanie koszulek. Okazało się później, że nie było potrzeby się martwić zawczasu, gdyż ogólna ocena konferencji jaka dociera do mnie to 5+ (!)

Pewnie, że było kilka niedociągnięć, ale właśnie to był urok warsztatów - pełen luz okraszony dużą dawką technologii. Udało nam się stworzyć konferencję-warsztaty, które spełniły oczekiwania dużej rzeszy uczestników, którzy już zadeklarowali przybycie na kolejną edycję, a co istotne, że zostały zorganizowane dzięki pomocy Wydziału MIMUW oraz nas samych - grupy Warszawa JUG.


I tutaj należą się podziękowania dla p. dr Janusza Jabłonowskiego z MIMUW, który zasypywany moimi ciągłymi prośbami o sale i rzutniki sprawił, że strona nietechniczna nie stanowiła problemu, Łukasza Świerczyńskiego, który wspomógł mnie w organizacji (logo konferencji autorstwa jego brata Rafała Świerczyńskiego, koszulki, sponsorzy) oraz szanowne grono prelegentów WarsJava 2007 (w kolejności ich występowania): Łukasza Dywickiego, Wiktora Gworka, Sebastiana Pietrowskiego oraz Andrzeja Wisłowskiego.


Kiedy już nadszedł 17 października 2007 rozpoczęło się typowo - zadziałało prawo Murphy'ego i rzutnik odmówił współpracy. Na szczęście godzina 9:00 nie była typowa jak na sobotę (co widać na zdjęciu po początkowej ilości uczestników), więc mieliśmy mieszankę rzeczy typowych i nietypowych. To pozwoliło nam wszystkim dotrzeć się i potraktować problemy z rzutnikiem jako zaprawę do dalszych wspólnych bojów, tym razem technologicznych.


Pierwszym prelegentem był Łukasz Dywicki z tematem Praca z użyciem JAXB 2.0. Poszło sprawnie i rzeczowo, a jako, że Łukasz rozpoczynał i jeszcze te problemy rzutnikowe tym bardziej należą się brawa. Prezentacja pokazała nie tylko obycie Łukasza z JAXB, ale również jego znajomość klawiszologi Eclipse IDE. Po tej prezentacji już nikt nie miał złudzeń, że będzie ostra jazda i WarsJava to nie kolejna lajtowa imprezka. Gratulacje Łukasz!


Na chwilę przed kolejnym prelegentem zaczęło się zaludniać. Zbliżała się godzina 11:00, więc przy sobocie była to właściwa godzina, aby rozpocząć funkcjonowanie w społeczeństwie. Pojawili się nowi uczestnicy i czekając na naszą salę (która zajęta była na rzecz egzaminów z analizy różniczkowej do 11:00) na korytarzu zrobiło się tłoczno i gwarno.


Kolejnym prelegentem był Wiktor Gworek z tematem JRuby on Rails, czyli łączenie Javy i Rubiego. Nikt nie miał złudzeń, że nie tylko temat przyciągnie tłumy, ale również godzina (zaczynał o 11:00) i, a może przede wszystkim, ostatnie, dopracowane do perfekcji, jego prezentacje. Tym razem miało być jeszcze lepiej, bo to w końcu warsztaty, nieprawdaż? I nikt się nie zawiódł. Na początku rozgrzewka w postaci pewnej pracy manualnej.


Po robórkach ręcznych nadeszła pora wystąpienia Wiktora. Gość wiedział o czym mówi i z czym to się je. Dało się odczuć na sali ogólne zainteresowanie technologią i tylko możnaby się zastanawiać, czy to sposób prezentacji Wiktora, czy sama technologia była tego przyczyną.

Byli też tacy, którzy dojeżdżali na warsjava nie z okolic Warszawy, ale jeszcze dalej. Po ciężkich nocnych bojach z nowym podręcznikiem do NetBeans 6 zawitał również Radek Holewa. Widać było zmęczenie technologiczne materiału ;-)


O 12:30 nadeszła przerwa obiadowa i kolejna zmiana sali. To była dodatkowa atrakcja warsztatów - migracja z piętra na piętro, co miało niebagatelny wpływ na kondycję fizyczną polskiej społeczności javowej, która uczestniczyła w warsjava. Dla wielu zapewne było zbawienne, że zaczęliśmy na 5 piętrze, aby później zejść na piętro niżej, aż w końcu skończyliśmy na piętrze 2.

Przed kolejnym prelegentem - Sebastianem Pietrowskim, który przedstawiał temat W jedności siła: Spring-OSGi pojawili się dodatkowi niezidentyfikowani goście - czyżby w tej sali straszyło, czy tematami wzbudziliśmy moce piekielne?! ;-)


Po obiedzie i przy sobotniej aurze dawało się odczuć potrzebę ożywienia sali. Seba robił co mógł, ale niechybnie nie udało się. OSGi to nie JRuby, czy JAXB, więc mimo, że miało być również coś o Spring Framework to jego rola sprowadziła się do udostępnienia środowiska uruchomieniowego, a całość prezentacji poświęcona została OSGi. Jeszcze dużo wody w Wiśle upłynie zanim ta technologia zdobędzie sobie uznanie programistów, więc chylę czoła przez karkołomnym przedsięwzięciem demonstracji tej technologii przy niesprzyjających warunkach czasowych (godzina 13:30 w sobotę po obiedzie i to nie wszyscy) i lokalowych (sala okazała się trochę za mała).


Kolejne warsztaty o 15:15 poprowadził Andrzej Wisłowski z tematem Spring MVC + Freemarker - Budowa aplikacji webowej. Możnaby powiedzieć, że znowu Spring, ale podobnie jak poprzednio Spring sprowadził się do warstwy mediacji między modułami i udostępniał inne możliwości, z których można byłoby skorzystać przy tworzeniu aplikacji z Freemarkerem (nie mylić z FreeMakerem - brakuje 'r').


Andrzej nie miał łatwego zadania - temat ze względu na Springa mógł przyciągnąć tłumy, jednakże z mojego punktu widzenia sam Freemarker już niekoniecznie. Pojawiło się wiele pytań o sposób działania, więc należy potraktować to tylko i wyłącznie jako mój punkt widzenia.


Bardzo się ucieszyłem, kiedy na zakończenie warsztatów Warsjava okazało się, że wiele osób wyraziło chęć uczestniczenia w kolejnej edycji warsztatów i deklarowała potrzebę kontynuowania tematu organizacji tego typu imprez, z pewnymi udoskonaleniami. Jakimi? W okolicy MIMUW brakuje miejsca na dobry obiad, a i sale wydawały się być zbyt małe. Konieczne będą usprawnienia, ale do tego potrzeba ochotników, którzy w wolnym czasie chcieliby współorganizować kolejną konferencję Javarsovia 2008. A jest wiele do zrobienia - począwszy od utworzenia agendy, nagłośnieniu imprezy (plakaty, fora, serwisy internetowe), zorganizowaniu miejsca, w którym przyszłoby nam prowadzić konferencję (potencjalnie byłby to MIMUW, jednakże problemy lokalowe w sobotę ze względu na zajęcia mogą być nie do przezwyciężenia), a skończywszy na sponsorach (powinienem raczej odwrócić kolejność). To są jedynie podstawowe elementy organizacji warsztatów, a jest wiele innych, które mogłyby przyczynić się do ich urozmaicenia - rzutniki o dobrej rozdzielczości, dwa ekrany na salę, aby publiczność nie musiała nadwyrężać swoich, i tak nadwyrężonych, oczu (a jedynie umysły), napoje, poczęstunek, ulotki, oceny wystąpień i w ogóle stronę konferencji. A to i tak nie wszystko, jeśliby pomyśleć o konferencji podobnej do JavaPolis, czy Jazoon. Wszystko to może być, ale wyłącznie, jeśli zechcesz nam pomóc. Do tej pory zgłosiło się 3 chętnych przy organizacji konferencji Javarsovia (w tym 2 dotychczasowych organizatorów). Ja należę do nielicznego grona ssaków ginących - optymistów, którzy wierzą, że takie przedsięwzięcie można i w pojedynkę zestawić, jednakże biorąc pod uwagę komentarze napływające od społeczności javowej należałoby już zapomnieć o prototypowaniu. Należałoby zebrać uwagi od uczestników, obserwatorów i innych zainteresowanych, aby ostatecznie stworzyć coś doskonalszego. Wtedy 3 osoby to zdecydowanie za mało.

Zainteresowany? Zainteresowana? Przyłącz się do grupy Warszawa JUG i zorganizujmy to wspólnie. Będzie tylko tak, jak zrobimy to sami. Nikt nie zrobi tego za nas, a jeśli nawet, to będzie to tylko i wyłącznie tyle, ile uda się im poświęcić na to czasu, a to może być zdecydowanie za mało w porównaniu z Twoimi oczekiwaniami.

Następna konferencja Javarsovia 2008 już niebawem. Więcej informacji o działalności grupy na jej stronach - Warszawa JUG.

18 listopada 2007

Tworzenie usługi sieciowej z JAX-WS, Apache Geronimo 2 i NetBeans 6

0 komentarzy
Aby otrząsnąć się z wrażeń związanych z minionymi warsztatami javowymi WarsJava, które odbyły się w zeszłą sobotę, 17.11, na Wydziale MIMUW w Warszawie postanowiłem opisać sposób tworzenia usługi sieciowej JAX-WS z wykorzystaniem wersji rozwojowej Apache Geronimo 2.1 oraz NetBeans IDE 6. Tytuł artykułu Tworzenie usługi sieciowej z JAX-WS, Apache Geronimo 2 i NetBeans 6 mówi sam za siebie. Ciekawostką Geronimo jest możliwość uruchomienia usługi w ramach aplikacji internetowej bez deskryptora web.xml. Poza wykorzystaniem adnotacji @WebService oraz @WebMethod użyłem dwóch kolejnych @PostCreate oraz @PreDestroy znanych z EJB3. Na zakończenie prezentuję tworzenie klienta usługi jako samodzielną aplikację.
Artykuł można traktować jako moje rozpoczęcie lektury specyfikacji JAX-WS, do której przymierzałem się od dobrych kilku miesięcy.

16 listopada 2007

JBoss Seam 2.0.0.GA na Geronimo 2.1 - aplikacja booking działa!

7 komentarzy
Niemożliwe stało się możliwe! ;-) Wystarczyło zarwać kilka nocek i mam. Udało mi się w końcu uruchomić przykład booking projektu JBoss Seam 2.0.0.GA na wersji rozwojowej Apache Geronimo 2.1.

Przykład booking traktowany jest przez programistów Seama jako aplikacja referencyjna wykorzystująca wiele z funkcjonalności Seama oraz Korporacyjnej Javy 5, która prezentuje również możliwość uruchomienia Seama na Glassfish czy OC4J. Aplikacja jest de facto gwarantem, że Seam to szkielet programistyczny niezależny od środowiska uruchomieniowego, a co za tym idzie i JBoss AS, byle było to środowisko serwera aplikacji Java EE 5 (i tu też nie do końca, ale to już nie ma większego znaczenia). Brakowało jedynie uruchomić Seama na Geronimo i lista zrobiłaby się całkiem ciekawa. Teraz już taka jest.


Kiedy kilka dni temu jakimś dziwnym trafem zacząłem próbować się z Seamem i Geronimo nie przypuszczałem, że zajmie mi to prawie tydzień. Postanowiłem uruchomić Seama na Geronimo, aby połączyć przyjemne z pożytecznym, tj. podszkolić się z JSF 1.2 (wraz z dodatkowymi projektami jak facelets i RichFaces) oraz kontynuować potyczki z EJB3 i już myślałem, że będzie konieczna niezła modyfikacja trójki Geronimo/OpenEJB/OpenJPA, kiedy okazało się, że wystarczyło jedynie odpowiednie skonfigurowanie aplikacji dla Geronimo i voila - zaczęło działać. Bardzo ważny podkreślenia jest fakt, że nie zmodyfikowałem żadnego elementu przykładu booking, a wszelkie możliwe modyfikacje umieściłem w planie (plik wspomagający rozmieszczenie aplikacji na serwerze Geronimo), co jedynie przesłania domyślną konfigurację aplikacji. Dla zwrócenia uwagi napiszę, że uruchomienie przykładu na Glassfish, czy OC4J wymaga zmiany w persistence.xml i przebudowania aplikacji. Geronimo pozostawia przykład nietknięty.

Dodatkową ciekawostką jest uruchomienie przykładu z domyślnym dostawcą JPA w Geronimo - Apache OpenJPA, ale również z Hibernate JPA. Jak się okazało Hibernate również nie jest konieczny dla Seama, co wskazuje na siłę Seama jako szkieletu programistycznego niezależnego od docelowej platformy uruchomieniowej byle dostarczone były pewne usługi, z których korzysta dostarczane przez EJB3, JPA, JSF, itp.

Aby nie pozostawić tego tematu bez dodatkowego komentarza dopiszę, że aby uruchomić przykład booking z Hibernate JPA musiałem uruchomić go w trybie debugowania (ech, kiedy będzie przyjemniejsze słówko dla tego?!) i "przeskoczyć" jedną linię w org.hibernate.ejb.Ejb3Configuration po pobraniu źródeł Hibernate EntityManagera. Po zamianie wartości wywołania info.getJarFileUrls() na linii 344 na Collections.EMPTY_LIST Hibernate działał dalej bezbłędnie. Ot, takie malutkie usprawnienie. Sprawdziłem dokumentację javadoc dla javax.persistence.spi.PersistenceUnitInfo i trudno zdecydować, czy pusta lista (oczekiwanie Hibernate JPA) jest bardziej poprawna od null (zwracanego prze Geronimo) jako wynik metody getJarFileUrls().

Zamierzam spisać moje doświadczenia w artykule i opublikować na swoim Wiki. Rozejrzę się również za możliwością opublikowania go w Software Developer's Journal (jakby tak otworzyć nowy rok takim artykułem byłoby ciekawie). Teraz można spodziewać się więcej Seama u mnie ;-)

Co ciekawsze wycinki z dziennika (zdarzeń) Geronimo 2.1-SNAPSHOT, po poprawnym rozmieszczeniu aplikacji booking Seama.
02:10:11,812 DEBUG [GBeanSingleReference] Started org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear?
J2EEApplication=org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear,JCAConnectionFactory=jdbc/__default,
JCAResource=seam-jee5-dbpool,ResourceAdapter=seam-jee5-dbpool,ResourceAdapterModule=seam-jee5-dbpool,
j2eeType=JCAManagedConnectionFactory,name=jdbc/__default
02:10:11,828 DEBUG [GBeanInstanceState] GBeanInstanceState for: org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear?
J2EEApplication=org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear,JCAConnectionFactory=jdbc/__default,
JCAResource=seam-jee5-dbpool,ResourceAdapter=seam-jee5-dbpool,ResourceAdapterModule=seam-jee5-dbpool,
j2eeType=JCAManagedConnectionFactory,name=jdbc/__default State changed from starting to running
02:10:11,890 DEBUG [GBeanSingleReference] Started org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear?
EJBModule=jboss-seam-jee5.jar,J2EEApplication=org.jboss.seam.examples.jee5/jboss-seam-jee5/2.0.0.GA/ear,
PersistenceUnitModule=jboss-seam-jee5.jar,j2eeType=PersistenceUnit,name=bookingDatabase
02:10:12,187 INFO [Version] Hibernate Annotations 3.3.0.GA
02:10:12,296 INFO [Environment] Hibernate 3.2.4.sp1
02:10:12,390 INFO [Environment] hibernate.properties not found
02:10:12,406 INFO [Environment] Bytecode provider name : cglib
02:10:12,421 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling
02:10:13,156 INFO [Version] Hibernate EntityManager 3.3.1.GA
02:10:13,546 INFO [Ejb3Configuration] Processing PersistenceUnitInfo [
name: bookingDatabase
...]
02:16:13,328 ERROR [Ejb3Configuration] Container is providing a null PersistenceUnitRootUrl: discovery impossible
02:16:13,468 WARN [Ejb3Configuration] Defining hibernate.transaction.flush_before_completion=true ignored in HEM
....
02:16:18,609 INFO [EntityBinder] Bind entity org.jboss.seam.example.booking.User on table Customer
02:16:19,250 INFO [Version] Hibernate Validator 3.0.0.GA
02:16:19,812 INFO [ConnectionProviderFactory] Initializing connection provider:
org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
02:16:19,828 INFO [InjectedDataSourceConnectionProvider] Using provided datasource
02:16:19,843 INFO [SettingsFactory] RDBMS: Apache Derby, version: 10.3.1.4 - (561794)
02:16:19,843 INFO [SettingsFactory] JDBC driver: Apache Derby Embedded JDBC Driver, version: 10.3.1.4 - (561794)
02:16:20,093 INFO [Dialect] Using dialect: org.hibernate.dialect.DerbyDialect
02:16:20,156 INFO [TransactionFactoryFactory] Transaction strategy: org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
02:16:20,171 INFO [TransactionManagerLookupFactory] instantiating TransactionManagerLookup:
org.apache.geronimo.hibernate.transaction.GeronimoTransactionManagerLookup
02:16:20,187 INFO [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
....
02:16:28,625 INFO [ServletContextListener] Welcome to Seam 2.0.0.GA
...

13 listopada 2007

5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo

8 komentarzy
Temat tworzenia aplikacji korporacyjnych z Korporacyjną Javą 5, Geronimo i Eclipse pojawiał się na grupie użytkowników Geronimo kilkakrotnie. W końcu zebrałem się w sobie i stworzyłem krótki, 5-minutowy artykuł na ten temat, który opublikowałem na stronach dokumentacji Geronimo - 5-minute Tutorial on Enterprise Application Development with Eclipse and Geronimo. Artykuł jest w języku angielskim, więc nie każdemu przypadnie do gustu, ale jest tam wystarczająca ilość wspomagających zrzutów ekranu, ażeby nawet bez znajomości angielskiego można było poradzić sobie z tematyką. Wyprzedzając krytyczne uwagi w stylu: Taki 5-minutowy Hello World to zawsze będzie działał, napiszę, że artykuł miał zająć wyłącznie 5 minut i miał zaprezentować, że się da, a nie, że da się wszystko. Zachęcam wszystkich do popróbowania się z tematem i nadsyłanie komentarzy (szczególnie tych krytycznych, bo co dzisiaj jest czyimś problemem, jutro może być Twoim ;-)).

12 listopada 2007

Warsjava - I Warszawskie Warsztaty Javowe organizowane przez Warszawa JUG

5 komentarzy
Już w tę sobotę, 17 listopada od godziny 9:00 do 17:00 w Warszawie, w budynku Wydziału MIM UW przy ul. Banacha 2, w salach 3180, 4420 i 5440 odbędzie się Warsjava - I Warsztaty Javowe organizowane przez Warszawa JUG.

Pomysł zorganizowania Warsjava polega na przeprowadzeniu prezentacji wyłącznie w formie warsztatów, podczas których tworzona będzie aplikacja z wybranym oprogramowaniem czy technologią, z aktywnym udziałem publiczności, która "kieruje" rozwojem aplikacji. Jest to tworzenie aplikacji "na żywo".
Jeśli masz pytania odnośnie prezentowanej technologii, czy rozwiązania jest to idealny moment, aby skorzystać z okazji i odpytać prezentującego o szczegóły, a może i o kompletne rozwiązanie. Proponujemy doładować baterie w laptopach i spróbować się zmierzyć z tematyką warsztatów samodzielnie. Dobra zabawa gwarantowana!

Patronem imprezy są władze Wydziału MIM UW, podczas gdy pałeczkę głównego sponsora dzierży firma BLStream.

Koszty wstępu na warsztaty pokrywają organizatorzy!

Więcej na stronie warsztatów Warsjava. Serdecznie zapraszam w imieniu organizatorów.

07 listopada 2007

JavaServer Faces i Spring Framework w parze z Apache Maven i Apache Geronimo

6 komentarzy
Do tej pory dużo rozpisywałem się o Korporacyjnej Javie 5 (Java EE 5) i tym razem...nie będzie inaczej (bo jak nie skorzystać z czegoś, co jest do wzięcia na wyciągnięcie ręki?!). Różnicą będzie wykorzystanie możliwości usług serwera aplikacji i rozszerzenie ich o możliwości Spring Framework. A skąd pomysł na skorzystanie ze Springa? Tym, co skłania do użycia Spring Framework jest jego zaawansowany mechanizm wstrzeliwania zależności (ang. DI - dependency injection), który w korporacyjnej javie jest stosunkowo mocno okrojony, powiedziałbym zawężony do niezbędnego minimum. Skoro siłą Springa jest mechanizm wstrzeliwania zależności, a serwera aplikacji Java EE 5 usługi, jak transakcyjność, utrwalanie danych, bezpieczeństwo, współbieżność, czy możliwość ich rozproszenia, to dlaczegóżby nie połączyć obu, aby mieć doskonalsze środowisko do tworzenia aplikacji korporacyjnych? Zawsze mnie korciło, aby bliżej przyjrzeć się Springowi, więc nadeszła pora upiec dwie pieczenie na jednym ogniu - rozpoznawać Springa w kontekście rozpoznawania kolejnej technologii Java EE 5 - JavaServer Faces (JSF) 1.2. W JSF istnieje pewien wycinek wsparcia dla DI, który oferuje Spring, więc mając zintegrowane oba rozwiązania spodziewam się, że wszelkie braki w JSF zostaną uzupełnione. Pozostaje pytanie o dalsze elementy środowiska, które pomogą w realizacji celu. Do programowania w Javie wykorzystam Eclipse IDE 3.3.1.1 z wtyczką Geronimo Eclipse Plugin, podczas gdy zarządzanie zależnościami aplikacyjnymi pozostawię projektowi, który spisuje się w tej roli bezsprzecznie najlepiej Apache Maven 2. Nie, nie chciałbym tym razem uskuteczniać akrobacji z linii poleceń, więc integrację między Eclipse IDE i Maven oprę na wtyczce M2Eclipse (Tycho). Środowiskiem uruchomieniowym tworzonej aplikacji internetowej będzie Apache Geronimo 2.0.2.

Całe środowisko będzie przyczółkiem do dalszych integracji w celu wykorzystania najlepszych cech poszczególnych projektów i technologii upraszczając proces tworzenia aplikacji korporacyjnych Java EE 5, gdzie głównym rozgrywającym będzie JSF 1.2.

Zapraszam do lektury artykułu JavaServer Faces i Spring Framework w parze z Apache Maven i Apache Geronimo. Co mnie bardziej interesuje to komentarze dotyczące sposobu przedstawienia tematu i dalsze ścieżki jego rozwoju. Generalnie doskwiera mi brak krytycznych komentarzy ;-)