Escolar Documentos
Profissional Documentos
Cultura Documentos
Facultad de ingeniería
1
INDICE
Tema No
Introducción 3
Objetivo 3
Análisis de requisitos 4
Requisitos del sistema 4
Desarrollo de la aplicación 4
Codificación del módulo EJB 5
Creando Bean dirigido por mensaje 6
Creando la sesión Facade 8
Creación de la NewListServelet 9
Creando el servelet postMesagge 9
Ejecución del proyecto 11
Referencias 12
2
Introducción.
En este proyecto se craa una aplicación empresarial a un usuario publicar y recuperar mensajes de una
base de datos . La aplicación tiene un módulo EJB y uno web, donde el módulo EJB contiene na clase
de identidad un facade de sesión para la clase entidad y un bean controlado por mensaje.
El módulo web contiene servlets para mostrar y publicar mensajes y un bean de sesión singleton que
cuenta el número de usuarios en la sesión.
- Web Teir. El Nivel Web contiene la lógica de presentación de la aplicación y se ejecuta en un servidor
Java EE. En la aplicación NewsApp, el nivel web está representado por el módulo web y contiene
servlets que acceden a la lógica de negocios en el módulo EJB.
- Business Teir. Las aplicaciones de nivel empresarial también se ejecutan en servidores Java EE y
contienen la lógica empresarial de la aplicación. En la aplicación NewsApp, el nivel de negocio está
representado por el módulo EJB. El módulo EJB contiene el código que maneja las solicitudes de los
clientes del Nivel Web y administra las transacciones y cómo los objetos se conservan en la base de
datos.
Objetivo.
El objetivo de este sistema es realizar una aplicación que ocupe la tecnologia de JEE y el EJB para el
manejo de mensajes en una base de datos por medio de un servidor en una página web.
3
Análisis de requisitos
Desarrollo de la aplicación
La aplicación inicia desarrollando el módulo EJB y el módulo web, también se crea el servidor
GlassFish 5. en la figura 1 se muestra la creación de dichos módulos.
4
Figura 2 Módulos creados
Cada clase va a tener una clave primaria con la anotaicón @Id agregada por la IDE al momento de
crear @Entity y también agrega la anotación @GeneratedValue y especifica la estrategia de generación
de claves.
En la figura 3 se muestra la creación de NewsEntity con n paquete EJB y el jdbc smaple para la base de
datos
Una vez
creado
el nuevo
@Entity
se debe
agregar
en la
clase
NewsEn
tity, las
siguient
es lineas
de
Figura 3 Creacion de una nueva Entity
5
código
Con este código se crear getters y setters para los diferentes campos
En este paso se creara el bean de mensajes y los recursos necesario del JMS el cual aydará a la
comunicación asíncrona de JEE entre el servidor y el cliente. . El bean controlado por mensajes recibe
y procesa los mensajes enviados a la cola por un servlet en el módulo web. La figura 4 muestra la
creación del Bean dirigido por mensaje.
Una vez realizado esto en la clase NewsEntity se agrego la anotación @MessageDriven y se configura
la clase con las siguientes linea de código.
6
Estas especificaiones de EJB permiten usar anotaciones para introducir recursos de forma directa a una
clase. Ahora usará anotaciones para introducir el recurso MessageDrivenContext en su clase y luego
inyectará el recurso PersistenceContext que será utilizado por la API EntityManager para administrar
las instancias de entidad persistente
Inyección de MessageDrivenContext
@Resource
private MessageDrivenContext mdc;
@PersistenceContext(unitName = "NewsApp-ejbPU")
private EntityManager em;
7
Se creará para la clase NewsEntity, por medio de la cual sin hacer uso de una interfaz los clientes
usarán los servlets en la aplicación web accederán al bean a través de una vista sin interfaz. La figura 5
muestra la creación de la sesión Facade.
La especificación EJB 3.1 introduce la anotación @Singleton que le permite crear fácilmente beans de
sesión singleton. EJB 3.1 también define anotaciones adicionales para configurar las propiedades de los
beans de sesión singleton, como cuando se crea una instancia del bean.
Después de que se haya instanciado el bean de sesión Singleton, existe para el ciclo de vida de la
aplicación. Como su nombre lo indica, solo puede haber una instancia única de un bean de sesión
Singleton en la aplicación. Al igual que los beans de sesión sin estado, los beans de sesión singleton
pueden tener varios clientes. En la figura 7 se muestra la creacion del singlenton de sesión.
8
Después se agrega la anotación @WebListener y se implementa HttpSesionListener
@LocalBean
@WebListener
public class SessionManagerBean implements HttpSessionListener{
private static int counter = 0;
Se creara un servelet simple para mostrar los mensajes almacenados. Utilizará anotaciones para llamar
a NewsEntityFacade de enterprise bean desde el servlet.
El IDE agregara la anotación @EJB para inyectar el enterprice bean, esto mostrará las siguientes
lieneas de código
@EJB
private SessionManagerBean sessionManagerBean;
@EJB
private NewsEntityFacade newsEntityFacade;
out.println("<br><br>");
out.println(sessionManagerBean.getActiveSessionsCount() + " user(s) reading the
news.");
out.println("</body>");
@WebServlet(name="PostMessage", urlPatterns={"/PostMessage"})
9
public class PostMessage extends HttpServlet {
@Resource(mappedName="jms/NewMessageFactory")
private ConnectionFactory connectionFactory;
@Resource(mappedName="jms/NewMessage")
private Queue queue;
response.setContentType("text/html;charset=UTF-8");
// Add the following code to send the JMS message
String title=request.getParameter("title");
String body=request.getParameter("body");
if ((title!=null) && (body!=null)) {
try {
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer = session.createProducer(queue);
message.setObject(e);
messageProducer.send(message);
messageProducer.close();
connection.close();
response.sendRedirect("ListNews");
Se agrega las siguientes líneas de código al método processRequest para agregar el formulario web
para agregar un mensaje.
out.println("</body>");
10
Ejecución del proyecto
Para ejecutar el proyecto por primera vez se cra una lista nueva en el campo de text URL después el
proyecto se ejecuta dando clic derecho y seleccionando la opción RUN ina vez echo esto se inicia el
servidor y el servelet ListNew se abre en un navegador de internet. Al inicio se verá vasio puesto que
no tiene mesnajes escritos ya que la base de datos no tiene datos, pero se puede agregar mensajes y
estos se irán guardando en la base de datos.
Cuando agrega un mensaje con el servlet PostMessage, el mensaje se envía al bean controlado por
mensajes para escribir en el almacenamiento persistente y se llama al servlet ListNews para mostrar los
mensajes en la base de datos. La lista de mensajes en la base de datos recuperada por ListNews a
menudo aún no contiene el nuevo mensaje porque el servicio de mensajes es asíncrono. La figura 8
muestra la aplicación en ejecución.
La fiugra 9 muestra la aplicación con mensajes escritos anteriormente y la figura 10 muetra la parte de
la aplicación donde se redacta el mensaje y el titulo
11
Referencias
https://netbeans.org/kb/docs/javaee/javaee-entapp-ejb.html#
12