Aglets
Sumário Download e Instalação Configuração do Eclipse Desenvolvimento de Agentes
Aglets – Preparação do ambiente O ambiente Aglets necessita de uma máquina virtual Java para rodar Para o desenvolvimento de agente também é necessário um kit de desenvolvimento Java http://java.sun.com/j2se/5.0/download.jsp Download JDK Após instalação, a pasta bin do JDK deve ser incluída no PATH do sistema operacional. O desenvolvimento dos agentes pode ser feito em qualquer editor Aqui será detalhada a configuração do Eclipse (www.eclipse.org) para permitir a execução e depuração de agentes
Aglets - Download Página: http://aglets.sourceforge.net Download: Binários: http://prdownloads.sourceforge.net/aglets/aglets-2.0.2.jar Fontes: http://prdownloads.sourceforge.net/aglets/aglets-2.0.2-src.jar Manual do Usuário: http://prdownloads.sourceforge.net/aglets/manual.pdf
Aglets - Instalação Descompactar aglets-2.0.2.jar (Ex: c:\aglets) Pelo prompt de comando Ir à pasta bin Executar: ant Executar: ant install-home Scripts de instalação e execução Arquivos de configuração Bibliotecas Onde devem residir os agentes desenvolvidos
Aglets - Execução Editar arquivo cnf/aglets.props Descomentar linha: aglets.secure=false Isso permite que agentes acessem arquivos e executem outras operações que não seriam permitidas Pelo prompt de comando Ir à pasta bin Executar: agletsd -f ..\cnf\aglets.props
Eclipse – Criar Projeto Criar um projeto Java Usar pasta de instalação do Aglets como pasta do projeto
Eclipse – Criar Projeto Usar a pasta public como Output Folder Isso faz com que as classes compiladas pelo Eclipse sejam colocadas automaticamente no lugar certo Projeto Criado
Eclipse – Rodar Tahiti Project Properties Java Build Path Libraries Add Class Folder Selecionar a pasta lib
Eclipse – Rodar Tahiti Menu Run, Run... Criar nova Configuração Nome: Aglets Project: Aglets Main Class: com.ibm.awb.launcher.Main
Eclipse – Rodar Tahiti Ainda na mesma tela Arguments Program Arguments: “-f C:\aglets\cnf\aglets.props” VM Arguments: “-Daglets.home=C:\aglets” Run
Eclipse – Criando Agentes Para criar agentes, é preciso primeiro configurar uma pasta para os fontes do agente Project Properties Java Build Path Source Add Folder Criar e selecionar a pasta src
Eclipse – Criando Agentes Opcionalmente, pode-se adicionar os fontes do Aglets ao Eclipse, para que a documentação associada fique disponível Project Properties Java Build Path Libraries aglets-2.2.2.jar Source attachments Edit
Programando Agentes Agentes são criados estendendo-se a classe Aglet Alguns métodos dessa classe, que podem ser sobrescritos, são invocados pelo ambiente para indicar eventos void onCreation(Object init) void run() void onDisposing() boolean handleMessage(Message message)
void onCreation(Object init) Este método é chamado logo após o agente ter sido criado O parâmetro init contém um possível argumento passado ao agente na hora da criação, ou null
void run() Este método é chamado quando um agente é: Criado (após onCreation) Enviado para outro computador (após chegar) Chamado de volta para o computador de onde foi criado (após chegar) Reativado (devido a uma chamada a deactivate)
void onDisposing() Este método é chamado quando o agente estiver prestes a ser destruído, devido a uma chamada ao método dispose.
boolean handleMessage(Message message) É chamado sempre que uma mensagem chega ao agente O parâmetro message possui: Um atributo kind (String) que identifica o tipo da mensagem Parâmetros opcionais O método deve retornar false caso a mensagem recebida não seja suportada. Neste caso uma exceção ocorrerá em quem mandou a mensagem
Criando Agentes Agentes podem ser criados pela interface do Tahiti, ou programaticamente Para criá-los pelo Tahiti, basta informar a classe (incluindo nome de package) A opção Add to List adiciona o agente à lista de favoritos
Criando Agentes Para criar agente via programação, deve-se fazer da seguinte forma: AgletProxy proxy = null; AgletContext context = getAgletContext(); try { proxy = context.createAglet(null, "classe.do.Agente", <parâmetro>); } catch (Exception e) e.printStackTrace();
AgletProxy É através de proxies que se interage com agentes A classe AgletProxy oferece (entre outros) os seguintes métodos Object sendMessage(Message msg) Envia uma mensagem, e espera void dispose() Destrói o agente AgletProxy dispatch(URL address) Manda o agente para o endereço indicado
Como fazer os agentes se encontrarem Para fazer com que um agente possa enviar mensagens a outro é preciso primeiramente obter o proxy dele. Quando se cria um agente, isso é fácil. O proxy já é retornado quando se efetua a criação
Como fazer os agentes se encontrarem Quando os agentes não tem uma relação de “parentesco”, pode-se guardar o proxy do agente no AgletContext, associando-o a uma String AgletContext context = getAgletContext(); context.setProperty("XPT0", getProxy());
Como fazer os agentes se encontrarem Outros agentes podem recuperar este proxy, lendo a propriedade do AgletContext AgletContext context = getAgletContext(); AgletProxy p = (AgletProxy) context.getProperty("XPT0");