Este documento describe cómo integrar un servlet con la plataforma multiagente JADE utilizando la clase JadeGateway. Se explica que JadeGateway crea una pasarela que permite la comunicación entre código no JADE como un servlet y agentes en JADE. También se detalla cómo crear un agente que herede de GatewayAgent o implementar un comportamiento que herede de GatewayBehaviour para establecer esta pasarela de comunicación. Finalmente, se proporciona un ejemplo de cómo validar las credenciales de usuario introducidas en un formulario de servlet contra
1. Integración de JADE con Servlet Grupo MIÑO Samuel Rodríguez Cid Tomás Guerra Cámara
2. 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 Contenido
3. 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. Introducción a los servlets
4. 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). Introducción a los servlets
5. 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 Introducción a los servlets
6. 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 Introducción a los servlets
7. La interface Servlet voiddestroy(): Es llamado por el contenedor del servlet para finalizar el servlet. ServletConfiggetServletConfig(): Devuelve un objeto ServletConfig que contiene los parámetros de inicialización del sevlet Introducción a los servlets
8. StringgetServletInfo (): Devuelve información del servlet como el autor,versión ...etc. voidinit (ServletConfigconfig): Es llamado por el contenedor de servlets para poner en funcionamiento un servlet. void service (ServletRequestreq, ServletResponseres): Es llamado por el contenedor de servlets para permitir al servlet contestar a una petición. Introducción a los servlets
9. 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 Introducción a los servlets
10. 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 initand destroy, manejo de recursos que serán útiles en la vida del servlet getServletInfo, provee información sobre el servlet como autor,versión... Introducción a los servlets
11. 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. Ejemplo servlet
12. 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 Paquete jade.wrapper.gateway
13. 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. Paquete jade.wrapper.gateway
14. 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. Paquete jade.wrapper.gateway
15. 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(). Paquete jade.wrapper.gateway
16. 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. Paquete jade.wrapper.gateway
17. 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. Paquete jade.wrapper.gateway
18. 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(). Paquete jade.wrapper.gateway
19. 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’. Integrar Servlet y JADE