A Liberty nem támogatja a kimenő vagy bejövő tranzakciók terjesztését EJB távoli felületek esetén. Alapértelmezés
szerint az EJB komponenseket a tároló kezeli, és a Required
tranzakció jellemzőt használják. Ennek eredményeként a meglévő EJB meghatározások, amelyek nem
határoznak meg container-transaction tulajdonságokat, alapértelmezésben tranzakciók
használatára vannak beállítva, holott azok nem támogatottak.
Ez a szabály megjelöli a következő EJB annotációkra hivatkozó Java kódot, amelyek távoli üzleti vagy otthoni felületek használatát jelzik:
javax.ejb.Remotejavax.ejb.RemoteHomeEz a szabály a következő hivatkozásokat jelöli meg az ejb-jar.xml fájlban:
<remote/><business-remote/>
Az EJB specifikáció megköveteli, hogy a kimenő tranzakciók
terjesztését támogató termékek továbbra is egy null tranzakció
kontextust küldjenek el.
Ezt a kontextust a Required
(alapértelmezés), Mandatory vagy Supports
tranzakció jellemzőket használó EJB komponenseknek vissza kell
utasítaniuk. Egy aktív globális tranzakcióval rendelkező ügyfél nem
indíthat el egy EJB komponenst az alapértelmezett tranzakció jellemzőkkel,
ha akár az ügyfél, akár a kiszolgáló Liberty kiszolgálón van.
Ahhoz, hogy az ügyfél el tudja indítani az EJB komponenst, módosítsa az EJB komponenst, hogy vagy a RequiresNew, vagy a
NotSupported tranzakció jellemzőt használja. Habár
ezek az jellemzők lehetővé teszi az EJB komponens elindulását, az EJB komponens által végzett tranzakciós munka
nem kerül véglegesítésre az ügyfél tranzakciók részeként.
Vegye figyelembe, hogy az azonos JVM környezetben futó EJB távoli felületek esetén támogatott a tranzakcióterjesztés, ez azonban csak az alkalmazás viselkedésének további vizsgálatával állapítható meg.
Az EJB 2.x komponensek gyakran akkor is beállítják a távoli felületeket az ejb-jar.xml fájlban,
ha azok nincsenek használatban. Távoli felületekre csak akkor van szükség, ha a kód két különböző JVM között fut.
A WebSphere tekintetében ez vagy két különböző alkalmazáskiszolgáló közötti, vagy egy ügyfélalkalmazás
és egy másik JVM-en futó alkalmazáskiszolgáló közötti futást jelent.
Az EJB kikeresés CORBA információi, mint például egy iiop:// szolgáltató URL-címe, ugyancsak azt jelzi,
hogy a távoli EJB komponensek használatban vannak.
Ha távoli felületeket használva olyan EJB komponensekre hivatkozik, amelyek ugyanabban a JVM
környezetben futnak, akkor használható a helyi felület, és a teljesítmény jobb lesz.
Ahol lehetséges, módosítsa az annotációkat @Remote értékről @Local értékre és @RemoteHome értékről @LocalHome
értékre, majd tesztelje le az összes kódhelyzetet.
Az ejb-jar.xml konfigurációhoz hasonlóan távolítsa el a <remote/>
és <business-remote/ > meghatározásokat, majd tesztelje le az összes szituációt.
Ha a tranzakcióterjesztés támogatott a szituációban, akkor a teljesítmény javítása érdekében
bevált gyakorlat az áttérés a helyi felületek használatára, és figyelmen kívül hagyható, hogy a módszerek
külsőleg ugyanarról a Java virtuális gépről is meghívhatók.
A távoli hozzáférést igénylő EJB komponensek esetén a bevált gyakorlat az, hogy ezeket a webszolgáltatásokba csomagolják. A WebSphere Application Server Developer Tools for Eclipse használati útmutatójáért a kódmódosítások elvégzéséhez, tekintse meg a következőt: Annotáció EJB komponensek webszolgáltatássá alakításához. Az EJB komponens webszolgáltatásba csomagolása után az EJB webszolgáltatást a webszolgáltatás-ügyfél segítségével hívhatja meg. A tesztelés után az EJB távoli annotációkat vagy konfigurációt eltávolíthatja.
A kapcsolódó témakörökről további információkat itt találhat: