Strumenti EJB - Note sul rilascio

1.0 Introduzione
2.0 Software supportato e specifiche
3.0 Problemi noti
   3.1 Problemi di aggiornamento
   3.2 Suggerimenti e restrizioni per le associazioni centrali
   3.3 Supporto di trascinamento nell'editor Associazioni
   3.4 Eliminazione di tabelle e schemi nella vista Selezione della prospettiva J2EE
   3.5 Predicati ottimistici per i bean entity 1.1 CMP
   3.6 Suggerimenti e restrizioni per l'eredità
   3.7 Riferimento a file JAR di runtime in fase di sviluppo
   3.8 Non associare tipi composti tra più tabelle
   3.9 L'eliminazione di un'entità CMP non rimuove la voce di associazione
   3.10 Limitazioni EJB QL
   3.11 Convalida per i riferimenti EJB non automatica
   3.12 Nomi arabi non supportati per i file e i bean Java
   3.13 Limitazione nella generazione delle query
   3.14 Problemi nella modifica del collegamento local-ejb-ref
   3.15 Errori nell'elenco delle attività successivi alla distribuzione delle relazioni EJB 2.0
   3.16 ejbCreate specializzato mancante per le colonne di chiavi esterne non-null
   3.17 Limitazioni relative alle modifiche del campo CMP della pagina Origine utilizzando l'eredità
   3.18 Codice di distribuzione EJB non eliminato durante la modifica di una classe bean
   3.19 Chiavi primarie sconosciute non supportate
   3.20 La modifica della classe di chiave primaria relativa ad un bean CMP 1.1 con relazione causa errori di compilazione
   3.21 Errori di riflessione durante l'aggiornamento dal repository CVS
   3.22 Eliminazione della query FIND dalla vista Struttura
   3.23 Pagina Origine ed eredità EJB
   3.24 Query QL EJB non generate correttamente per le relazioni molti-molti in una struttura ereditaria
   3.25 Problemi relativi all'associazione del server SQL con i tipi di dati FLOAT
   3.26 Linux: Problemi di connessione durante l'esecuzione di un bean 1.1 CMP bean utilizzando DB2 su WebSphere Application Server V4 (Unit Test Environment)
   3.27 Necessità di generare codice di distribuzione in caso di utilizzo di bean enterprise da altri progetti
   3.28 Supporto per l'associazione di bean enterprise a chiavi esterne e primarie
   3.29 Limitazioni per eredità e associazioni di tabelle secondarie
   3.30 Eliminazione dei bean di accesso durante la migrazione da EJB 1.1 a EJB 2.0
   3.31 Distribuzione delle applicazioni EJB con converter e composer su WebSphere Application Server v4.0.6
   3.32 Migrazione dei progetti EJB che contengono classi binarie
   3.33 Implementazione associazioni dal basso verso l'alto per le viste

1.0 Introduzione

Gli strumenti EJB forniscono un ambiente specializzato per lo sviluppo di bean enterprise. Gli strumenti EJB consistono di:

In questo file Readme vengono descritti i problemi noti, le limitazioni e le soluzioni associate agli strumenti EJB.

2.0 Software supportato e specifiche

L'opzione -dbvendor del comando ejbdeploy (strumento di distribuzione EJB) adesso supporta i seguenti valori (corrispondenti ai database supportati):

ma non supporta più i seguenti valori:

3.0 Problemi noti

3.1 Problemi di aggiornamento

Se i file o le risorse del workbench appaiono non sincronizzate oppure si verifica un errore non previsto, è consigliabile chiudere e riaprire il progetto.

3.2 Suggerimenti e restrizioni per le associazioni centrali

  1. Associa per nome: consente di gestire solo le corrispondenze esatte. Se si è generato lo schema in uso mediante lo switch compatibile con WebSphere Application Server Versione 3.5 o si è importato un JAR di WebSphere Application Server Versione 3.5, ai nomi delle tabelle viene aggiunto il suffisso 'tbl', per cui non verranno riconosciuti.
  2. Eredità: i bean secondari non verranno associati se non dispongono di campi propri. È necessario associarli manualmente alla tabella principale.
  3. java.util.Date non è supportato nell'associazione del campo 1.1 CMP.
  4. Se si utilizza un composer in un associazione, creare l'associazione, salvarla, chiudere e riaprire il progetto, quindi distribuirlo.

3.3 Supporto di trascinamento nell'editor Associazioni

Il trascinamento è supportato soltanto nella "direzione" dell'associazione. Ad esempio, se l'associazione è stata creata da un'operazione di tipo "dall'alto verso il basso", il trascinamento di un bean enterprise verso un database è consentito. Sono consentite le seguenti operazioni di trascinamento:

  1. Il trascinamento di un bean enterprise in una tabella crea un'associazione tra i due elementi.
  2. Il trascinamento di un bean in un DB crea la tabella le colonne corrispondenti, e le associa al al bean e agli attributi.

3.4 Eliminazione di tabelle e schemi nella vista Selezione della prospettiva J2EE

Se è necessario eliminare una tabella, utilizzare la prospettiva Dati o la vista J2EE della prospettiva J2EE; in questo modo, vengono rimossi anche tutti i collegamenti dipendenti. Generalmente non è necessario utilizzare la vista Selezione o Selezione J2EE per la cancellazione delle risorse J2EE in quanto le dipendenze non verranno aggiornate.

3.5 Predicati ottimistici per i bean entity 1.1 CMP

In WSAD 5.0, lo sviluppatore di bean sarà in grado di identificare gli attributi da utilizzare per gli aggiornamenti qualificati. I file jar EJB creato con versioni precedenti di WSAD non contengono questa specifica per i bean entity 1.1 CMP. Tuttavia, se la distribuzione avviene mediante WSAD 5.1, la semantica precedente è supportata. In particolare, in assenza di un elenco di attributi, verranno utilizzati tutti i predicati disponibili. I bean entity 2.0 CMP vengono trattati in modo diverso. Se non viene selezionato alcun attributo come predicato, non ne verrà aggiunto nessuno all'aggiornamento qualificato.

3.6 Suggerimenti e restrizioni per l'eredità

  1. È consigliabile, pertanto, non utilizzare tipi BLOB in una struttura di eredità radice-foglia se si sta usando un database Oracle.
  2. L'associazione di eredità principale-secondari non può essere supportato per i database MySQL, InstantDB, SQL92 e SQL99. Questi ultimi, infatti, non sono in grado di supportare gli operatori di serie SQL richiesti per le query complesse utilizzate per le associazioni principale-secondario. Per confrontare questi database, occorre servirsi di associazioni di tabella singola.
  3. L'associazione dei campi CMP nelle colonne non null non è supportata nei bean ereditati. I predicati ottimistici (OptimisticPredicate) possono essere impostati solo nei campi CMP del bean principale.

3.7 Riferimento a file JAR di runtime in fase di sviluppo

Se si desidera compilare utilizzando file JAR visibili al runtime di Websphere Application Server (ad esempio, rt.jar, xerces.jar, ecc.), come regola generale, è necessario aggiungere tali file Jar alle rispettive installazioni di runtime utilizzando le variabili del precorso classi predefinite. Ad esempio, utilizzare la variabile di percorso WAS_PLUGINDIR per i file JAR di WebSphere Application Server v4.0 e WAS_50_PLUGINDIR per i file JAR di WebSphere Application Server v5.0.

3.8 Non associare tipi composti tra più tabelle

L'editor Associazioni consente di associare un tipo composto a più colonne in tabelle differenti. Questa condizione causerebbe errori di generazione del codice di distribuzione. Accertarsi che tutte le colonne all'interno dell'associazione di tipo composto appartengano alla stessa tabella.

3.9 L'eliminazione di un'entità CMP non rimuove la voce di associazione

Quando un'entità CMP viene eliminata, le associazioni a cui il bean fa riferimento non verranno rimosse. Quando si aprono questi file con l'editor Associazioni dopo l'eliminazione di un'entità, le associazioni verranno rimosse. Questo è il comportamento previsto. Sarà necessario aprire l'editor Associazioni prima di creare il codice di distribuzione.

3.10 Limitazioni EJB QL

  1. Le query EJB QL che comprendono bean enterprise con chiavi composte da relazioni ad altri bean enterprise appariranno invalide e saranno causa di errori in fase di distribuzione. Questo è un difetto noto.
  2. Il supporto IBM EJB QL estende la specifica EJB 2.0 in vari modi, includendo 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, sarà necessario scrivere tutte le query EJB QL rigorosamente in base al capitolo 11 della specifica EJB 2.0.

3.11 Convalida per i riferimenti EJB non automatica

La convalida dei riferimenti locali a EJB, riferimenti a EJB e riferimenti alle risorse non avviene automaticamente quando tali riferimenti vengono modificati. La convalida dovrà essere avviata in modo esplicito.

3.12 Nomi arabi non supportati per i file e i bean Java

Non utilizzare nomi in arabo per i file Java, i bean Java o i bean di accesso. Non utilizzare nomi in arabo durante l'utilizzo dell'esempio MiniBank.

3.13 Limitazione nella generazione delle query

  1. Il precaricamento attraverso le relazioni m:n comporta la creazione di SQL errati. Si tratta di un problema noto che verrà risolto in futuro.
  2. Il precaricamento attraverso le relazioni con autoriferimento determina la creazione di SQL errati.
  3. Le relazioni tra bean enterprise principali e secondari all'interno della stessa gerarchia di eredità non ben definite, devono essere evitate.

3.14 Problema nella modifica del collegamento local-ejb-ref

La modifica del collegamento local-ejb-ref nella pagina "Riferimenti" dell'editor descrittore di distribuzione EJB utilizzando il pulsante "Sfoglia", non consente di selezionare un bean di destinazione che non presenta un'interfaccia remota. Per risolvere il problema, eliminare il riferimento e ricrearlo.

3.15 Errori nell'elenco delle attività successivi alla distribuzione delle relazioni EJB 2.0

Se si elimina una relazione EJB 2.0 e si ricrea il codice di distribuzione, è possibile che vengano visualizzati errori non validi nell'elenco delle attività. Per risolvere questo problema, eliminare il codice di distribuzione dei bean prima di rigenerarlo.

A volte, tali errori non validi compresi nell'elenco delle attività vengono visualizzati anche dopo l'aggiunta di una relazione EJB 2.0 e la rigenerazione del codice di distribuzione. In questo caso, per eliminare gli errori, eseguire nuovamente la generazione.

3.16 ejbCreate specializzato mancante per le colonne di chiavi esterne non-null

Se si eseguono associazioni dal basso verso l'alto di uno schema con una chiave esterna le cui colonne non sono null, sarà necessario creare un metodo ejbCreate() specifico con il tipo di interfaccia client di un ruolo aggiunto alla firma. Tale operazione non viene eseguita in modo automatico durante le associazioni dal basso verso l'alto.

3.17 Limitazioni relative alle modifiche del campo CMP della pagina Origine utilizzando l'eredità

Per supportare le specifiche EJB 1.1 e 2.0, è necessario creare un campo CMP per ogni bean di sottotipo all'interno di una struttura di eredità EJB. Se si apre l'editor del descrittore di distribuzione EJB e si modifica il nome di uno di questi campi nella pagina Origine, non verrà automaticamente modificato anche il nome nel corrispondente campo CMP creato nei bean di sottotipo per le specifiche EJB. Per risolvere questo problema è sufficiente modificare il nome mediante l'azione Modifica della pagina Bean.

3.18 Codice di distribuzione EJB non eliminato durante la modifica di una classe bean

Per poter supportare diversi bean enterprise utilizzando le stesse classi Java, il codice di distribuzione generato deve utilizzare una tecnica di denominazione che consente di rendere univoci i nomi delle classi di distribuzione generate. I nomi deriveranno dalla classe bean esistente, dalle interfacce e dalle classi di chiavi.

Se è stato generato il codice di distribuzione per un bean e si desidera modificare una di queste classi, sarà necessario eliminare prima il codice di distribuzione. In caso contrario, le classi generate precedentemente non verranno rimosse e potrebbero contenere errori di compilazione. Questa condizione può verificarsi anche se si modifica il tipo di primkey-field mediante l'azione Modifica della pagina Bean; in questo modo la classe chiave viene modificata automaticamente in base al tipo specificato ovvero, se un primkey-field non è più valido, viene creata una nuova chiave composta.

3.19 Chiavi primarie sconosciute non supportate

Lo strumento EJB non supporta la definizione di chiave primaria sconosciuta descritta dalla specifica EJB 2.0. La soluzione consiste nel definire una classe di chiave primaria specifica.

3.20 La modifica della classe di chiave primaria relativa ad un bean CMP 1.1 con relazione causa errori di compilazione

Per supportare le relazioni CMP 1.1 devono essere create classi di collegamenti. Tali classi richiedono la conoscenza delle classi di chiave primaria dei bean. Modificando la classe di chiave primaria relativa a un CMP 1.1 membro delle relazioni, i riferimenti alla classe di chiave primaria originale non verranno automaticamente modificati nelle classi di collegamento. Per evitare questo inconveniente è necessario aggiornare le classi di collegamento manualmente. Le occorrenze in cui apportare la modifica sono solo due.

3.21 Errori di riflessione durante l'aggiornamento dal repository CVS

Se, dopo aver aggiornato un progetto EJB da un repository CVS, la vista Attività contiene errori che informano che le classi o le interfacce non sono state riflesse, rigenerare il progetto EJB.

L'errore potrebbe essere simile al seguente: "CHKJ2802E: Impossibile riflettere la classe ejb-class test.SessionBean o uno dei rispettivi supertipi. Controllare il percorso classi."

3.22 Eliminazione della query FIND dalla vista Struttura

Nella vista Struttura non è possibile eliminare una query FIND da un bean CMP 2.0 che contiene un'interfaccia locale, poiché in questo modo non viene rimossa la dichiarazione di metodo dall'interfaccia home locale. La procedura corretta prevede l'utilizzo del pulsante di rimozione nella sezione Query dell'editor del descrittore di distribuzione EJB.

3.23 Pagina Origine ed eredità EJB

Per modificare l'aspetto dei bean CMP in una gerarchia di eredità, è necessario utilizzare le pagina di progettazione dell'editor del descrittore di distribuzione EJB e non la pagina Origine. Ad esempio, quando si aggiungono o si rimuovono i campi CMP ovvero quando si modifica il campo prim-key di un bean CMP, gli strumenti sincronizzano i campi relativi ai bean ereditati, così da mantenere il rapporto tra i bean e le specifiche EJB. Tale sincronizzazione non si verifica se si modifica l'origine nella pagina Origine.

3.24 Query QL EJB non generate correttamente per le relazioni molti-molti in una struttura ereditaria

In questo scenario esiste una struttura ereditaria EJB definita (eredità mista di tabelle singole e dipendenti o indipendenti) e all'interno di questa struttura vi è una relazione molti-molti ad un bean EJB. In questa situazione, qualunque query EJB definita per tali bean avrà istruzioni JOIN errate.

Di seguito viene riportato un esempio di questa struttura.

Cliente <---- m:m ----> Account
                            |
                            |
                    ------eredità------
nbsp;                    
                        |         |
                   
Controllo   Salvataggi

3.25 Problemi relativi all'associazione del server SQL con i tipi di dati FLOAT

Se è stato eseguita l'associazione del bean CMP ad un database del server SQL, è necessario eseguire l'associazione di un campo del tipo float ad una colonna del tipo FLOAT e non REAL.

3.26 Linux: Problemi di connessione durante l'esecuzione di un bean 1.1 CMP bean utilizzando DB2 su WebSphere Application Server V4 (Unit Test Environment)

Se si esegue un bean 1.1 CMP utilizzando un database DB2 nell'ambiente di testi di WebSphere Application Server V4, potrebbero verificarsi problemi di connessione.

Soluzione: Impostare il loopback per il database.

Ad esempio, se il database è MyDB, il nome host LHOST e il numero di porta di servizio del database è 50000, immettere il seguente comando:

db2 catalog TCPIP node RHOST remote LHOST server 50000
db2 catalog database MyDB as MyDBAlias
db2 uncatalog db MyDB
db2 catalog database MyDBAlias as MyDB at node RHOST

Per verificare il corretto funzionamento dell'operazione, immettere il seguente comando: db2 connect to MyDB user xxx
dove xxx è la propria password.

3.27 Necessità di generare codice di distribuzione in caso di utilizzo di bean enterprise da altri progetti

Se un bean enterprise in un progetto EJB utilizza l'interfaccia locale o remota di un secondo bean enterprise di un altro progetto (ad esempio, se dispone di un metodo che utilizza l'interfaccia remota del secondo bean enterprise come parametro), sarà necessario generare codice di distribuzione per entrambi i progetti se si desidera modificare l'interfaccia locale o remota del secondo bean.

In tal modo ci si assicura che le classi generate da RMIC per il secondo bean enterprise siano aggiornate in entrambi i progetti.

3.28 Supporto per l'associazione di bean enterprise a chiavi esterne e primarie

Quando si associa un bean enterprise a una tabella di database, è necessario tener presente alcune limitazioni che riguardano le chiavi esterne e primarie:

3.29 Limitazioni per eredità e associazioni di tabelle secondarie

Se si utilizza un'approccio principale-secondario per associare eredità o se si desidera utilizzare associazioni secondarie con più tabelle, è necessario eliminare i limiti relativi alle chiavi esterne dal database per evitare problemi di ordinamento relativi all'integrità dei riferimenti (istruzioni SQL eseguite senza un preciso ordine).

3.30 Eliminazione dei bean di accesso durante la migrazione da EJB 1.1 a EJB 2.0

Poiché i bean di accesso non sono supportato per i bean enterprise che dispongono solo di viste client locali, potrebbe essere necessario eliminare manualmente i bean se si esegue la migrazione da EJB 1.1 a EJB 2.0, si aggiunge una vista client locale e si elimina la vista client remota. Se si dispone di un bean di accesso alla classe di dati, è necessario eliminare la classe factory associata al bean. Se si dispone di un bean di accesso copy helper, è necessario rimuovere il bean, eliminare la classe factory e rimuovere i metodi nella classe bean che potrebbero risultare non validi.

3.31 Distribuzione delle applicazioni EJB con converter e composer su WebSphere Application Server v4.0.6

Se si utilizzano converter e composer nell'associazione EJB a RDB e si desidera eseguire la distribuzione su WebSphere Application Server v4.0.6, sarà necessario applicare una eFix a WebSphere Application Server. L'eFix di WAS eFix aggiornerà il file vaprt.jar.

L'eFix di WAS è la numero PQ76109.

In WebSphere Studio Application Developer v5.1, il file vaprt.jar, che contiene diversi converter e composer predefiniti, è stato modificato. A causa di queste modifiche, il file vaprt.jar in WebSphere Application Server v4.0.6 dovrà essere aggiornato. L'eFix di WAS consente di sincronizzare il file vaprt.jar.

Una soluzione alternativa all'eFix consiste nel copiare il file vaprt.jar dalla directory di runtime plug-in j2ee.core nella directory di runtime lib di WAS. I seguenti converter o composer risulteranno essere obsoleti in WAS v4.0.6 se non viene applicata l'eFix:

VapBigDecimalToBooleanConverter VapBigDecimalToDoubleConverter VapBigDecimalToFloatConverter VapBigDecimalToIntegerConverter VapBigDecimalToLongConverter VapBigDecimalToShortConverter VapTimestampToUtilDateConverter NameComposer VapUSPhoneNumberComposer

3.32 Migrazione dei progetti EJB che contengono classi binarie

Quando si utilizza la procedura guidata Migrazione per migrare un progetto EJB che contiene una o più classi Java binarie (file .class), la migrazione verrà effettuata correttamente per i componenti del progetto che contengono file Java di origine (file .java), ma non per le classi binarie. Sarà necessario correggere manualmente eventuali errori.

3.33 Implementazione associazioni dal basso verso l'alto per le viste

Quando si esegue un'associazione dal basso verso l'alto (generazione di bean enterprise basati su tabelle esistenti), per impostazione predefinita, la procedura guidata non creerà bean per le tabelle selezionate per le viste. Tuttavia, dal momento che è necessario creare le relazioni per le chiavi esterne, la procedura guidata creerà automaticamente un bean per ciascuna tabella che dispone di una qualsiasi chiave esterna o per le tabelle la cui chiave primaria è indicata da una qualsiasi chiave esterna di altre tabelle. Se si deseleziona la casella di controllo Non creare bean per le tabelle selezionate per le viste, la procedura guidata genererà bean per tutte le tabelle e le viste nello schema del database.

Visualizza il file Readme principale