1. ¿Qué es EJB?
EJB (Enterprise Java Beans) es una tecnología de componentes de aplicación comercial en Javaee y es uno de los tres componentes principales de Javaee (Servlet, JSP, EJB). EJB proporciona un marco para permitir a los clientes usar objetos distribuidos remotos, simplificando enormemente el desarrollo de aplicaciones de nivel empresarial con buena escalabilidad. La estructura del componente EJB es una estructura informática distribuida basada en componentes y es un componente en un sistema de aplicación distribuido.
EJB es una especificación del marco de servicio del lado del servidor Java y define una especificación técnica para el sistema de componentes del lado del servidor. Esta especificación puede proporcionar una arquitectura estándar, distribuida y orientada a objetos. Bloquea implementaciones funcionales subyacentes a nivel de sistema complejos para desarrolladores y usuarios de componentes, lo que permite a los desarrolladores centrarse en la implementación de la lógica empresarial, y algunos de los servicios subyacentes complejos son responsables de los contenedores EJB. EJB se puede ampliar de acuerdo con el crecimiento de la aplicación, y el servidor EJB proporciona funciones de equilibrio de carga, así como control de acceso a recursos.
2. Comunicación entre el contenedor EJB y los componentes
Los contenedores EJB proporcionan un entorno operativo para los componentes EJB. La forma en que los contenedores de EJB administran EJB es similar a la forma en que los contenedores web administran servlets. Los EJB deben funcionar en contenedores EJB. Los contenedores EJB administran principalmente la persistencia de EJB, la gestión del ciclo de vida, la gestión de la seguridad, la gestión de transacciones, la conexión remota, el procesamiento concurrente, la agrupación y el equilibrio de carga. El contenedor administra instancias de componentes EJB, lo que permite que los componentes EJB logren el máximo rendimiento y la utilización de la memoria. El contenedor puede activar y pasive de componentes EJB, administrar grupos de instancias, etc. Los contenedores son responsables de administrar problemas complejos del procesamiento de transacciones distribuidas, administrar problemas de comunicación de bajo nivel para conexiones remotas y ocultar problemas de comunicación para los desarrolladores y clientes de componentes de EJB. Por lo tanto, los desarrolladores de componentes EJB pueden centrarse en encapsular la lógica comercial, y los contenedores son responsables de manejar todas las demás transacciones. EJB interactúa con contenedores a través de mecanismos como EJBContent, JNDJ, funciones de devolución de llamada.
JBoss es un contenedor y un servidor que administra EJB, admite las especificaciones EJB1.1, EJB2.0 y EJB3, y generalmente está vinculado a Tomcat o Jetty.
Consulte la Figura 1 (el esquema de trabajo del contenedor EJB):
Figura 1: Principio de trabajo del contenedor EJB
Un componente EJB es un objeto distribuido que, cuando está instanciado, puede comunicarse con aplicaciones en otros espacios de dirección. La instancia de EJB se encapsula en un objeto esqueleto, que se comunica con el cliente a través de un objeto Stub. El stub no incluye la lógica de negocios, pero implementa una interfaz comercial. Cada vez que se llama a un método comercial en la interfaz comercial de Stub, el stub envía un mensaje de red al marco y le dice a qué métodos ha llamado. El marco llama al método correspondiente de la instancia de EJB y envía los resultados devueltos por la instancia EJB al stub, y el stub devuelve estos resultados a la aplicación correspondiente. A través de los dos objetos, trozos y marcos intermedios, se bloquea el complejo proceso de comunicación entre objetos distribuidos. El marco es implementado por contenedores, mientras que los stubs son generados automáticamente por herramientas de desarrollo, ninguno de los cuales requiere código de escritura. Consulte la Figura 2 (esquema de comunicación de componentes EJB):
Figura 2: Principio de comunicación entre los componentes EJB
3. Clasificación EJB
Los componentes EJB se pueden dividir en dos tipos: sesion bean y bean impulsado por mensajes. El bean de sesión encapsula la lógica de negocios. El cliente puede llamar a los métodos de beans de sesión a través de servicios locales, remotos y web para acceder a las aplicaciones implementadas en el servidor, llamando así a los métodos de otros frijoles. El bean de sesión no es persistente, es decir, sus datos no se guardan en la base de datos. Entre ellos, el bean de sesión incluye tres tipos: frijoles de sesión con estado, frijoles de sesión sin estado y frijoles de sesión de una sola pieza. Los frijoles basados en mensajes a menudo se usan como oyentes para tipos específicos de mensajes, lo que permite a Javaee manejar mensajes asíncronos, y los clientes no acceden a los frijoles basados en mensajes a través de interfaces.
Lo siguiente presentará el estado de sesión de estado, el bean de sesión sin estado, el bean de sesión de una sola pieza y el bean de sesión impulsado por el mensaje a su vez.
4. Bean de sesión sin estado
Los frijoles de sesión sin estado solo proporcionan lógica comercial para los clientes y no retienen el estado de sesión para los clientes. Cuando el cliente llama al método de un bean de sesión sin estado, las propiedades de la sesión de sesión correspondiente describirán el estado de llamadas, pero solo mantendrán este estado durante la llamada del método. Cuando se termina la llamada del método, se borra el estado.
El ciclo de vida de un bean de sesión sin estado es controlado por el contenedor. Cuando el contenedor EJB recibe la solicitud de un cliente de un bean de sesión sin estado, si el EJB no existe, el contenedor creará una instancia del bean, inyectará los recursos requeridos en el componente y luego el contenedor vuelve a llamar al método posterior a la construcción, y se crea el componente. En este momento, las transiciones de Bean del estado "no existen" al estado de "existencia". Cuando la llamada del cliente está finalizada, el contenedor devuelve el método Predestroy y el bean será destruido. En este momento, el bean se convertirá del estado "existente" al estado "no existente". Consulte la Figura 3 (el ciclo de vida de un frijol de sesión sin estado):
Figura 3: Ciclo de vida de un bean de sesión sin estado
5. Bean de sesión con estado
Una sesión de estado de estado frena conserva un estado de sesión para el usuario. No se puede colocar en el grupo de componentes para que diferentes usuarios compartan como un frijol de sesión sin estado. Para un bean de sesión con estado, siempre que un cliente envíe una solicitud, el contenedor crea una instancia correspondiente al cliente, y un cliente corresponde a una instancia. Durante la vida, la sesión de estado de estado mantiene la información del usuario, y una vez que finaliza la sesión, el ciclo de vida del estado de sesión de estado también termina.
Una sesión de estado de estado tiene tres estados activos: inexistencia, activo y pasivación. Cuando la sesión de estado de estado está activa por un período de tiempo, si la solicitud del cliente externo aún no se recibe, para guardar los recursos del sistema, el contenedor serializará la información de estado en el estado de la sesión de estado en el espacio de almacenamiento temporal y eliminará el bean de sesión de estado de la memoria. Este proceso se llama "pasivación". El contenedor devuelve el método Prepassivate antes de la pasivación. Cuando el contenedor recibe una solicitud de un frijol de sesión con estado que ha sido pasivado, reinicializa la instancia del estado de sesión de la sesión de estado y elimina la información de estado del espacio temporal para devolverla al estado activo. Este proceso se llama "activación". Después de la activación, el contenedor devuelve el método Proactivate. Cuando la sesión de estado de estado de Bean pasiva por un período de tiempo, el contenedor borrará completamente la instancia y volverá a llamar al método Predestroy. Consulte la Figura 4 (el ciclo de vida de un frijol de sesión con estado):
Figura 4: Ciclo de vida de un frijol de sesión con estado
6. Bean de sesión de una habitación de una sola habitación
Un bean de sesión de una sola pieza se instancia una vez para cada aplicación y siempre está presente en todo el ciclo de vida de la aplicación. Un bean de sesión de una sola pieza está diseñado para escenarios específicos, y los clientes pueden acceder a esta instancia de EJB única en un modo compartido y concurrente.
Un bean de sesión de una sola pieza es muy similar a un bean de sesión sin estado. La diferencia es que un bean de sesión de una sola pieza tiene solo una instancia en la aplicación, mientras que un bean de sesión sin estado puede tener muchas instancias, cada instancia se coloca en el grupo de componentes para que los usuarios compartan.
Un bean de sesión de una sola pieza es como un frijol de sesión sin estado, nunca pasivado. Su ciclo de vida solo contiene dos tipos de cuerpos: "inexistencia" y "existencia". Consulte la Figura 5 (el ciclo de vida de un frijol de sesión de una sola pieza):
Figura 5: Ciclo de vida de un frijol de sesión de una sola pieza
7. Bean impulsado por mensajes
Los frijoles basados en mensajes son componentes diseñados para manejar las solicitudes basadas en mensajes específicamente. Los frijoles basados en mensajes integran las funciones del Servicio de Mensajes Java (JMS) y Enterprise Beans. El cliente no puede obtener directamente su referencia y llamar al método, pero solo puede ser iniciado por los mensajes del sistema.
Los contenedores EJB generalmente crean un conjunto de componentes de frijoles basados en mensajes. Similar a los frijoles de sesión sin estado, los frijoles basados en mensajes nunca se pasivan, y su ciclo de vida solo contiene dos etapas: no existencia y existencia.
La clase Bean impulsada por el mensaje debe implementar la interfaz MessageListener. Cuando el contenedor detecta un mensaje en la cola que el bean está escuchando, llama al método OnMessage () y pasa el mensaje como un parámetro.
La comprensión integral anterior del EJB básico de J2EE es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.