Non temete, sembra lungo, ma sono tutti schemi
.
Il problema riguarda la struttura progetti sotto
websphere e il runtime degli EJB.
Schema applicazione
codice:
progetto A (Java)
progetto B (Java)
Ref : Progetto Web/WEB-INF/lib/A.jar
progetto C (Java)
Ref : Progetto Web/WEB-INF/lib/A.jar
Ref : Progetto Web/WEB-INF/lib/B.jar
progetto EJB (EJB)
progetto EA (Enterprise)
Ref : Progetto Web
Ref : Progetto EJB
progetto Web (Web App)
| Ref : Progetto C
|
|
-- WEB-INF
|
|
-- classes
|
|
-- lib
|
|
-- jar A (ottenuto esportando il proj A e copiando il jar nella lib)
jar B (ottenuto esportando il proj B e copiando il jar nella lib)
Data questa struttura viene generato un pacchetto EAR.
codice:
enterprise app (Struttura EAR)
|
|
-- EJB (jar ottenuto con l'export del progetto enterprise)
|
|
-- Web (War)
|
|
-- WEB-INF
|
|
-- classes
|
|
-- lib
|
|
-- jar A (ottenuto esportando il proj A e copiando il jar nella lib)
jar B (ottenuto esportando il proj B e copiando il jar nella lib)
jar C (ottenuto referenziano il proj C nel deployment descriptor
dell'applicazione web ed esportando)
Installando il tutto su una versione Websphere 4 tutto funziona correttamente,
utilizzando Websphere 5 gli EJB non funzionano più correttamente.
L'errore sembrerebbe abbastanza banale (unable to locate class value for <CLASSE>), quindi con
la versione 5 senbra che gli EJB a runtime non riescano a trovare i jar con le classi applicative
per effettuare il marshalling e la serializzazione delle stesse.
In due parole, gli EJB non vedono la Web/WEB-INF/lib.
Ho provato a togliere i jar dalla Web/WEB-INF/lib e referenziare tutti i progetti nel progetto enterprise
così da ottenere un EAR schematizato come:
codice:
enterprise app (Struttura EAR)
|
|
-- EJB (jar ottenuto con l'export del progetto enterprise)
|
|
-- Web (War)
| |
| |
| -- WEB-INF
| |
| |
| -- classes
| |
| |
| -- lib
|
|
-- jar A
jar B
jar C
Ma continua a non vedere i jar.
Il problema è sicuramente dei più banali (visto che su versione 4 funziona) e sicuramente dovuto
ad una probabile configurazione errata di qualche riferimento o path, ma non ho proprio idea di
dove cercare questo errore.
La soluzione scomoda è quella di definire sul path del server i puntamenti al War, al War/WEB-INF/classes e War/WEB-INF/lib, così da ottenere visibilità globale, ma è terribilmente brutto.
Ho visto che esiste la possibilità di esportare autonomamente il progetto EJB come EJB-jar. Fatto questo xò non trovo il modo di
Referenziare questo jar nel progetto enterprise così da avere uno startup automatico del container una volta deployato l'EAR.
Please HELP ME!!!