A tároló által felügyelt perzisztens komponensek WebLogic telepítésleírója lehetővé teszi az alkalmazások számára, hogy automatikus adatbázis-szekvencia (kulcs) előállítási szolgáltatást használjanak. Ezen szolgáltatás használata esetén a WebLogic alkalmazásnak nem kell a következő szekvenciakulcsot előállító kódot hozzáadnia az alkalmazáshoz, amikor CMP EJB objektumokat hoz létre. Amikor automatikus szekvencia előállítást tartalmazó WebLogic alkalmazásokat állít át, hozzá kell adni az új bejegyzések szekvenciaazonosítóját előállító kódot.
A weblogic-cmp-rdbms-jar.xml fájl tartalmazza a
WebLogic RDBMS alapú perzisztenciát használó entitás EJB komponensek
adatait.
Ez a szabály a WebLogic automatic-key-generation elemek
konfigurációját keresi és átállítási információkat ad az
Oracle előállító-típus számára.
A példában olyan elem látható,
amelyet a szabály meg fog jelölni:
|
<weblogic-rdbms-bean> <ejb-name>Card</ejb-name> <data-source-name>MyDataSource</data-source-name> <table-name>MY_TABLE</table-name> ... <automatic-key-generation> <generator-type>Oracle</generator-type> <generator-name>sequence_id</generator-name> <key-cache-size>10</key-cache-size> </automatic-key-generation> ... </weblogic-rdbms-bean> |
A generator-name bejegyzés a következő szekvencia előállításához
használandó nevet jelzi az Oracle DUAL táblából.
Ha például adott a
sequence_id elemhez tartozó generator_name, akkor a
következő SQL utasítás segítségével lehet a következő sorszámot lekérdezni.
| select sequence_id.NEXTVAL from dual; |
Ha a szabály megjelöl bejegyzéseket a weblogic-cmp-rdbms-jar.xml telepítésleíróban, akkor az EJB kódot saját kezűleg módosítva kell a kulcsokat létrehoznia. Ezeket a lépéseket a WebSphere Application Server EJB csonkjainak újra-előállítása előtt kell elvégezni. A következő példák egy lehetséges átállítási útvonalat körvonalaznak.
ejbCreate és ejbPostCreate metódusaihoz.ejbCreate
és ejbPostCreate metódusokban.create
metódusához.create() metódusa
meghívásra kerül a következő sorszám átadásához.Az alábbi példák azt mutatják be, hogyan lehet az Oracle automatikus kulcs előállítási funkcionalitását lecserélni. Hasonló kódot kell írnia minden olyan CMP komponenshez, amely Oracle automatikusan előállított sorszámokat használ. Segédprogram súgóosztályok létrehozásával kombinálhatja az egyes komponensek sorszámait előállító funkciókat.
ejbCreate és ejbPostCreate metódusaihoz.Előtte:
|
public Integer ejbCreate(String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException ... public Integer postCreate(String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException ... |
Utána:
|
public Integer ejbCreate(Integer sequenceID, String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException ... public Integer postCreate(Integer sequenceID, String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException ... |
ejbCreate
metódusban.|
public Integer ejbCreate(Integer sequenceID, String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException { ... setCardID(sequenceID); ... } |
create
metódusához.Előtte:
|
public Card create(String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException; |
Utána:
|
public Card create(Integer sequenceID, String cardNumber, String lastName, String firstName, java.sql.Date issueDate) throws CreateException; |
|
String sqlQuery = "select sequence_id.NEXTVAL from dual"; PreparedStatement prepStmt = con.prepareStatement(sqlQuery); ResultSet rs = prepStmt.executeQuery(); if(rs != null) { rs.next(); nextKey = rs.getInt("NEXTVAL"); } |
create() metódusa
meghívásra kerül a következő sorszám átadásához.| Card card = cardHome.create(nextKey, cardNumber, lastName, firstName, newDate); |