Sziasztok!
1. Mi a különbség a következő két EJB hívás között:
@EJB
private MyEJBClassNameRemote ejbRef;
------
hu.mycompany.project.modul.MyEJBClassNameRemote ejbRef = null;
try {
javax.naming.InitialContext ic = new javax.naming.InitialContext();
Object regService = ic.lookup("hu.mycompany.project.modul.MyEJBClassNameRemote");
ejbRef = (hu.mycompany.project.modul.MyEJBClassNameRemote) regService;
} catch (javax.naming.NamingException except) {
log.error("----||||---- ERROR while injection EJB resource " + except.getMessage());
}
2. Adott a fenti AS.
Van egy EJB projektem local, remote interface-ekkel.
Van még egy class lib-em a domain/mydomain/lib alatt. Ez a lib tartalmaz egy remote EJB hívást.
A jelenség: ha úgy állítom le az AS-t, hogy minden alatta van, akkor újraindítás után a class lib-em nem éri el az EJB-met csak miután újradeployoltam az EJB projektet. Természetesen én azt szeretném, ha nem kellene mindig bedeployolni az EJB-t.
Kérdés: ez normális jelenség, vagy van rá megoldás?
Köszi a válaszokat.
Ficzu
1. Mi a különbség a következő két EJB hívás között:
@EJB
private MyEJBClassNameRemote ejbRef;
------
hu.mycompany.project.modul.MyEJBClassNameRemote ejbRef = null;
try {
javax.naming.InitialContext ic = new javax.naming.InitialContext();
Object regService = ic.lookup("hu.mycompany.project.modul.MyEJBClassNameRemote");
ejbRef = (hu.mycompany.project.modul.MyEJBClassNameRemote) regService;
} catch (javax.naming.NamingException except) {
log.error("----||||---- ERROR while injection EJB resource " + except.getMessage());
}
2. Adott a fenti AS.
Van egy EJB projektem local, remote interface-ekkel.
Van még egy class lib-em a domain/mydomain/lib alatt. Ez a lib tartalmaz egy remote EJB hívást.
A jelenség: ha úgy állítom le az AS-t, hogy minden alatta van, akkor újraindítás után a class lib-em nem éri el az EJB-met csak miután újradeployoltam az EJB projektet. Természetesen én azt szeretném, ha nem kellene mindig bedeployolni az EJB-t.
Kérdés: ez normális jelenség, vagy van rá megoldás?
Köszi a válaszokat.
Ficzu
Page
viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
5 Comments
Ficzere Ferenc
Úgy látszik vagy nagyon amatőr kérdéseket teszek fel, vagy nagyon magasakat (ezt azért nem hinném).
Mindenesetre a lényeg a lényeg: sikerült megoldanom a feladatom ezen részét.
Üdv:Ficzu
Auth Gábor
A kérdéseid első részére: az annotációval egy classloaderen belül tudsz local vagy remote hívást tenni (az EJB3 szerint a session bean-ek JNDI neve azonos a csomagnév+osztálynévvel). Az InitialContext a régebbi megoldás, bár működik EJB3 esetén is.
Ficzere Ferenc
Kicsit pontosítani kell a hibaleírásomat: igazából arról van szó, h egy EJB projekten belül valósítok meg deployolási időben saját ejb hívást mielőtt még az bedeployolódna. Szóval most azt keresem, hogyan lehet megadni egy EJB projekten belül a session beanek deployolási sorrendjét.
Bakcsa Zoltán
Sziasztok, lenne egy kezdő kérdésem. Glassfish 3.1.1 AS-en fut egy EJB, ennek van egy remote interface-e. Összedobtam egy klienst, ami próbál csatlakozni, illetve próbálja meghívni az adott funkciókat. Működik is, egyetlen problémám van, mégpedig, hogy kliens iszonyat lassan veszi fel a kapcsolatot a szerverrel, valamint a funkciók meghívása is nagyon lassú.
Az alábbi rutinnak 43 másodpercre van szüksége, hogy lefusson. Közben a procit a kliens szinte végig 80-100%-ban terheli.
Van ötletetek, hogy mit tehetnék a sebesség növelése érdekében? Nem hiszem, hogy ez így normális.
Bármilyen építő jellegű hozzászólásnak örülnék. Másoknak is ilyen lassú? Normális, hogy ennyire eszi a procit?
private boolean initializeConnectionToDC(){
initialContextProperties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
initialContextProperties.setProperty("org.omg.CORBA.ORBInitialHost", properties.getProperty("dc_hostname"));
initialContextProperties.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
try {
ctx = new InitialContext(initialContextProperties);
myClientCommRemote=(ClientCommRemote)ctx.lookup(ClientCommRemote.class.getName());
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
Üdv:
Zoli
Bakcsa Zoltán
Oké, más utat kerestem. Az EJB mellé betettem egy web project-et, aminek van egy servlet-e, ez lokálisan hívja meg az ejb-t. A kliens meg webservice-n keresztül éri el a servlet-et -azon keresztül pedig az EJB- t. Az eredmény: jóval kisebb kliens, jóval gyorsabb indulás, jóval gyorsabb kommunikáció, kuszább működés.
Ettől függetlenül érdekelne mindenkinek a véleménye, hogy EJB kliens esetén miért ilyen lassú a kommunikáció, és miért ilyen processzoridő igényes. Na és persze a lényeg, hogy lehet-e tenni valamit ellene.
Üdv:
Zoli