Strona JSP z wykorzyst. EJB 3.0 w Eclipsie

0

Witam, robie stronke internetowa z wykorzystaniem JSP i EJB 3.0 w Eclipsie. Mam jeden projekt w Eclipsie - "AAA", w którym są Entity oraz implementacja metod w ziarnie (Session Bean). Mam też drugi projekt utworzony przez Eclipse automatycznie (New >>> EJB Project) - "BBB" - jest to część klienta - czyli interfejs i klient javovy uruchamiajacy pewne metody. Dodatkowo mam trzeci projekt w Eclipse z grupy EAR. W celu zamiany klienta javovego na webowego, utworzyłem w Eclipsie czwarty projekt Dynamic Web Project. Pytanie jak zrobić by klient webowy (w jsp) komunikował się z serwerem? Wystarczy w projekcie webowym w znacznikach jsp dać importy takie jak w kliencie javovym? A może skopiować interfejs i klasy Entity (odwzorowujace tabele w bazie) i wrzucic do projektu webowego? Jakie rozwiązanie zastosować, żeby wszystko należycie działało? Pozdrawiam

0

Jar z ejb oraz war (projekt webowy) wrzucasz do katalogu glownego eara, jako moduly. Jar z interfejsami mozesz rowniez tam wrzucic, lub do katalogu lib w earze. To zagwarantuje ze classloader bedzie widzial wszystkie te klasy.
Aby w warze widziesz ejb, musisz (aby bylo przenosne) zmapowac beany w web.xml za pomoca ejb-ref lub ejb-local-ref (w zaleznosci jakie masz te 'ziarna' - remote czy local). Google wie dobrze jak to zrobic.
Korzystanie z ejb w stronce jsp odradzam, nie powinno sie w nich pisac kodu javy (a wnioskuje ze tak chcesz ztobic skoro pytasz o importy). Powinienes zrobic servlet ktory ma wstrzykiwanego / robi lookup jndi beana, robi co do niego nalezy i robi forward do jsp wrzucajac wczesniej pewne dane do np sesji czy requesta (albo responsa, nigdy nie pamietam ;d).
No i to tyle, to jest standardoe pakowanie java ee.
Pytanie - mowisz ze masz entity - chodzi o stare entity beany z EJB < 2.1? Bo pytasz w innym watku o zapisywanie, usuwanie i updaty z bazy, i chyba nie znasz JPA, czyli wnioskowalbym ze uzywasz ejb 2.1?

0

O w morde! Widzę, że trafiłem na BARDZO ELOKWENTNĄ OSOBĘ...Już mi rozjaśniłeś bardziej niż Słońce w najbardziej sloneczny dzien - dzięki! A używam EJB 3.0 - po prostu zastanawiam sie jak klient korzystajac ze strony jsp moze ingerowac w baze danych za pomoca EJB 3.0 (dodawanie, usuwanie itp)...Nigdy tego nie robilem - czas to zmienic wlasnie...I szukam kogos, kto mnie nakieruje choc troche...Tobie juz dziekuje i proszę o wiecej wskazowek/porad

0

No okej, wrzucam all do EARA głównego projektu i co pozniej odpalam? Tego EARA? Jak?

0

Jesli mowisz o projekcie ear w eclipse, to nie musisz nic wrzucac. Wystarczy we wlasciwosciach projektow ustawic ze naleza one do tego i tego projekty ear - da sie to zrobic w eclipse. Pozniej mozesz uruchomic eara albo weba - dla mnie web dziala i jakos tak czesciej tego uzywam. O pakowaniu w ear, to co pisalem wczesniej, to juz mialem na mysli tworzenie archiwum ear do deploymentu u klienta czy cos.

0
:: napisał(a)

Powinienes zrobic servlet ktory ma wstrzykiwanego / robi lookup jndi beana, robi co do niego nalezy i robi forward do jsp wrzucajac wczesniej pewne dane do np sesji czy requesta (albo responsa, nigdy nie pamietam ;d).

czyli np. Struts

0

Mógłby mi ktoś dokładnie napisać jak mam zmapować beany w projekcie webowym w Eclipse w pliku web.xml? W tej chwili moj plik web.xml wyglada tak:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>AnkietaWEB</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Moje "drzewo" projektów wygląda tak:
PROJEKT ANKIETA
package DOMAIN - tu sa entity (majace nazwy tabel w bazie)
package SESSION - tu jest ziarno o nazwie ZIARNO

PROJEKT ANKIETACLIENT
package CLIENT - tu jest klasa o nazwie KLIENT - kod klienta javovego (docelowo klient ma byc webowy)
package SESSION - tu jest interfejs o nazwie ZIARNOREMOTE

Poza tym jerst projekt ANKIETAEAR oraz oczywicie projekt webowy ANKIETAWEB...
Wara z projektu webowego oraz jara z projektu głównego wrzucilem do projektu ANKIETAEAR jako moduły. Jak zrobić by w projekcie webowym wszystkie klasy z projektu glownego byly widoczne? Zmapowac beana - ale jak? Moze ktos napisac co mam wkleic do web.xml? Jakich nazw użyc?

0

A mam jeszcze jedno pytanie: czy wystarczy zadeklarować jedna zmienna EntityManager jak u UserTransaction, np. na stronie index.jsp albo w jakims jednym serwlecie?

0
Mateluta napisał(a)

A mam jeszcze jedno pytanie: czy wystarczy zadeklarować jedna zmienna EntityManager jak u UserTransaction, np. na stronie index.jsp albo w jakims jednym serwlecie?

Nie. Serwlety/JSP są wielowątkowe, a EntityManager nie może być bezpiecznie używany przez wiele wątków.
Jeżeli chciałbyś użyć EntityManager'a w serwlecie/jsp, to pobieraj za każdym razem nową instancję z EntityManagerFactory (na końcu metody musisz ją zamknąć).

Tylko pytanie dlaczego chcesz mieć EntityManager'a w serwlecie/jsp?
Serwlet / jsp powinien mieć EJB, który z kolei powinien używać EntityManager'a.

Zdecydowanie odradzam pisanie wszystkiego samemu w jsp i serwletach.
Wypróbuj JSF, JBoss Seam (polecam) lub Struts 2.

0
__krzysiek85 napisał(a)
Mateluta napisał(a)

A mam jeszcze jedno pytanie: czy wystarczy zadeklarować jedna zmienna EntityManager jak u UserTransaction, np. na stronie index.jsp albo w jakims jednym serwlecie?

Nie. Serwlety/JSP są wielowątkowe, a EntityManager nie może być bezpiecznie używany przez wiele wątków.
Jeżeli chciałbyś użyć EntityManager'a w serwlecie/jsp, to pobieraj za każdym razem nową instancję z EntityManagerFactory (na końcu metody musisz ją zamknąć).

Tylko pytanie dlaczego chcesz mieć EntityManager'a w serwlecie/jsp?
Serwlet / jsp powinien mieć EJB, który z kolei powinien używać EntityManager'a.

Zdecydowanie odradzam pisanie wszystkiego samemu w jsp i serwletach.
Wypróbuj JSF, JBoss Seam (polecam) lub Struts 2.

Witam! A więc jeszcze raz, podsumujmy - mam 3 projekty: Ankieta (serwerowa czesc- tu jest m.in. ziarno), AnkietaClient oraz Ankieta EAR. Potem stworzylem projekt AnkietaWEB. Pytanie - jak to wszystko zrobic w Eclipse, aby strony JSP w projekcie AnkietaWEB widziały wszystkie klasy i pakiety z projektu głóenego - Ankieta? Czy trzeba cos kombinowac z projektami typu EAR? bardzo bym prosił co zrobić po kolei...

1 użytkowników online, w tym zalogowanych: 0, gości: 1