Domanda

Sto riscontrando problemi durante la migrazione da OC4J 10.1.2.3 a 10.1.3.1.4. Il problema è per le applicazioni che hanno più EJB (tutti sono 2.1, senza EJB 3.0). Jdeveloper prenderà il file ejb-jar.xml predefinito (quello richiesto per Jdeveloper per eseguirlo sulla sua istanza OC4J autonoma) e lo impacchetterà in ogni modulo JAR EJB NESSUNA QUESTIONE. Ciò comporta il drill del server dell'app in ciascun modulo JAR EJB durante la distribuzione e trova lo stesso file ejb-jar.xml N volte (dove N = numero di moduli EJB). Ciò si traduce in riferimenti EJB duplicati e interromperà qualsiasi ricerca JNDI come: "java: comp / env / ejb / EJBName". Pertanto, la distribuzione di un'app con 3 bean, EJB1, EJB2 ed EJB3 fa sì che l'app server registri 9 bean invece di 3. Ho bisogno di un metodo di buone pratiche, ma tra il modo 10.1.3.4 e JDeveloper agiscono la situazione è piuttosto terribile ...

Nota a margine: funzioneranno se il codice di ricerca JNDI dell'app Web viene rifrattato in solo "quotazione ejb / nome EJBN". Questo non è auspicabile però.

È stato utile?

Soluzione 2

Il problema era riferimento multiplo nei nostri profili di distribuzione. Abbiamo creato un profilo di implementazione per OGNI EJB. Ciò significava che ogni bean aveva il proprio ejb-jar.xml (questo file conteneva una descrizione di tutti gli bean nel progetto). Pertanto, ogni volta che JDeveloper ha creato un bean, ha inserito un descrittore di tutti i bean in ciascun bean generato, causando un numero di riferimenti NxN. Pertanto Nx (N-1) riferimenti extra.

Ora, il punto chiave è che Oracle Application Server 10.1.2.3.0 e seguenti non si sono preoccupati di questi riferimenti duplicati. Tuttavia, come possiamo vedere, 10.1.3.1.4 è una versione molto diversa e questo si è rotto.

La nostra correzione: avere solo 1 profilo di distribuzione EJB che contiene tutte le classi EJB e i POJO che usano. Ricorda, prima che esistesse 1 profilo EJB per ciascun bean ... Tutto ciò consentiva a Jdeveloper (che è merda IMHO) di correttamente generare un EAR valido. Una combinazione di Jdeveloper e la merda di Oracle Application Server è ciò che ha causato questo.

Altri suggerimenti

Dovresti controllare la documentazione di Oracle per vedere qual è il tuo caso. Oracle & # 174; I contenitori per J2EE Enterprise Guida dello sviluppatore JavaBeans è un buon inizio Secondo Oracle & # 174; Contenitori per la Guida ai servizi J2EE, capitolo 2: Uso di JNDI quando usi il modulo " ejb / EJBName " esegui " local " consultare. Se si desidera utilizzare il modulo completo, è necessario selezionare " Abilitazione delle ricerche JNDI globali " sezione di " Utilizzo di JNDI " capitolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top