EJB 2.x – Entity Beans (BMP – spolupráca medzi entitami)
V predchádzajúcom článku sme načrtli spôsob implementácie synchronizačných metód ejbLoad a ejbStore. Ako ste si mohli všimnúť, v prvej menovanej metóde sme, čo sa týka predmetu (objektu) aukcie, nemali k dispozícii priamo tento predmet (ako objekt triedy Item), ale iba hodnotu jeho primárneho kľúča.
Toto riešenie je v podstate vyhovujúce, ale treba si uvedomiť že iba potiaľ, pokiaľ nie je problém získať referenciu na rozhranie (component interface) daného objektu, predstavujúceho predmet aukcie. Problém by to byť nemal, pretože rovnako ako každý iný klient, aj entitný objekt môže získať referenciu na iný entitný objekt prostredníctvom volania vyhľadávacej metódy home rozhrania referencovaného objektu.
To znamená, že prvým krokom je získať referenciu na spomínané home rozhranie. EJB získava referenciu na home rozhranie inej EJB použitím definície uloženej v nastaveniach prostredia. Dané informácie sú uložené v deployment descriptore ejb-jar.xml. Nasledujúci fragment tohto súboru ukazuje, ako je možné definovať EJB referenciu na lokálne home rozhranie inej EJB.
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>EnglishAuction</ejb-name>
…
<ejb-local-ref>
<description>
Táto EJB referencia je použitá na
lokalizáciu predmetu aukcie
</description>
<ejb-ref-name>ejb/Item</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>ItemHome</local-home>
<local>Item</local>
</ejb-local-ref>
…
</entity>
…
</enterprise-beans>
…
</ejb-jar>
EJB referencia je umiestnená v rámci subkontextu definície prostredia EJB. Hore uvedená deklarácia umožňuje aukčnej entite referencovať lokálne home rozhranie entitnej triedy Item
– prostredníctvom elementu <ejb-ref-name>
. Aby však bola spomínaná referencia aj dostupná, musíme ešte namapovať jej meno na JNDI kontext. Nasledujúci fragment zobrazuje ako je možné toto zabezpečiť ak používate server WebLogic. V prípade použitia iného servera musíte konzultovať dokumentáciu.
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>EnglishAuction</ejb-name>
<reference-descriptor>
…
<ejb-local-reference-description>
<ejb-ref-name>ejb/Item</ejb-ref-name>
<jndi-name>Item</jndi-name>
</ejb-local-reference-description>
</reference-descriptor>
…
</weblogic-enterprise-bean>
…
</weblogic-ejb-jar>
Keď máte EJB referenciu plne definovanú, potom Item už môže byť lokalizovaný z vnútra triedy EnglishAuctionBean
použitím hodnoty jej primárneho kľúča. Nasledujúci fragment ilustruje tento spôsob.
public class EnglishAuctionBean extends AbstractEntity
implements EntityBean {
…
public Item getItem() {
if (getItemId() != null) {
if (item == null) {
try {
item = getItemHome().findByPrimaryKey(itemId);
}
catch (FinderException e) {
throw new EJBException;
}
}
}
return item;
}
…
private ItemHome getItemHome() {
InitialContext initCtx = null;
try {
initCtx = new InitialContext();
Object obj = initCtx.lookup( „java:comp/env/ejb/Item“ );
return (ItemHome)obj;
}
catch (NamingException ex) {
throw new EJBException(ex);
}
finally {
try {
if (initCtx != null) {
initCtx.close();
}
}
catch (Exception ex) {
throw new EJBException(ex);
}
}
}
…
}
Keď je EJB referencia nájdená, výsledkom je referencia na home rozhranie. Následne môžete zavolať vyhľadávaciu metódu tohto rozhrania a získať referenciu priamo na rozhranie komponenty asociované s entitnou triedou.
Predchádzajúci príklad ukazuje, ako použiť EJB referenciu na získanie lokálneho home rozhrania. Proces získania referencie na remote home rozhranie je takmer rovnaký. Rozdiel je v tom, že namiesto použitia elementu <ejb-local-ref>
v deployment descriptore, použijete element <ejb-ref>
. Tento element identifikuje remote a remote home rozhrania entitnej triedy pomocou nasledujúcej syntaxe:
<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>EnglishAuction</ejb-name>
…
<ejb-ref>
<description>
EJB referencia pre remote bean
</description>
<ejb-ref-name>ejb/RemoteBean</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>RemoteBeanHome</home>
<remote>RemoteBean</remote>
</ejb-ref>
…
</entity>
…
</enterprise-beans>
…
</ejb-jar>
Ako implementovať vyhľadávacie metódy a ako správne používať metódy na odstraňovanie entitných objektov si ukážeme v inom článku.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak si vyzkoušet Apple Intelligence v EU
2. srpna 2024 -
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Webdesign: Jak optimalizovat tlačítka na webu
7. března 2024
Nejnovější
-
Jak využít AI potenciál svého Macu?
9. ledna 2025 -
NIS2: Verifikace údajů vlastníků domén
6. ledna 2025 -
Dostali jste k vánocům PC? Využijte jeho AI potenciál!
3. ledna 2025 -
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024