Sziasztok!
kérlek segítsetek, számtalan leírást követve próbáltam a beanemet elérni jsp oldaról, eddig sikertelenül.
package test;
import javax.ejb.PostActivate;
import javax.ejb.Stateful;
@Stateful(name="TestB")
public class TestBean implements TestLocal {
private int szam;
@PostActivate
void init() {
this.szam = 0;
}
public void setSzam(int szam) {
this.szam = szam;
}
public int getSzam() {
return this.szam;
}
}
-------
<%@ page import="test.TestLocal, javax.naming.*, java.text.*"%>
<%!
private TestLocal tb = null;
public void jspInit () {
try {
InitialContext ctx = new InitialContext();
tb = (TestLocal) ctx.lookup("TestB"); //"test/TestLocal/local" ezzel is próbálkoztam, az ear file neve test
} catch (Exception e) {
e.printStackTrace ();
}
}
%>
Kérlek benneteket segítsetek megoldani ezt a problémát. Előre is köszönöm.
- 2026 megtekintés
Hozzászólások
jajjjjajjjajj! :)
a JSP a prezentacios reteg eszkoze, ugyebar (MVCben gondolkodva). miert akarsz oda ilyet? :)
servletbe pedig injektalhatod @EJB -vel is, nem kell ez a context lookup marhasag.
- A hozzászóláshoz be kell jelentkezni
Tehát a jsp oldalt minden esetben ahol szeretnék beant használni előzzön meg egy servlet és ott adjam át paraméterként? Amúgy azért gondoltam, hogy az account kezelő bean-t stateful-ra teszem, és van neki egy isLoggedIn függvénye, és akkor akár servletből akár jsp-ből le tudom kérdezni, hogy be van-e jelentkezve, és annak megfelelően tudom irányítani, így most sessionben van tárolva az account, és a sessiont ellenörzöm. Azért gondoltam így mert van olyan jsp oldal, amit nem előz meg servlet (mivel nincs rá szükség a tartalom statikus).
kösz
- A hozzászóláshoz be kell jelentkezni
en mindent ugy szoktam, hogy taglibbe kihanyom a kodot, es akkor azt konnyu parameterezni + az tud hasznalni ejb injectont is.
de en nem vagyok web programozo :)
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam és tényleg nem működik jsp-ből az EJB elérése. Servletből viszont megy. Úgy gondoltam volna, hogy mivel a jsp oldal servletté fordul le, ebben is ugyanúgy kellene működnie.
El tudod mesélni, hogy ez miért nincs így?
- A hozzászóláshoz be kell jelentkezni
separation of concerns. :)
tamogatott ugye, hogy elvileg komplett java kodot irhatsz jspbe. namost ennek kovetkezteben regen mindekni a jsp kodba hanyta a vezerlest is (rooooooosz, nagyon rossz, meg ne jegyezzetek, es ne is csinaljatok ilyet!), ami kifejezetten bad practice.
azonban mikor bejott az EE, es igy az uj szabvany, akkor ugy gondoltak, hogy nem terjesztik ki ide is a DI -t. persze, megtehettek volna,
de ok is vissza akartak szoritani az ilyen fajta tervezest, viszont ugyanakkor nem mondhattak a mar meglevo X szazezer kodtulajdonosnak,
hogy "bocs, dobd ki a cuccod, ird ujra, mert ez igy szar".
MVC, ugyebar. amire inkabb a JSP model 2 hasonlit, mint az egy...
- A hozzászóláshoz be kell jelentkezni
Tudom, hogy ez kicsit necroposting, de most talaltam meg.
Van valami leiro howto arrol, hogy lehet servletbol atpasszintani a jsp-nek a bean-t? Egyszeruen nem talalok a google-val ilyen leirast, ahol koddal meg lenne mutatva. A link amugy jo...
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Hogy tervezed használni a dologot? RequestDispatcher? Végül is mindegy, belerakod request-be ami megy tovább a jsp fele. request.setAttribute("ejb", beanInstance), JSP oldalon meg kiszeded. De ahogy NagyZ mondta, ne tedd :)
- A hozzászóláshoz be kell jelentkezni
Nem tudom, hogy tervezem hasznalni. Mindossze azt szeretnem megtudni, hogy mi a legjobb megoldas arra a problemara, hogy van egy ejb modellem, amibol szeretnek dolgokat megjeleniteni. Nyilvan nagyon undorito dolog lenne, ha servlet-bol irkalnek ki html elemeket, foleg azert mert se completing, se syntax higlight nincs az ilyenekre, plusz nehezen karbantarthato egy ilyen.
Mondjuk tfh. irok egy blogot, akkor a blogpost body-jat szeretnem megjeleniteni a jsp-ben. Mivel en a MVC modell nagy hive vagyok, ezt ugy gondolom megoldani, hogy egy servlet lekeresi nekem a kert blogpostot (akar id alapjan, akar mashogy), es atpasszintja ezt a megjelenitest vegzo jsp-nek (ez az, amit nem tudok, hogy hogyan). Hogyan lehetne ezt az adott dolgot megoldani ugy, hogy a megoldas se tul gany ne legyen, se sokat ne kelljen szopni vele?
Ruby on Rails-ban ez azert egyszeru, mert a view-ben hozzaferek a controller osztalyban instance valtozokent megadott dolgokhoz (kvazi egy kornyezeten belul vagyok a controllerrel). Gondolom ez nyilvan nem el JSP-Servlet viszonylatban, igy tehat a modell-t magat - mint objektumot - mindenkeppen at kell adni valahogy.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A legegyszerűbb megoldás a RequestDispatcher használata. Ilyenkor van egy, vagy egy pár servlet-ed és az delegál el a jsp oldalak fele. A model-t még servlet oldalon beleteszed bean-ben, amit beleraksz request-be, ezután a dispatcher delegál valami alapján a megadott jsp oldal fele. Jsp oldalon már a kezedben lesz így a bean .
Ha nagyra nő a blogod, sok funkcionalitással, akkor a saját taglib-ek a legtisztább megoldás, mint ahogy NagyZ is említette.
Szerkesztve:
- A hozzászóláshoz be kell jelentkezni
Aham. Elolvastam a linket, jol nez ki, csak nem teljesen tiszta, a szervlet hogy ugrik at a jsp-re. Tudnal valami egyszeru kis mukodo peldat adni (ha nem nagy gond)?
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
a jsp szerinted nem servlet?
- A hozzászóláshoz be kell jelentkezni
De. Csakhogy itt _kulon_ servletrol beszelunk, ami a controller funkciot tolti be. Viszont, mivel nem ugyanaz az environment, a kerdes az, hogy ezt hogy tudom atadni servletbol, hogy tudom a kerest tovabbiranyitani a jsp-nek, es vegul hogy tudom jsp-bol elkapni.
privatban irtad, hogy nem ertesz hozza, ide csak azert irom be a kerdest, hogy mas tudjon ra valaszolni
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ahogy mar fenntebb is emlitettek, ezt pl a RequestDispatcherrel erheted el!
----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
- A hozzászóláshoz be kell jelentkezni
A jsp oldalakból először egy szervlet forráskód generálódik, ezt általában meg találhatod !valahol!, de én ezt a helyet mostanában nem találtam!:)
- A hozzászóláshoz be kell jelentkezni
Glassfish-ben van egy generated konyvtar, ott nezz korul ;-) Viszont itt megintcsak nem ez a kerdes.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Valami miatt nem tudok a vipmail-es címedre levelet küldeni. Felvettelek MSN-en, de gondolom nem fogadtad még el :)
- A hozzászóláshoz be kell jelentkezni
Van valami leiro howto arrol, hogy lehet servletbol atpasszintani a jsp-nek a bean-t?
request.setAttribute a legegyszerűbb módszer. Aztán a JSP oldalról már csinálhatsz bármit EL használatával:
A bean: ${bean}
A bean egy property-je: ${bean.property}
A bean egy property-jének property-je: ${bean.property.property}
Vagy mi a kérdés? :)
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
servletbe pedig injektalhatod @EJB -vel is, nem kell ez a context lookup marhasag.
Nem marhaság, én például csak EJB-k között használom a @EJB injektálást, a JSP/Servlet oldalról már inkább egy ServiceLocator osztályon át InitialContext.lookup alapján kérem el. Ennek az oka egyszerű: ha esetleg más szerverre vagy JVM-be kerül át a web réteg, akkor lehet szopni a @EJB injektálás visszaírásával, mivel az nem működik más JVM-be való hívásra, illetve aljas és sunyi módon nem szól, ha nincs meg az erőforrás, ezért tele kell tenni a kódot "if null" feltételekkel, hogy le tudd ezt kezelni.
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
ez a ServiceLocator pattern ez mar antipattern, AFAIK. azert van a DI, hogy hasznald. ezt a kulon jvmben fut dolgot nem ertem, ha local az ejbd, akkor egybe futnak, ha nem local, akkor meg ugyis remote ejbt akarsz elerni.. vagy mit nem veszek eszre?
- A hozzászóláshoz be kell jelentkezni
Ha antipattern, akkor antipattern... leszarom.
A való életben sokszor előfordul, hogy amit egybe álmodtál meg, azt mégis külön kell futtatni. Nem okoz semmi fájdalmat, ha mellőzöd a DI-t, viszont sok előnye van, ha jön a csúnya refactor.
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
erre mondanam azt, hogy milyen jo custom injectert hasznalni:) DI + flexibilitas.
remelem atmegy az uj JSR majd, ami az @Injectrol szol.
- A hozzászóláshoz be kell jelentkezni
Hasznos az injection, de nem egyedüli üdvözítő megoldás. Túl lelkes vagy azokkal a dolgokkal kapcsolatban, amelyeket megismersz és tetszik illetve amelyekkel (hivatalból) lelkesnek kell lenned. Szerencsére a világ soha nem annyira fekete és fehér, mint amit a Te szemeiden át szeretnél láttatni. :)
Mindig van választási lehetőség... :)
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
az injectiont nem most ismertem meg, viszont szerintem a metaadat-annotacio nagyon hasznos dolog, a DI ugyszinten. ha a kettot kibovithetjuk, es sajat maganak farigcsalhatja az ember, az egy nagyon jo parositas.
es nem csak en gondolom igy, ott a Guice, Spring.. :)
- A hozzászóláshoz be kell jelentkezni
es nem csak en gondolom igy, ott a Guice, Spring.. :)
Amelyek egyike se erős clusterben és abban se, hogy JVM szinten többfelé vágjad az alkalmazást. Egy JVM-en vagy egy alkalmazáson belül tökéletes az injection, de amint ez nem igaz, több a hátránya, mint az előnye. És soha nem tudhatod, hogy mikor kell horizontálisan és mikor vertikálisan clusterezni az alkalmazásod.
--
http://wiki.javaforum.hu/confluence-2.10/display/FREEBSD
- A hozzászóláshoz be kell jelentkezni
ma' megint onreklam lesz, de erre pont megoldas lesz a diplomamunkam (remelem). :) marmint jvmek kozotti transzparent atjarhatosag, loadbalancing, skalazodas..
- A hozzászóláshoz be kell jelentkezni