A tranzakció terjesztés nem támogatott Enterprise JavaBeans (EJB) távoli felületek esetén

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:

Ez a szabály a következő hivatkozásokat jelöli meg az ejb-jar.xml fájlban:

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.

Győződjön meg róla, hogy szükségesek-e távoli EJB felületek

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.

Ha valóban szüksége van a távoli felületekre

Csomagolja az EJB komponenseket webszolgáltatásba (JAX-WS)

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.

Tranzakcióterjesztés kezelése
A Liberty adja a Web Services Atomic Transaction (WS-AT) támogatást, amely lehetővé teszi a megosztott globális tranzakciókat. Ha az EJB komponensek webszolgáltatásként vannak telepítve, akkor a tranzakciók a WS-AT használatával kezelhetők. További információk: A Web Services Atomic Transaction bemutatása.

A kapcsolódó témakörökről további információkat itt találhat: