Per i progetti convertiti da EJB 1.1 a EJB 2.x, è necessario attenersi alla seguente procedura per migrare il codice esistente da EJB 1.1 a EJB 2.x.
Nota: I bean EJB 2.x sono supportati solo in un progetto EJB 2.x
(tuttavia, i progetti 2.x supportano anche i bean 1.1).
- Per qualsiasi bean CMP 1.1, sostituire ogni campo CMP con metodi getXXX e setXXX astratti.
Anche la classe bean
deve essere astratta.
- Per CMP, creare un metodo astratto getXXX e setXXX per la chiave primaria.
- Per il metodo finder CMP 1.1, creare un metodo EJBQL (EJB Query
Language) per ogni metodo finder.
Nota: EJB Query Language ha le seguenti limitazioni in
Rational Application
Developer V6.0:
- Le query di EJB Query Language che comprendono EJB con chiavi composte di
relazioni ad altri EJB verranno visualizzate come non valide e causeranno errori
in fase di impiego.
- Il supporto IBM EJB Query Language estende la specifica EJB 2.x in vari modi,
tra cui la riduzione di alcune limitazioni, l'aggiunta di un supporto per più funzioni DB2 e
così via. Se la portabilità attraverso vari
database di fornitori o strumenti di distribuzione EJB costituisce un problema, allora l'attenzione
deve essere rivolta a scrivere tutte le query EJB Query Language rigorosamente in base alle istruzioni
descritte nel capitolo 11 della specifica EJB 2.x.
- Per qualsiasi finder CMP 1.1, restituire java.util.Collection anziché java.util.Enumeration.
- Per i bean CMP 1.1, modificare tutte le ricorrenze della stringa this.field = value con setField(value) in ejbCreate() ed in qualsiasi altro punto del codice.
- Aggiornare la gestione delle eccezioni (funzione rollback) per le eccezioni non appartenenti all'applicazione:
- Attivare javax.ejb.EJBException anziché java.rmi.RemoteException per riportare le eccezioni non appartenenti all'applicazione.
- In EJB 2.x e 1.1, tutte le eccezioni non appartenenti all'applicazione attivate dall'istanza generano il rollback della transazione in cui è eseguita l'istanza e la eliminano.
- Aggiornare la gestione delle eccezioni (funzione rollback) per le eccezioni dell'applicazione:
- In EJB 2.x e 1.1, un'eccezione di applicazione non provoca il rollback automatico di una transazione da parte del contenitore.
- In EJB 1.1, il contenitore esegue il rollback solo se l'istanza è stata richiamata
utilizzando il metodo setRollbackOnly() sull'oggetto
EJBContext.
- Aggiornare le impostazioni CMP dei valori predefiniti
specifici dell'applicazione in modo che siano all'interno di
ejbCreate (non utilizzare variabili globali, poiché i
contenitori EJB 1.1 impostano tutti i campi su valori
predefiniti generici prima di richiamare ejbCreate
che sovrascriverà tutte le precedenti impostazioni predefinite
specifiche dell'applicazione).