Slide 1 - gsigma

Propaganda
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)
 Scripts de instalação e execução
 Arquivos de configuração
 Bibliotecas
 Onde devem residir os agentes desenvolvidos
• Pelo prompt de comando
– Ir à pasta bin
– Executar: ant
– Executar: ant install-home
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, devese 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");
Download