Upload
srcid
View
798
Download
2
Embed Size (px)
DESCRIPTION
Integración de servlets y sistemas multiagente JADE
Citation preview
Grupo MIÑO
Samuel Rodríguez CidTomás Guerra Cámara
7.1.1 Introducción a los servlets
7.1.2 Introducción al paquete jade.wrapper.gateway
7.1.3 Integrar Servlet y JADE
La palabra servlet deriva de otra anterior, applet.
Applet: pequeños programas escritos en Java que se ejecutan en el contexto de un navegador web.
Servlet: programa que se ejecuta en un servidor.
Los servlets fueron especialmente diseñados para ofrecer contenido dinámico desde un servidor web, generalmente HTML.
Forman parte de JEE (Java Enterprise Edition), que es una ampliación de JSE (Java Standard Edition).
Los servlets son objetos que corren dentro del contexto de un contenedor de servlets y extienden su funcionalidad.◦ Ejemplo contenedor de servlets: Tomcat
También podrían correr dentro de un servidor de aplicaciones que además de contenedor para servlet tendrá contenedor para objetos más avanzados como son los EJB.◦ Ejemplo servidor de aplicaciones: OC4J Oracle
Implementan la interfaz javax.servlet.Servlet.
Heredan alguna de las clases más convenientes para un protocolo específico ◦ Ejemplo: javax.servlet.HttpServlet
Al implementar esta interfaz el servlet es capaz de interpretar los objetos de tipo HttpServletRequest y HttpServletResponse
La interface Servlet
◦ void destroy(): Es llamado por el contenedor del servlet para finalizar el servlet.
◦ ServletConfig getServletConfig(): Devuelve un objeto ServletConfig que contiene los parámetros de inicialización del sevlet
◦ String getServletInfo (): Devuelve información del servlet como el autor,versión ...etc.
◦ void init (ServletConfig config): Es llamado por el contenedor de servlets para poner en funcionamiento un servlet.
◦ void service (ServletRequest req, ServletResponseres): Es llamado por el contenedor de servlets para permitir al servlet contestar a una petición.
Utilizaremos la clase javax.servlet.HttpServlet
Nos permitirá sobreescribir los métodos necesarios para la correcta:
◦ Inicialización
◦ Destrucción
◦ Proceso de peticiones get/post
Métodos javax.servlet.HttpServlet
◦ doGet, para el proceso de peticiones get
◦ doPost, para el proceso de peticiones post
◦ doPut, para el proceso de peticiones put
◦ doDelete, para el proceso de peticiones delete
◦ init and destroy, manejo de recursos que serán útiles en la vida del servlet
◦ getServletInfo, provee información sobre el servlet como autor,versión...
Mostraremos las partes básicas de un servlet.
El servlet recibirá una petición get de una página html.
Mostrará la hora de la petición y un campo nombre.
El paquete principal de Jade que utilizaremos para la comunicación con el servlet es jade.wrapper.gateway,el cual incluye las clases:
◦ JadeGateway
◦ GatewayAgent
◦ GatewayBehaviour
JadeGateway
Esta clase será nuestro punto de entrada
Crea una pasarela para poder conectar código no JADE con sistemas multiagente basados en JADE.
Esta pasarela mantendrá un agente (de la clase GatewayAgent) que será el que se comunique directamente con nuestro servlet.
La activación / terminación de este agente se gestiona completamente mediante la clase JadeGateway, no hace falta que el programador se preocupe por ello.
JadeGateway permite dos formas de implementar la pasarela que utilizaremos para la comunicación:
◦ Crear un agente que derive de GatewayAgent.
(La que usaremos en los ejemplos).
◦ Implementar un comportamiendo que derive de la clase GatewayBehaviour.
Crear un agente que derive de GatewayAgent
Tendremos que implementar dos métodos:
◦ processCommand: Establecerá la comunicación, recibiendo por parámetro un objeto que contiene la información que necesitamos para realizar las operaciones oportunas.
◦ releaseCommand: Una vez se hayan completado las operaciones a realizar por el sistema multiagente, se devolverá el objeto al servlet, con la información de respuesta que se estime oportuna.
Este ciclo de comunicación podrá repetirse hasta que terminemos el agente de pasarela que hemos creado llamando a la función JadeGateway.shutdown().
Implementar un comportamiendo que derive de GatewayBehaviour
Consiste en implementar un comportamiendo que derive de la clase GatewayBehaviour, para que un agente propio (sin que tenga que derivar de GatewayAgent ) pueda funcionar como pasarela.
Añadiremos a nuestro agente una instancia de un comportamiento que derive de GatewayBehaviour.
También tendrá que implementar los métodos que vimos antes, processCommand y releaseCommand.
El agente que actúe como pasarela, será iniciado desde el servlet, por medio del método
JadeGateway.init()
Recibirá como parámetros:
◦ El nombre de la clase que implementa el agente
◦ Host y el Puerto en el que se está ejecutando la plataforma Jade con la que nos queremos comunicar.
Una vez iniciado, realizaremos la comunicación por medio del método JadeGateway.execute()
Le pasaremos el objeto que se recibirá en el agente pasarela por medio de processCommand().
Finalmente, si queremos terminar nuestro agente pasarela, utilizaremos el método JadeGateway.shutdown().
◦ Validaremos un nombre de usuario y contraseña contra JADE.
◦ Procesaremos los datos desde el formulario de entrada hasta el agente pasarela, el cual comprobará si el usuario y la contraseña son iguales a ‘root’.