16 stycznia 2007

JBoss AS 4.0.5 z EJB 3.0 RC9 Patch 1 i NetBeans IDE 5.5.1

Po uaktualnieniu NetBeans IDE do wersji 5.5.1 Daily Build (ze względu na błędne działanie wersji 5.5 z GlassFish v2 b31) postanowiłem sprawdzić jak wygląda współpraca z JBoss AS 4.0.5, szczególnie, że i współpraca z JBoss AS się zepsuła po zmianach w konfiguracji serwera w 4.0.5. Dodatkowo, ostatnia próba zaprezentowania JBoss AS z NetBeans, podczas III spotkania Warszawa JUG, zakończyła się totalną klapą, więc tym bardziej interesowały mnie poprawki w nowszej wersji NetBeans IDE dotyczące JBoss AS (tak przy okazji, właśnie pojawiła się nowa wersja NetBeans IDE 6.0 M6, w której włączono większość z funkcjonalności Java EE). Samo uruchomienie JBoss AS nie stanowiło dla mnie czegoś interesującego, ale możliwość uruchamiania projektów Java EE 5 na JBoss AS z rozszerzeniem EJB 3.0 RC9 Patch 1 było niezwykle kuszące (w końcu to i załoga JBoss AS uczestniczyła w pracach grupy standaryzującej EJB3).

Na moją decyzję o instalacji JBoss AS 4.0.5 wpłynęła również notka o JBoss Seam - A Conversation with Seam, którego powoli rozpoznaję na kolejne IV spotkanie Warszawa JUG. Jak się okazało instalacja całego środowiska i aplikacji opisanej w notce poszła nadzwyczaj zgrabnie ( chociaż początkowo miałem problemy z uruchamianiem JBoss AS w NetBeans IDE, aż zauważyłem, że korzystam z profilu all zamiast default, gdzie zainstalowałem łatę EJB3. Straciłem ponad 2 godziny próbując poukładać informacje jakie miałem nt. integracji NB i JBS. Kolejny raz sen przyniósł rozwiązanie!)

Instalacja JBoss AS 4.0.5 z EJB 3.0 RC9 Patch 1 i uruchomienie w NetBeans 5.5.1 Daily Build jest wystarczająco nieskomplikowana, aby spróbować jej bez pomocy JEMS Installer (nie potrafię tego wytłumaczyć, ale nie specjalnie podoba mi się instalacja oprogramowania w ten sposób - przyzwyczaiłem się, że wystarczy rozpakować paczkę dystrybucyjną do wybranego katalogu i można pracować, a próba ukrycia przede mną poszczególnych kroków instalacyjnych zazwyczaj mnie zniechęca). Po kilku minutach można uruchamiać projekty Java EE 5 na JBoss AS.
  1. Rozpocząłem od rozpakowania wersji JBoss AS 4.0.5.GA do wybranego przeze mnie katalogu, np. c:/apps/jboss
  2. Pobrałem i rozpakowałem łatę EJB 3.0 Preview RC9 Patch 1 do tymczasowego katalogu, z którego rozpocznie się jej właściwa instalacja - uaktualnienie JBoss AS, np. c:/temp/jboss-EJB-3.0_RC9_Patch_1
  3. Ustawiłem zmienną JBOSS_HOME, tj. set JBOSS_HOME=c:\apps\jboss
  4. I w katalogu, gdzie rozpakowałem łatę EJB 3.0 dla JBoss AS (u mnie c:/temp/jboss-EJB-3.0_RC9_Patch_1), wykonałem polecenie
    ant -f install.xml -Djboss.server.config=default
    Należy pamiętać o zmiennej jboss.server.config ponieważ domyślnie wskazuje na profile all (dlaczego wybrałem default nie mam pojęcia - chyba znalazłem zalecenie o korzystaniu profilu default, ale nie mogę sobie teraz tego przypomnieć).
    Polecenie kończy się po około 10 sekundach.
  5. Na stronie Migrating From EJB 3.0 RC8 -> RC9 znajdują się dodatkowe wskazania odnośnie instalacji EJB 3.0 RC9 chyba, że łatano profil all (patrz punkt 4). Ja łatałem profil default, więc musiałem pozbyć się dwóch plików z katalogu %JBOSS_HOME%\server\default\deploy:
    1. ejb3-clustered-sfsbcache-service.xml
    2. ejb3-entity-cache-service.xml
    W przeciwnym przypadku pojawią się błędy w stylu:
    12:53:42,187 ERROR [MainDeployer] Could not create deployment: file:/C:/apps/jboss/server/default/deploy/ejb3-clustered-sfsbcache-service.xml
    org.jboss.deployment.DeploymentException: - nested throwable: (java.lang.reflect.UndeclaredThrowableException)
    at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
    at org.jboss.system.ServiceController.install(ServiceController.java:226)
    ...
    Caused by: java.lang.NoClassDefFoundError: org/jboss/cache/TreeCache
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    ...
    12:53:42,578 ERROR [MainDeployer] Could not create deployment: file:/C:/apps/jboss/server/default/deploy/ejb3-entity-cache-service.xml
    org.jboss.deployment.DeploymentException: No ClassLoaders found for: org.jboss.cache.TreeCache; - nested throwable: (java.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.cache.TreeCache)
    at org.jboss.system.ServiceConfigurator.install(ServiceConfigurator.java:196)
    at org.jboss.system.ServiceController.install(ServiceController.java:226)
    ...
    Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for: org.jboss.cache.TreeCache
    at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:212)
    at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:511)
    at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:405)
    ...
  6. Testowe uruchomienie JBoss AS po instalacji łaty EJB 3.0 nie zaszkodzi.
    %JBOSS_HOME%/bin/run -config=<konfiguracja JBoss z łatą EJB3>
    U mnie config nie był potrzebny, bo domyślnie skrypt startujący zakłada, że będzie uruchomiony profil default (inaczej niż domyślna wartość podczas uruchomienia łaty EJB 3.0 - dziwne, nieprawdaż?).
    12:58:05,234 INFO  [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 20s:234ms
  7. Na koniec definicja JBoss AS w NetBeans IDE, co szczęśliwie jest najmniej zajmującą czynnością.
Po tych krokach można rozpocząć edukację Java EE 5 z JBoss AS 4.0.5 w tle. Powodzenia!

6 komentarzy:

  1. Nie do konca. JBOSS 4 ma jako kontener servletow ma Tomcata 5, a ten z kolei nie radzi sobie ze skladnia @EJB. Wiec nawet po instalacji EJB3 nie mozesz mowic o JEE.

    OdpowiedzUsuń
  2. A racja! Powinienem pamiętać to, kiedy próbowałem zaprezentować aplikację internetową z elementami Java EE na spotkaniu Warszawa JUG i NetBeans IDE zgłosił mi JBossa jako nie-Java EE. Pamiętam teraz, że nie mogłem się otrząsnąć przez moment. No cóż wydaje się, że zwolennicy Java EE muszą prototypować na GlassFish.

    A może nie? Czy to oznacza, że jeśli JBoss AS i Java EE 5 to tylko 5.0.0.Beta1?

    Dzięki za uwagę, Antoni!

    Jacek

    OdpowiedzUsuń
  3. prostszy sposób na instalację (bez okienek) jbossa 4.0.5 z EJB3:

    java -jar jems-installer-1.2.0.GA.jar -installGroup ejb3 installpath=c:/jboss-4.0.5.GA

    OdpowiedzUsuń
  4. Wielkie dzięki! Kiedy opisywałem moje doświadczenia w Notatniku byłem sceptyczny do korzystania z JEMS Installera (czym więcej jest przede mną ukrywane tym mniej jestem zainteresowany korzystaniem z narzędzia). Przekonałeś mnie, abym spróbował i jestem mile zaskoczony! W ciągu 10-15 minut zainstalowałem JBoss AS 4.0.5 GA z EJB 3.0 i mogłem bezbłędnie go uruchomić!

    C:\apps>java -jar jems-installer-1.2.0.GA.jar -installGroup ejb3 installpath=c:/apps/jboss-4.0.5.GA_ejb3
    Looking for auto install resource...
    /res/jbossauto-install.xml URL: jar:file:/C:/apps/jems-installer-1.2.0.GA.jar!/res/jbossauto-install.xml
    PackageListener, install.log=C:\DOCUME~1\JLASKO~1\LOCALS~1\Temp\jems-install.log
    [ Starting automated installation ]
    creating Logfile: 'IzPack_Logfile_at_1171016018453.txt' in: 'C:\DOCUME~1\JLASKO~1\LOCALS~1\Temp\'
    [ Starting to unpack ]
    [ Processing package: ejb3-deployer (1/58) ]
    [ Processing package: invokers-service (2/58) ]
    [ Processing package: jta-service (3/58) ]
    [ Processing package: mail-service (4/58) ]
    [ Processing package: jboss-cache (5/58) ]
    [ Processing package: jbossws5 (6/58) ]
    [ Processing package: snmp-adaptor.sar (7/58) ]
    [ Processing package: properties-service (8/58) ]
    [ Processing package: javamail (9/58) ]
    [ Processing package: jmx-console (10/58) ]
    [ Processing package: jms-http-invoker (11/58) ]
    [ Processing package: usertx-service (12/58) ]
    [ Processing package: jboss-local-jdbc.rar (13/58) ]
    [ Processing package: ear-deployer (14/58) ]
    [ Processing package: security (15/58) ]
    [ Processing package: naming (16/58) ]
    [ Processing package: hibernate (17/58) ]
    [ Processing package: jca-service (18/58) ]
    [ Processing package: jboss-aop-jdk50-deployer (19/58) ]
    [ Processing package: ejb-timer-service (20/58) ]
    [ Processing package: iiop-service.xml (21/58) ]
    [ Processing package: jms-socket-invoker (22/58) ]
    [ Processing package: scheduler-service (23/58) ]
    [ Processing package: web-console-jdk50 (24/58) ]
    [ Processing package: jsr77-service (25/58) ]
    [ Processing package: jgroups (26/58) ]
    [ Processing package: quartz-rar (27/58) ]
    [ Processing package: cache-invalidation-service.xml (28/58) ]
    [ Processing package: jmx-core (29/58) ]
    [ Processing package: bsh-deployer (30/58) ]
    [ Processing package: jboss-ha-local-jdbc (31/58) ]
    [ Processing package: mail-inflow-adaptor (32/58) ]
    [ Processing package: jboss-ds (33/58) ]
    [ Processing package: xmlresolver (34/58) ]
    [ Processing package: jms-injvm-invoker (35/58) ]
    [ Processing package: jsr88-service (36/58) ]
    [ Processing package: jboss-xa-jdbc (37/58) ]
    [ Processing package: jboss-ha-xa-jdbc (38/58) ]
    [ Processing package: docs (39/58) ]
    [ Processing package: binding-service (40/58) ]
    [ Processing package: minimal (41/58) ]
    [ Processing package: dynclassloader-service (42/58) ]
    [ Processing package: ejb-deployer (43/58) ]
    [ Processing package: uuid-key-generator (44/58) ]
    [ Processing package: war-deployer (45/58) ]
    [ Processing package: client-deployer-service (46/58) ]
    [ Processing package: attribute-persistence-service (47/58) ]
    [ Processing package: xmlservice (48/58) ]
    [ Processing package: jmx-invoker-service (49/58) ]
    [ Processing package: jboss-bean-deployer (50/58) ]
    [ Processing package: client (51/58) ]
    [ Processing package: jbossretro (52/58) ]
    [ Processing package: rmi-http-invoker (53/58) ]
    [ Processing package: jms-asf-rar (54/58) ]
    [ Processing package: jbossmq-service (55/58) ]
    [ Processing package: jdbc-metadata-service (56/58) ]
    [ Processing package: default-jms-destintations (57/58) ]
    [ Processing package: jboss-remoting (58/58) ]

    calltarget:

    jbossws-post-install:
    [echo] Unpacking wstools to bin...
    [unzip] Expanding: C:\apps\jboss-4.0.5.GA_ejb3\client\jbossws-client.jar into C:\apps\jboss-4.0.5.GA_ejb3\bin
    [echo] Removing jbossws14 client jars...
    [delete] Deleting 4 files from C:\apps\jboss-4.0.5.GA_ejb3\client
    [delete] Deleting C:\apps\jboss-4.0.5.GA_ejb3\client\jboss-backport-concurrent.jar
    [delete] Deleting C:\apps\jboss-4.0.5.GA_ejb3\client\jbossretro-rt.jar
    [delete] Deleting C:\apps\jboss-4.0.5.GA_ejb3\client\jbossws14-client.jar
    [delete] Deleting C:\apps\jboss-4.0.5.GA_ejb3\client\namespace.jar
    [echo] jbossws done

    calltarget:

    chmod-bin:
    [echo] Updating script executable modes
    [echo] bin dir is c:/apps/jboss-4.0.5.GA_ejb3/bin
    [ Unpacking finished. ]
    creating Logfile: 'IzPack_Logfile_at_1171016018453.txt' in: 'C:\DOCUME~1\JLASKO~1\LOCALS~1\Temp\'
    [ Writing the uninstaller data ... ]
    [ Automated installation done ]

    Zastanawiam się jednak, gdzie mógłbym doczytać o możliwych wartościach parametru installGroup?

    Jacek

    OdpowiedzUsuń
  5. Właśnie tego potrzebowałem! Krótko i na temat ;-)

    Jacek

    OdpowiedzUsuń