2009-05-26 8 views
15

revisar algunas de exámenes anteriores para un examen se centran principalmente en el diseño orientado a componentes y J2EE, que han llegado a través de la siguiente pregunta:EJB - Inicio/remoto y LocalHome/interfaces locales

Una investigación preliminar del escenario 3 : "Solicitud de intercambio" sugiere que dos EJB proporcionarán una solución adecuada: un bean de sesión llamado EnterExchangeRequest para controlar el procesamiento y un bean de entidad llamado ExchangeRequest para representar las propiedades persistentes de la solicitud. Discutir el papel de las siguientes interfaces:

  • Inicio
  • remoto
  • LocalHome
  • local

y cómo iban a facilitar el acceso a los servicios de los EJB se ha descrito anteriormente.

que podría tratar de explicar cómo Home y Remote interfaces de encajarían en la imagen. También he escuchado al profesor decir que uno podría reemplazar Home por LocalHome, y Remote por Local (¿por qué?), Pero ¿por qué me piden que hable sobre el papel de los cuatro al mismo tiempo?


lo consigo derecho cuando digo, el contenedor EJB (el servidor de aplicaciones) daría cuenta de que una interfaz es Home o Remote y luego decidir que el grano puede 'en vivo' en cualquier máquina en el clúster, mientras que en el caso de que las interfaces sean LocalHome y Local, el contenedor sabrá que los beans no se pueden distribuir a través de varias máquinas y, por lo tanto, los mantendrá "vivos" en una sola máquina.


Estoy totalmente perdido en esta jungla Java empresarial. Estoy experimentando un BeanOverflow. Podrían decirme cuáles de mis suposiciones son incorrectas, señalar mis ideas erróneas y errores.

Gracias a todos los que están dispuestos a ayudarme con estas interfaces EJB.

P.S. Tenga en cuenta que no le pido que responda la pregunta del documento de examen anterior. Solo curiosidad si tienes alguna idea sobre qué podrían estar buscando cuando preguntes esto.

+10

confundido? Únete al club. – Cheeso

+0

Siento que son hombres, estoy teniendo BeanOverflow :) –

Respuesta

6

Home es responsable de la creación del control remoto (algo así como su constructor) y LocalHome y Local tienen la misma relación.

En cada caso, el contenedor le proporciona un proxy que hace referencia a la clase EJB real que usted escribe.

Si tuviera que adivinar, lo que la pregunta estaba buscando era el uso de control remoto para el bean de sesión y local para el bean de entidad.

De todos modos, aunque estos conceptos todavía pueden existir, las cosas se han simplificado mucho mejor en EJB3.

EDITAR: En respuesta al comentario, con EJB3, la clase de bean en sí misma puede implementar el control remoto y las interfaces de inicio directamente (para los beans de sesión). Se hacen EJB con una sola anotación.Los beans con estado tienen un par de anotaciones más para tratar con problemas de estado. Los beans de entidad no tienen una interfaz de inicio, y no necesitan una interfaz local, puedes interactuar directamente con el objeto java. Hay un EntityManager que recupera los beans de entidad correctos basados ​​en una consulta, y que EntityManager se inyecta a través de una anotación.

Eso lo resume en un párrafo. Hay excelentes tutoriales en la web para estas cosas, pero los EJB en general resuelven una clase de problema que es difícil de apreciar a menos que resuelvas el problema. No son la única forma de resolverlo, pero a menos que trabajes con este tipo de programación, solo leer sobre él no te ayudará a relacionarte con él.

+0

¿Podría también proporcionar un boceto de cómo se han simplificado las cosas en EJB3? Eso sería bueno saberlo. –

+0

Re: EDITAR, las clases de bean no deben implementar la interfaz de inicio. Mi explicación de las simplificaciones sería: en EJB 3, JPA reemplaza eficazmente beans de entidad, pero si usa beans de entidad, aún debe usar una interfaz de inicio. Los beans de sesión sin estado no necesitan una interfaz de inicio, y si no se define uno, la interfaz de negocios se puede buscar directamente desde JNDI y almacenar en caché. Los beans de sesión con estado tampoco necesitan una interfaz de inicio, pero si no se utiliza una interfaz de inicio, entonces la búsqueda de JNDI se debe usar como la "fábrica". –

7

Según lo señalado por Yishay, Home/Remote y LocalHome/Local están vinculados entre sí y la interfaz Home funciona como un constructor.

Los beans locales están vinculados a la JVM en la que viven, no se puede acceder desde el exterior. Se puede acceder a beans remotos desde otras JVM.

Uso un enfoque similar: siempre despliego oídos. Frijoles para la oreja Yo hago frijoles locales, Frijoles destinados para el uso de otros oídos que hago a distancia. Pero es posible utilizar los beans locales en otros oídos, siempre que se implementen en el mismo JVM

+2

Según la especificación EJB, "El acceso a un enterprise bean a través de la vista del cliente local solo se necesita para clientes locales empaquetados dentro de la misma aplicación que el enterprise bean que proporciona la vista local del cliente. Las implementaciones compatibles de esta especificación pueden admitir opcionalmente el acceso a la vista del cliente local de un enterprise bean desde un cliente local empaquetado en una aplicación diferente. [...] Las aplicaciones que dependen del acceso entre aplicaciones a la vista del cliente local no son portátiles. –