Está en la página 1de 2

Ejecutar una clase java al iniciar tu aplicativo web para iniciar tus agentes en la

plataforma Jade
Para este fin se modifica el archivo web.xml del aplicativo web, agregando el elemento
<listener> el cual define las caractersticas de un evento ("Listener") que ocurre en el
"Servlet Engine", dicho elemento anida en su estructura <filter-class> que indica el
nombre de la Clase Java que contiene la lgica a realizarse una vez ocurrido el evento.
Ejemplo:
Web.xml (los puntos indican que existe un cdigo anterior o siguiente)

</listener>
<listener>
<listener-class>agentes.AgenteJade</listener-class>
</listener>
.

Las clases java:
Esta clase AgenteJade es la que se llama en el elemento <listener>
package agentes;
import jade.wrapper.StaleProxyException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener()
public class AgenteJade implements ServletContextListener {

@Override
public void contextInitialized(ServletContextEvent sce) {
Runjade.init();
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
try {
Runjade.close();
} catch (StaleProxyException ex) {
Logger.getLogger(AgenteJade.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

Esta clase Runjade ejecuta los agentes que se necesitan para el aplicativo

package agentes;

import jade.core.Profile;
import jade.core.ProfileImpl;
import jade.wrapper.AgentController;
import jade.wrapper.ContainerController;
import jade.wrapper.StaleProxyException;

public class Runjade {
private static AgentController ac;
private static AgentController ab;
private static ContainerController cc;
public static void init() {
jade.core.Runtime rt = jade.core.Runtime.instance();
Profile p = new ProfileImpl();
p.setParameter(Profile.CONTAINER_NAME, "Administracion");//se le asigna un nombre al contenedor
Object[] list = {"BD"};
cc = rt.createAgentContainer(p); //se crea un contenedor en la plataforma jade
if (cc != null) {
try { //se crea al agente en el contenedor asignado
ac = cc.createNewAgent("BD", "com.pe.SHCE.agentes.sistema.AgenteBD", null);
ac.start();
ab = cc.createNewAgent("sniffer", "jade.tools.sniffer.Sniffer", list);
ab.start();

} catch (Exception e) {
e.printStackTrace();
}
} //end if
}
public static void close() throws StaleProxyException{
ab.kill();
ac.kill();
cc.kill();
}
}

También podría gustarte