Java Agent DEvelopment Framework Systemy Agentowe Michaª Wójcik Katedra Architektury Systemów Komputerowych Wydziaª Elektroniki, Telekomunikacji i Informatyki Politechnika Gda«ska 27 pa¹dziernika 2011 Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 1 / 30
Konspekt 1 Uruchomienie Bezpiecze«stwo SSL i uwierzytelnianie Bezpiecze«stwo topologia pier±cie«2 Agent Zewn trzne aplikacje Dziaªanie agenta 3 Migracja Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 2 / 30
Uruchomienie Uruchamianie kontenerów jade: java -cp $CLASSPATH jade.boot -nomtp wyª czenie usªug komunikacji, -icps ustawienie protokoªów komunikacji, -backupmain zapasowy gªówny kontener, -services usªugi uruchomione na platformie: jade.core.replication.mainreplicationservice, jade.core.replication.adressnotocationservice, jade.core.mobility.agentmobilityservice. Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 3 / 30
Kontenery AgentPlatform Main-Container Container-1 RMA ams a2 a5 df Container-2 a1 a4 a3 a6 Rysunek: Kontenery w JADE Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 4 / 30
Kontenery poª czenie SSL AgentPlatform Main-Container keystore0 Container-1 keystore1 Container-2 keystore2 Rysunek: Kontenery w JADE Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 5 / 30
Uwierzytelnienie AgentPlatform Main-Container keystore0 Container-1 keystore1 truststore1 truststore0 Container-2 keystore2 truststore2 Rysunek: Kontenery w JADE Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 6 / 30
Poª czenie SSL i Uwierzytelnienie uruchomienie java -Djavax.net.ssl.keyStore=keystore -Djavax.net.ssl.keyStorePassword=storepass -Djavax.net.ssl.keyPassword=storepass -Djavax.net.ssl.trustStore=truststore -Djavax.net.ssl.trustStorePassword=storepass jade.boot -host hostname -port 5500 -local-host localhostname -local-port 5500 -nomtp -icps jade.imtp.leap.jicp.jicpspeer Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 7 / 30
Java keytool Java keytool - Key and Certicate Management Tool. Przykªadowe wywoªania: keytool -genkey -alias name -keyalg RSA -dname CN=jade, OU=unit, O=org, L=city, ST=state, C=PL -keystore keystore -keypass storepass -storepass storepass keytool -export -keystore keystore -storepass storepass -alias name -le name.cer keytool -import -keystore truststore -storepass storepass -alias name -le name.cer -noprompt Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 8 / 30
Topologia gwiazdy Container-1 Main-Container Container-3 Container-2 Rysunek: Topologia gwiazdy w JADE Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 9 / 30
Pier±cie«Container-1 Main-Container-2 Main-Container-3 Main-Container-1 Container-3 Container-2 Rysunek: Pier±cie«w JADE Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 10 / 30
Pier±cie«uruchomienie java jade.boot -host hostname -local-host localhostname -port 5500 -local-port 5500 -container-name name -services jade.core.replication.mainreplicationservice; jade.core.replication.addressnoticationservice java jade.boot (host & port) -container-name name1 -backupmain -services jade.core.replication.mainreplicationservice; jade.core.replication.addressnoticationservice java jade.boot -container (host & port) -container-name name2 -gui -services jade.core.replication.addressnoticationservice Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 11 / 30
Pier±cie«+ szyfrowanie i uwierzytelnienie uruchomienie java -Djavax.net.ssl.keyStore=keystore1 -Djavax.net.ssl.keyStorePassword=mysecretpassword -Djavax.net.ssl.trustStore=truststore1 jade.boot (host & port) -container-name name1 -nomtp -icps jade.imtp.leap.jicp.jicpspeer -services jade.core.replication.mainreplicationservice; jade.core.replication.addressnoticationservice java (keystore, password, truststore) jade.boot (host & port) -container-name name2 -backupmain -nomtp -icps jade.imtp.leap.jicp.jicpspeer -services jade.core.replication.mainreplicationservice; jade.core.replication.addressnoticationservice java (keystore, password, truststore) jade.boot -container (host & port) -container-name name3 -gui -nomtp -icps jade.imtp.leap.jicp.jicpspeer -services jade.core.replication.addressnoticationservice Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 12 / 30
Gateway Problem: agenty komunikuj si tylko w ±rodowisku agentowym, potrzeba komunikacji z zewn trz. Uruchomienie: import j a d e. u t i l. l e a p. P r o p e r t i e s ; P r o p e r t i e s p r o p e r t i e s = new P r o p e r t i e s ( ) ; p r o p e r t i e s. s e t P r o p e r t y ( " h o s t ", " des16 " ) ; System. s e t P r o p e r t y ( " k e y s t o r e ", " keystore_name " ) ; JadeGateway. i n i t ( " g a t e w a y _ a g e n t _ c l a s s ", p r o p e r t i e s ) ; O b j e c t command = new Command ( ) ; JadeGateway. e x e c u t e ( command ) ; Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 13 / 30
Gateway p u b l i c c l a s s MyAgent extends GatewayAgent { @ O v e r r i d e protected void processcommand ( O b j e c t command ) { releasecommand ( command ) ; } } Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 14 / 30
Skomplikowane zachowania Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 15 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 16 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 17 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 18 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 19 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 20 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 21 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 22 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 23 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 24 / 30
Zachowanie Rysunek: Zachowania agenta Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 25 / 30
Migracja konguracja p u b l i c MyAgent extends Agent { @ O v e r r i d e protected void s e t u p ( ) { ContentManager cm = getcontentmanager ( ) ; cm. r e g i s t e r L a n g u a g e ( new SLCodec ( ) ) ; cm. r e g i s t e r O n t o l o g y ( M o b i l i t y O n t o l o g y. g e t I n s t a n c e ( ) ) ; } } Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 26 / 30
Migracja przed i po @ O v e r r i d e protected void beforemove ( ) { System. out. p r i n t l n ( " l e a v i n g " ) ; } // s a v e s t a t e // s t o p t h r e a d s @ O v e r r i d e protected void a f t e r M o v e ( ) { System. out. p r i n t l n ( " h e r e I am" ) ; } // r e s t o r e s t a t e // resume t h r e a d s Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 27 / 30
Migracja lista kontenerów I p u b l i c L i s t g e t C o n t a i n e r s ( ) { Q u e r y P l a t f o r m L o c a t i o n s A c t i o n q u e r y ; q u e r y = new Q u e r y P l a t o f r m L o c a t i o n s A c t i o n ( ) ; ACLMessage r e q u e s t ; r e q u e s t = new ACLMessage ( ACLMessage. REQUEST ) ; r e q u e s t. s e t L a n g u a g e ( new SLCodec ( ). getname ( ) ) ; r e q u e s t. s e t O n t o l o g y ( M o b i l i t y O n t o l o g y. g e t I n s t a n c e ( ). getnam r e q u e s t. a d d R e c e i v e r ( getams ( ) ) ; A c t i o n a c t i o n = new A c t i o n ( getams ( ), q u e r y ) ; ContentManager cm = getcontentmanager ( ) ; t r y { cm. f i l l C o n t e n t ( r e q u e s t, a c t i o n ) ; send ( r e q u e s t ) ; } catch ( E x c e p t i o n e ) { } Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 28 / 30
Migracja lista kontenerów II L i s t l o c a t i o n s = n u l l ; MessageTemplate mt ; mt = MessageTemplate. MatchSender ( getams ) ; ACLMessage msg = b l o c k i n g R e c e i v e ( mt ) ; t r y { C o n t e n t E l e m e n t ce = cm. e x t r a c t C o n t e n t ( msg ) ; l o c a t i o n s = ( ( R e s u l t ) ce ) g e t I t e m s ( ) ; } catch ( E x e c e p t i o n e ) { } } r e t u r n l o c a t i o n s ; Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 29 / 30
Migracja L i s t <L o c a t i o n > l o c a t i o n s = g e t L o c a t i o n s ( ) ; L o c a t i o n l o c a t i o n = l o c a t i o n s. g e t ( 0 ) ; myagent. domove ( l o c a t i o n ) ; myagent. doclone ( l o c a t i o n, "new_name" ) ; Michaª Wójcik (KASK, ETI, PG) JADE 27 pa¹dziernika 2011 30 / 30