Server Liberty nepodporuje odchozí nebo příchozí šíření transakcí pro vzdálená rozhraní EJB. Při výchozím nastavení jsou objekty EJB bean spravovány kontejnerem a používají atribut transakce Required. V důsledku toho budou existující definice EJB, které neurčují žádné vlastnosti container-transaction, standardně nakonfigurovány pro použití transakcí, i když nejsou podporovány.
Toto pravidlo značí kód Java, který odkazuje na následující anotace EJB, které označují použití vzdálených obchodních nebo domovských rozhraní:
javax.ejb.Remotejavax.ejb.RemoteHomeToto pravidlo také značí následující odkazy v souboru ejb-jar.xml:
<remote/><business-remote/>
Specifikace EJB vyžaduje, aby produkty, které podporují odchozí šíření transakcí, stále posílaly kontext transakce s hodnotou Null.
Tento kontext musí být odmítnut komponentami EJB, které používají atributy transakce
Required (výchozí), Mandatory nebo Supports. Klient s aktivní globální transakcí nemůže spustit objekt typu EJB bean s výchozími atributy transakce, je-li klient nebo server na platformě Liberty.
chcete-li povolit, aby klient spouštěl objekt EJB bean, změňte objekt EJB pro použití atributu transakce RequiresNew nebo NotSupported. Ačkoli tyto atributy povolí spuštění objektu typu EJB bean, není transakční zpracování provedené objektem EJB bean potvrzeno v rámci transakcí klienta.
Všimněte si, že šíření transakce je podporováno pro vzdálená rozhraní EJB, která jsou spuštěna ve stejném prostředí JVM, avšak tato možnost může být určena pouze s dalším vyšetřováním chování aplikace.
Objekty typu EJB 2.x bean často konfigurují vzdálená rozhraní v souboru ejb-jar.xml i v případě, že nejsou použity.
Vzdálená rozhraní potřebujete pouze v případě, že máte kód spuštěný přes dvě různá prostředí JVM.
Ve výrazech WebSphere to znamená buď mezi dvěma různými aplikačními servery, nebo mezi aplikací klienta a aplikačním serverem spuštěnými v různých prostředích JVM.
Informace CORBA, jako např. adresa URL poskytovatele iiop://, ve vyhledávání objektů EJB je také indikátorem, že se používají vzdálené objekty EJB bean.
Pokud odkazujete na objekty EJB bean spuštěné ve stejném prostředí JVM pomocí vzdáleného rozhraní,
může být použito lokální rozhraní s lepším výkonem. Je-li to možné, změňte anotace z @Remote na @Local
a z @RemoteHome na @LocalHome a otestujte všechny vaše scénáře kódu. Podobně pro konfiguraci ejb-jar.xml
odeberte definice <remote/> a <business-remote/> a otestujte všechny scénáře.
Zatímco šíření transakcí je podporováno pro tento scénář, nejlepším postupem je převod na použití lokálních
rozhraní pro zlepšení výkonu a odebrání dojmu, že metody lze volat externě ze stejného prostředí JVM.
V případě objektů typu EJB bean, které vyžadují vzdálený přístup, je nejlepší postup je zabalit do webové služby. Viz Anotace objektu typu EJB bean k vytvoření webové služby, kde naleznete pokyny k použití produktu WebSphere Application Server Developer Tools for Eclipse ke změně těchto změn kódu. Po zabalení objektů typu EJB bean ve webových službách použijte klienta webové služby k volání webové služby EJB. Po testování můžete odebrat vzdálené anotace nebo konfiguraci EJB.
Další informace k souvisejícím tématům viz