Pregunta

Tengo problemas para migrar de OC4J 10.1.2.3 a 10.1.3.1.4. El problema es para las aplicaciones que tienen múltiples EJB (todos son 2.1, no EJB 3.0). Jdeveloper tomará el ejb-jar.xml predeterminado (el que se requiere para que Jdeveloper lo ejecute en su instancia de OC4J independiente) y lo empaquetará en cada módulo EJB JAR. Esto hace que el servidor de aplicaciones penetre en cada módulo EJB JAR al implementar, y encuentre el mismo archivo ejb-jar.xml N veces (donde N = número de módulos EJB). Esto da como resultado referencias de EJB duplicadas y romperá cualquier búsqueda de JNDI como: " java: comp / env / ejb / EJBName " ;. De este modo, la implementación de una aplicación que tiene 3 EJB, EJB1, EJB2 y EJB3 hace que el servidor de la aplicación registre 9 EJB en lugar de 3. Necesito las mejores prácticas, pero entre la forma en que 10.1.3.4 y JDeveloper están actuando. es bastante grave ...

Nota al margen: funcionarán si el código de búsqueda JNDI de la aplicación web se refractora a solo " ejb / EJBName " Sin embargo, esto no es deseable.

¿Fue útil?

Solución 2

El problema fue la referencia múltiple en nuestros perfiles de implementación. Creamos un perfil de despliegue para CADA EJB. Esto significaba que cada EJB tenía su propio ejb-jar.xml (este archivo contenía una descripción de todos los EJBS en el proyecto). Por lo tanto, cada vez que JDeveloper creaba un EJB, colocaba un descriptor de todos los EJBS en cada EJB que generaba, causando una cantidad de referencias NxN. Por lo tanto, Nx (N-1) referencias adicionales.

Ahora, el punto clave es que Oracle Application Server 10.1.2.3.0 y a continuación no se preocuparon por estas referencias duplicadas. Sin embargo, como podemos ver, 10.1.3.1.4 es una versión muy diferente y se rompió.

Nuestra solución: tener solo un perfil de Despliegue de EJB que contenga todas las clases de EJB y los POJO que usan. Recuerde, antes de que hubiera 1 perfil EJB para cada EJB ... Todo esto fue permitir que Jdeveloper (que es IMHO imbécil) correctamente genere un EAR válido. Una combinación de la mierda de Jdeveloper y Oracle Application Server es la causa de esto.

Otros consejos

Debe consultar la documentación de Oracle para ver cuál es su caso. La Guía del desarrollador de Oracle® Containers para J2EE Enterprise JavaBeans es un buen comienzo De acuerdo con la Guía de servicios de Oracle® Containers for J2EE, capítulo 2: Uso de JNDI cuando utiliza el formulario " ejb / EJBName " realiza " local " buscar. Si desea utilizar el formulario completo, debe marcar la casilla " Habilitación de búsquedas globales en JNDI " sección de " Utilizando JNDI " capítulo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top