29 listopada 2006

Tworzenie aplikacji Java EE 5 z Apache Maven 2 i Glassfish

Nie było lekko, ale się udało! Skończyłem artykuł, o który zostałem poproszony jakiś czas temu, a którego tematyka była mi dosyć bliska - skorzystanie z możliwości Apache Maven 2 przy tworzeniu aplikacji Java EE 5. Aplikacja należy do niezwykle nieskomplikowanych, ale sądzę, że tym samym cel został osiągnięty. Demonstracja M2 w roli narzędzia wspomagającego tworzenie aplikacji z JSF 1.2 i EJB 3.0 z uruchomieniem jej na serwerze Glassfish jest do przeczytania w kolejnym artykule na moim Wiki - Tworzenie aplikacji Java EE 5 z Apache Maven 2 i Glassfish.

W nadchodzący wtorek - 5.12 o 18:00 - jest planowane spotkanie grupy Warszawskiej Grupy Użytkowników Java (Warszawa JUG), więc będzie okazja przedyskutować szczegóły. Może nawet uda mi się dokończyć artykuł o facelets. Z pewnością będzie ciekawie móc zaprezentować temat na żywo. Miłej lektury i do zobaczenia!

13 komentarzy:

  1. Cześć Jacek.

    Próbuje przejść Twój tutorial. Zgłaszam problem z sekcją "modules"

    Ta sekcja u mnie nie działa. Natomiast, sekcja ta stworzy się automatycznie, wykonując kroki opisane w dalszej części Twojego tutotiala.

    OdpowiedzUsuń
  2. Dziękuję za uwagę. Rzeczywiście dodałem kompletny plik projektu pom.xml po tym jak moduły zostały dodane w późniejszych krokach. Usunąłem znacznik modules z pom.xml.

    Jeszcze raz dziękuję za komentarz. Czym więcej ich tym lepszy materiał końcowy.

    Miłej zabawy!

    p.s. Na koniec lektury artykułu zobowiązuję Ci do napisania wrażeń (wady i zalety materiału) ;-)

    Jacek

    OdpowiedzUsuń
  3. Mam problem na kroku mvn package dla modułu ejb3.

    <<<
    Missing:
    ----------
    1) org.apache.geronimo.specs:geronimo-ejb_3.0_spec:jar:1.0-SNAPSHOT

    Try downloading the file manually from the project website.

    Then, install it using the command:
    mvn install:install-file -DgroupId=org.apache.geronimo.specs -DartifactId=geronimo-ejb_3.0_spec \
    -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

    Path to dependency:
    1) pl.jaceklaskowski.javaee5:ejb3:ejb:1.0-SNAPSHOT
    2) org.apache.geronimo.specs:geronimo-ejb_3.0_spec:jar:1.0-SNAPSHOT

    ----------
    1 required artifact is missing.

    for artifact:
    pl.jaceklaskowski.javaee5:ejb3:ejb:1.0-SNAPSHOT

    from the specified remote repositories:
    central (http://repo1.maven.org/maven2)
    <<<

    Proszę o radę.

    OdpowiedzUsuń
  4. Dałem sobie z tym problemem już radę. Domyślna konfiguracja maven2 nie korzysta z repozytori snapshot. Jato to zmienić opisano na stronie:
    http://maven.apache.org/guides/development/guide-plugin-snapshot-repositories.html
    Poszło: mvn -Papache

    OdpowiedzUsuń
  5. Jestem na kroku budowanie modułu webapp.
    cd webapp
    mvn install:install-file -DgroupId=pl.jaceklaskowski.javaee5 -DartifactId=ejb3 -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=../ejb3/target/ejb3-1.0-SNAPSHOT.jar
    mvn package

    Nie wiem, czemu tak, ale pomogło.

    OdpowiedzUsuń
  6. Dziękuję za cierpliwość! Artykuł został poprawiony (m.in. o dodanie repozytorium zdalnego w pliku pom.xml w projekcie głównym).

    U mnie działało, ponieważ ta zależność była u mnie lokalnie, więc M2 nie potrzebował odpytywać żadnego innego repozytorium niż lokalne.

    Jacek

    OdpowiedzUsuń
  7. Wyłapałem jeszcze literówkę:
    jest: index.jsp, powinno być index.jsf w "Utworzenie aplikacji internetowej"

    OdpowiedzUsuń
  8. Poprawione. Dzięki!

    Jakieś wrażenia? Uwagi? Propozycje następnych artykułów? Może być na priv.

    Jacek

    OdpowiedzUsuń
  9. Sorki, wczesniej było dobrze - "index.jsp". Dla programisty PHP (czyli mnie) dość magiczne jest to przekierowanie. W web.xml mapujemy *.jsf na Facas a faces i tak czyta nam pliki jsp. Przepraszam za zamieszanie.

    Wrażenie świete. Tutorial bardzo przydatny. Ucząc się Javy zdecydowanie wole korzystać z vim'a. Dopiero jak będę miał do napisania coś poważnego to wybiorę jakieś IDE. Patrząc na swoją przyszłość na najbliższe 10, 15 lat Maven2 na pewno będzie w niej obecny.

    Tak więc jeszcze raz dziękuje za tutorial. (uruchom donate w wiki).

    Następne artykuły: jestem przekonany, że warto by było rozszerzyć ten artykuł o:
    - encje
    - uruchamianie na JBoss

    OdpowiedzUsuń
  10. Nawet nie wiesz jaki jesteś przekonujący. Kiedy teraz myślę o zmianie index.jsp na index.jsf to zastanawiam się dlaczego to zmieniłem i wydawało mi się nawet, że robię poprawnie ;-) Wczoraj kończyłem artykuł wieczorem i musiałem się przegrzać. Już poprawiam.

    Oczywiście zgadzam się z propozycją dodania do tego projektu komponentów encyjnych i uruchomić to na JBoss AS. Zrobię to nawet w jednym podejściu. Stay tuned!

    Jacek

    OdpowiedzUsuń
  11. JBoss

    Na chwilę obecną nie można uruchomić Twojej aplikacji w serwerze JBoss bez zmiany kodu w niej samej.
    Przyczyną jest:

    The @EJB annotation is similated. Tomcat does not yet understand injection annotations.
    http://docs.jboss.org/ejb3/app-server/tutorial/ear/ear.html

    Próbując uruchomić Twoją aplikację na JBoss wykonałem następujące czynności.:

    1. pobrałem Jboss 4.0.5
    2. pobrałem i zainstalowałem EJB3
    3. w module webapp jawnie zadeklarowałem zależność od myfaces.
    4. w module ejb3 użyłem pluginu maven-ejb z snapshot - nowsza wersja. Usunałem plik ejb-jar.xml. ustawiłem parametr modułu ejbVersion na 3.0
    5. w module ear dodałem plugin mavena odpowiedzialny za deployment do Jboss'a.

    OdpowiedzUsuń
  12. Czy mógłbyś podesłać mi pom'y i web.xml?

    Z chęcią spiszę to i opublikuję z odpowiedią adnotacją o Twoim wkładzie.

    Jacek

    OdpowiedzUsuń
  13. Przesłałem Ci źródła na e-mail.

    Na razie próbuje uruchomić część webową twojej aplikacji na Tomcata 6. Jak na razie bez powodzenia a problemy zaczynają się już na etapie JSF.

    OdpowiedzUsuń