Elenco di controllo per la risoluzione dei problemi EJB
L'elenco di controllo EJB presenta diverse domande e attività che aiutano a individuare oppure eliminare i possibili problemi che impediscono di eseguire correttamente le operazioni desiderate in questo prodotto.
Alcune delle voci di questo elenco di controllo sono semplici domande da porsi durante il processo di risoluzione dei problemi e alcune sono suggerimenti o collegamenti a informazioni che possono rivelarsi utili.
Passare a una delle seguenti sezioni che descrivono più dettagliatamente l'operazione che si stava eseguendo:
Verificare come è stata strutturata l'applicazione
Esaminare lo spazio di lavoro e contare quanti EAR contiene. Quante applicazioni enterprise ci sono?
Come sono stati associati i moduli Enterprise Application (progetto client di applicazioni J2EE, progetto
EJB o progetto Web) ai progetti Enterprise Application (progetti EAR)?
Verificare se si è riscontrato un problema relativo al percorso classi
Si stanno utilizzando progetti di utilità Java o file JAR statici? Se si stanno utilizzando file JAR statici, dove sono situati questi ultimi?
Sistemare i file JAR statici in WEB-INF/lib se si utilizzano solo in un'applicazione Web
oppure sistemarli nell'EAR (Enterprise Application) se si desidera condividerli tra i diversi moduli
Enterprise Application (progetti client di applicazioni, EJB o WEB) o se sono utilizzati solo dall'applicazione EJB.
Tutti gli JAR di utilità del progetto sono stati associati al modulo Enterprise Application in cui verranno utilizzati?
Accertarsi di aver aggiunto il progetto Java agli JAR di utilità del
progetto sulla pagina Modulo del descrittore di distribuzione Enterprise Application.
Si sta impostando una traccia stack java.lang.NoClassDefFoundError in fase di runtime che si occupa delle classi contenute nel progetto di utilità Java o nel file JAR statico?
Verificare le dipendenze JAR Java per il modulo Enterprise Application
e accertarsi che tutti i file JAR necessari siano selezionati in questa pagina (fare clic con il tasto destro del mouse su Progetto > Proprietà > Dipendenze JAR Java).
Esistono due differenti percorsi classi necessari per lo sviluppo e la verifica di applicazione enterprise.
Il Percorso di generazione Java è il percorso classi utilizzato dal compilatore per individuare le classi dipendenti solo per scopi legati alla compilazione. Le Dipendenze JAR Java (un frontale per il file MANIFEST.MF) vengono utilizzate per individuare le classi dipendenti situate nell'applicazione enterprise o in altri moduli Enterprise Application contenuti nell'applicazione enterprise. Nello
spazio di lavoro, quindi, l'applicazione può essere compilata correttamente ed è possibile pensare che
sia funzionante, ma è necessario ad ogni modo accertarsi che gli stessi JAR siano visibili in fase di
runtime aggiungendoli alla pagina Dipendenze JAR Java per evitare che si verifichino errori
java.lang.NoClassDefFoundError.
Selezionare sempre i file JAR in Dipendenze JAR Java per far aggiungere automaticamente i file JAR al Percorso di generazione Java.
Verificare se il problema riguarda una limitazione con le specifiche
Si sta sviluppando EJB 1.1 o EJB 2.0? Vedere Specifiche EJB
Se si sta sviluppando EJB 2.0, sono EJB interfaccia locale o remota?
Si stanno sviluppando progetti J2EE 1.2 o 1.3? Vedere le specifiche J2EE per 1.2 e 1.3
Si tratta di un bean di sessione stateless o stateful?
Il bean di sessione sta utilizzando transazioni gestite dal contenitore o gestite dal bean?
I riferimenti alle risorse richiesti sono definiti correttamente?
Quale database si sta tentando di associare agli EJB?
Alcuni codici di distribuzione EJB dipendono direttamente dal tipo di fornitore del database e dal sistema operativo scelto.
Ad esempio, se si sceglie DB2 su Windows e si genera il codice di distribuzione EJB, è possibile che possa non riuscire questa operazione se la destinazione di runtime desiderata è DB2 su z/OS.
Accertarsi che il database di backend definito per l'EJB sia il database di runtime desiderato e il sistema operativo desiderato in modo che quando si genera il codice di distribuzione EJB questo sarà corretto per la piattaforma in questione.
L'ideale è avere i database di distribuzione e produzione sulla stessa piattaforma; tuttavia, ciò può non essere realistico e quindi è possibile creare più backend e passare da uno all'altro nel descrittore di distribuzione EJB. Accertarsi, dopo aver modificato il backend nel descrittore di distribuzione EJB, di generare il codice di distribuzione EJB nuovamente.
Verificare che i file di metadati del database non siano stati danneggiati
Esaminare la cartella di backend dei moduli EJB nello spazio di lavoro.
È possibile aprire tutte le tabelle elencate nel database e nel file di definizione di schema utilizzando gli editor corrispondenti?
In caso positivo, i file di metadati sono corretti
In caso negativo, provare a importare le informazioni sul database nuovamente utilizzando la procedura guidata Associazione EJB a RDB (fare clic con il tasto destro del mouse su Progetto EJB > Associazione EJB a RDB >
Genera associazione) e utilizzare le nuove informazioni di backend.
Verificare si aver associato l'EJB al database correttamente: le seguenti sono domande per mantenere alta l'attenzione
Gli attributi EJB e le tabelle corrispondenti sono tutti associati?
Le relazioni EJB definite sono corrette date le relazioni attuali tra le tabelle?
Gli CMR sono associati correttamente ai vincoli di chiave esterna?
Le code/argomenti e i relativi factory di connessione sono correttamente configurati?
Le porte listener sono definite?
I nomi JNDI sono correttamente specificati?
L'ID di protezione JAAS è specificato correttamente e utilizzato se richiesto da un factory di connessione?
Le eccezioni applicazione EJB non vengono generate dagli MDB poiché questi non dispongono di client per intercettarle
Problemi con gli EJB BMP (bean managed persistance)
Gli EJB BMP
rappresentano un modello di programmazione avanzata. Le risorse migliori per il debug del codice o per apprendere come scrivere BMP sono i manuali relativi a questo argomento. Vedere le istruzioni utili all'inizio di questo argomento per i collegamenti ai manuali.
Il nome JNDI origine dati è associato correttamente ai progetti EJB o a singoli EJB CMP?
È stato specificato l'ID di backend corretto nella sezione relativa ai binding WebSphere del Descrittore di distribuzione EJB?
Un progetto EJB può avere diversi backend ciascuno dei quali deve avere il relativo codice di distribuzione EJB generato
Gli attributi transazionali e le modalità di accesso sono specificate nel Descrittore di distribuzione EJB?
La fonte migliore di informazioni è il centro di informazione di WebSphere Application Server. Fare riferimento al sito Centri di informazione e librerie
Il codice generato funziona correttamente?
Si è tentato di eseguire il debug o di analizzare il codice generato per identificare la parte errata o le query utilizzate? Si tratta di un'attività complicata e dipende dalle proprie capacità.
Quando si risolvono i problemi ejbdeploy, analizzare gli strumenti prima di eseguire il debug del codice generato.
Si tratta di un problema relativo alla configurazione server?
La fonte migliore di informazioni relative al server è il centro di informazione di WebSphere Application Server. Fare riferimento al sito Centri di informazione e librerie. Di seguito sono riportate alcune domande utili da chiedersi:
Quale versione del server è indicata nella console?
Si tratta di un problema di configurazione dell'origine dati?
Il server viene avviato correttamente?
Si tratta di un problema di runtime del server?
La fonte migliore di informazioni relative al server è il centro di informazione di WebSphere Application Server. Fare riferimento al sito Centri di informazione e librerie. Di seguito sono riportate alcune domande utili da chiedersi:
Controllare i suggerimenti per la risoluzione dei problemi in Websphere
Si tratta di un problema di caricamento delle classi?
Si tratta di un problema di configurazione dell'origine dati?
Il server viene avviato correttamente?
Viene visualizzato il messaggio "Errore durante il caricamento dell'archivio sul server"
durante la pubblicazione dell'applicazione su un WebSphere Application Server remoto?
Questo messaggio potrebbe essere visualizzato se la macchina su cui è in esecuzione
Rational Developer non è in grado di eseguire correttamente il ping all'indirizzo IP o al nome host
contenuto nel file serverindex.xml del server remoto.
Per risolvere questo problema, sulla macchina server, modificare il nome host definito nel file
<WAS_HOME>\profiles\<PROFILENAME>\config\cells\<CELLNAME>\nodes\<NODENAME>\serverindex.xml
in un nome che la macchina su cui è in esecuzione Rational Developer sia in grado di risolvere