Dominik Cebula

Dominik Cebula Programista Java,
JavaEE

Temat: EJB Development Cycle on JBoss - Best practice?

witam,

Mam pytanie do osób, które mają pewne doświadczenie w tworzeniu EJB 2.1/3.

Aktualnie moje podejście do tworzenia EJB 2.1/3 wygląda następująco:
1) Wykorzystuję IDE Eclipse 3.7
2) Piszę pod JBoss
3) Pierwszym krokiem jest stworzenie pliku ear oraz jar, który trzyma bean-y oraz pliku klienckiego jar, który trzyma interfejsy dla "grubego klienta"
4) Po stworzeniu bean-a opisuję je w pliku ejb-jar.xml w przypadku EJB 2.1 lub adnotacjami w przypadku EJB 3
5) Po stworzeniu bean-a robię testy jednostkowe na poziomie klienta (bean-y są typu Remote)
6) Robię deployment i odpalam testy czy wszystko działa poprawnie

Problem takiego podejścia jest następujący: tworzenie bean-ów się wydłuża z tego względu, że każdego odpalenie testów jednostkowych wiąże się ze spakowaniem wszystkie przez Eclipse, przesunięciem do JBoss, który po paru sekundach robi deployment paczki. Więc robiąc małe poprawki w bean-ach tracę sumarycznie dużo czasu na kompilację, pakowanie, deployment przez jboss.

Moje pytanie brzmi: czy można skrócić czas tworzenia bean-ów?

Próbowałem z OpenEJB Embedded, sprawdza się dość dobrze, jednak nie jest to JBoss i obawiam się, że potem przy większym projekcie przesunięcie bean-ów z developerskiego OpenEJB Embedded do JBoss może się wiązać z pewnymi problemami.

Pozdrawiam,
Dominik Cebula
http://dominikcebula.pl/Dominik Cebula edytował(a) ten post dnia 22.08.12 o godzinie 19:19
Piotr Wierzbowski

Piotr Wierzbowski IT Architect, Asseco
Poland S.A.

Temat: EJB Development Cycle on JBoss - Best practice?

Ja robię tak:
1. Tworzę najpierw projekt techniczny w którym pojawiają się wszystkie interfejsy usługowe.
2. Interfejsy z projektu mapuję 1 w 1 na interfejsy javowe EJB
3. Generuję klasę EJB o nazwie <Interface>Bean i dodaje odpowiednie adnotacje
4. Generuje testy jednostkowe dla zrobionych EJB, testy będą uruchamiane z użyciem Arquilliana normalnie na serwerze jako beany lokalne
5. Piszę testy walidujące zakładane działanie kontraktów interfejsów
6. Piszę implementacje EJB
7. Odpalam testy JUnit
8. Powtarzam kroki 5-8 do uzyskania odpowiedniego efektu

Działa szybko tylko dla EJB3+ i JBoss 7+
Kluczowe jest generowanie klasek z interfejsów (które to z kolei mogą być generowane ze środowiska do profesjonalnego projektowania aplikacji, niestety nie zawsze się da - w sumie to nawet przeważnie - a i adnotacje przeważnie trzeba napisać ręcznie) i testów jednostkowych do tych klas, Arquillian umożliwia odpalenie testów jednostkowych dla EJB w ramach serwera aplikacyjnego bez żadnych protez.

Próbowałem Arquilliana na GlassFishu, ale nie dało rady, sparowanie testowania springa z Arquillianem tez było problematyczne.
Beany typu remote to raczej archaizm, czy to jest w ogóle docelowy interfejs dla twojej aplikacji? Może testy za pomocą tego 'klienta' należy sobie odpuścić interfejs remote sam w sobie narzuca pewne ograniczenia i nieco zmienia obsługe interfejsów.
Dominik Cebula

Dominik Cebula Programista Java,
JavaEE

Temat: EJB Development Cycle on JBoss - Best practice?

Dziękuję za odpowiedź, sprawdziłem Arquillian z JBoss 7.x, działa zadowalająco :)

Następna dyskusja:

Dziedziczenie w Hibernate -...




Wyślij zaproszenie do