forked from ekiwi/jade-mirror
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
2455 lines (2148 loc) · 139 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MAJOR CHANGES in JADE 4.3.3 (10 12 2014)
==========================================================================
Kernel
- Removed (whenever possible) usage of AID.ISLOCALNAME inside the JADE kernel to ensure compatibility with multi-platform JVMs
- Added in Agent class a method to build a complete agent GUID belonging to the same platform of the current agent
- Some methods of the Agent class are no longer final to support extensions
- Fixed bug in AverageMeasureProviderImpl related to NaN comparison
- Added sanity check to avoid NullPointerException in message encoding (occurred in very particular cases when a container shut downs and resters almost in parallel)
- Added support for DONT_NOTIFY_FAILURE ACLMessage user defined parameter: unlike IGNORE_FAILURE, failure management takes place normally, but AMS FAILURE is not sent
- Modified TimerDispatcher to support different implementations in environments (e.g. Android) that require special handling of wait(ms)
- Modified JICP connection to set the NO-DELAY parameter to avoid long delivery times
- Implemented reachability check of newly joining containers (only reachable containers can join)
- Hopefully fixed problem when using two or more sniffers at the same time (problem notified by Daniela Briola)
- Modified OntologyServer to support "key content elements" which do not implements the ContentElement tagged interface
- Modified OntologyServer to automatically reply only when the incoming message requires a response (REQUEST, PROPOSE...)
- Added Callback interface to support asynchronous operations
- Added JavaCollectionOntology to support managing java.util.List and Set as first-level elements
AMS/DF
- Added support for MultiValueProperty in DF
- Added DFSubscriber utility class to simplify DF subscriptions
- Modified ams to avoid notifying tools about all agents/containers termination when the platform shuts down
JADE-Android
- Added Android specific implementation of the TimerDispatcher class that substitutes wait(ms) with Android Alarms
Add-Ons
- Web Service Dynamic Client (WSDC)
- Updated AXIS library (managed wsdl element "form unqualified")
- Removed log4j dependency
- Implemented logging of SOAP messages
- Miscellaneous (MISC)
- CLI
- Added cli/Shell shutdown() method
- Added support for setting Shell prompt
- Added support for setting a defaultPackage in Shell
- Managed the case where no behaviour is returned by a CLICommand
- Added "Distribution framework" to facilitate the distribution and assignment of generic items to a given set of agents
- added support for defining an ad-hoc implementation of the AssignmentMap
- modified to properly managed the case where the same item is assigned 2 or more times in fast sequence
- added support for retrieving assigned items and keys
- added support for distinguishing between different assignment context (new item, re-assigned item...)
- added support for reconstructing assignments in case of agent restart
- added method getAllAgents() in AgentSelectionPolicy
- Added method getPlatformName() in MainContainerChecker
- Added package test with a few agents useful to programmatically generate unexpected problems
- FileManager: Added support to download multiple files
- Test Suite Framework
- Activated socket keep-alive in RMI TSDaemon
- Modified to support execution of tests that require external libraries
- Modified method to get the network name
DOCUMENTATION
- Revisited O2AInterface example
- Added javadoc to AssignmentManager and related classes in JideMisc
POSSIBLE BACKWARD INCOMPATIBILITIES:
- The signature of the handleServingFailure() method of the OntologyServer class slightly changed:
Second parameter is now a generic Object instead of a ContentElement. There are NO impacts at all for
projects that did not use the OntologyServer class redefining that method.
A part from the above point we do NOT expect any backward incompatibility with respect to the previous JADE version.
MAJOR CHANGES in JADE 4.3.1 (06 12 2013)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added threshold on message delivery time (if exceeded a WARNING is printed)
- Modified MessageManager to manage warningSize, maxSize and sleepTimeFactor
- Added support for trying logical host names first in intra-platform communication (-priviledge-logical-name option)
- Modified getDefaultNetworkName() method of Profile class to retrieve the CanonicalHostName
- Added support for defining storage-enabled nodes and improved logs in PersistentDeliveryService
- Improved support for configuring hosts in UDPNodeMonitoringService
- SAMService: Added addHandler() and removeHandler() methods in service helper to allows agents to dinamically add/remove SAMInfoHandlers.
Added support for managing entity names of the form a/b/c.
Modified AverageMeasureProviderImpl to manage NaN values
Added Provider common interface implemented by all measure providers
- registerO2AInterface() method made public
Interaction Protocols
- Modified Conversation ID generation to ensure unicity. This also fixes a bug reported by Henrique Lopes Cardoso about SubscriptionResponder that overrided Subscriptions from different agents
AMS/DF
- Added support for DF SAM statistics
- Modified AMS to avoid triggering the shutdown hook more than 1 time.
MTPs
- Integrated fix by Svehlak Libor to make the HTTP MTP listen on the address specified in the URL mtp argument
Split Containers
- Added support for retrieving server-time-offset at FrontEnd startup: set the JICPProtocol.GET_SERVER_TIME_KEY = true; Server time offset is made available as a Long (ms) at the JICPProtocol.SERVER_TIME_OFFSET_KEY key.
- Fixed bug in service helper method invocation called by FEServices. Method was not invoked at all.
- Fixed bug on topic based communication when sender and receiver live in the same front end (bug reported by Andrew Trow)
Others
- Added LocalJadeGateway class to support usage of components that uses the JadeGateway from both external programs and agents
- Added Toolkit utilities class with utility method to substitute properties in a given text
Add-Ons
- Web Service Integration Gateway (WSIG)
- Added support for exposing agent actions as REST operations
- Properly managed ontology name/class specified in ServiceDescriptor
- Properly managed type anyType
- Removed Log4J dependency
- Web Service Dynamic Client (WSDC)
- Updated AXIS library
- Implemented logging of SOAP messages
- Removed Log4J dependency
- Miscellaneous (MISC)
- Added support for setting a defaultPackage in jade.cli.Shell.
- Managed the case where no behaviour is returned in CLICommand.
DOCUMENTATION
- Fixed "aclcodecs" option in XMLACLCodec Tutorial
POSSIBLE BACKWARD INCOMPATIBILITIES:
We do NOT expect any backward incompatibility with respect to the previous JADE version.
MAJOR CHANGES in JADE 4.3 (29 03 2013)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for Virtual Replicated Agents to achieve agent fault tolerance
- Fixed annoying NullPointerException when deregistering from special topic "*"
- Added jade.core.management.AgentManagementSlice.SHUTDOWN_PLATFORM Vertical command issued on the
Main Container just before activating platform shutdown.
- Modified SAM service to reactivate polling after Main Container fault on new master Main Container
- Separator character for SAM files made configurable (default is now ';')
- Modified PlatformManager to use default node monitoring when UDPNodeMonitoringService is not installed in the monitored node
- Added support for registering a specific AID to a topic (useful e.g. to register aliases or virtual agent AID)
- Modified the way JADE reads the local host address. Now NetworkInterfaces is used instead of InetAddress.getLocalHost()
- Introduced the possibility to select the version of IP address (ip-version property with value 4 o 6)
Split Containers
- Further improved robustness, fixed bugs and updated logs
- Added support for setting timeouts in the store-and-forward mechanism implemented by FrontEnd and BackEnd.
The timeout can be set globally by means of the MicroRuntime.DEFAULT_SF_TIMEOUT_KEY property and per message by means
of the ACLMessage.SF_TIMEOUT user defined parameter. A timeout of 0 means NO store-and-forward.
- Modified FrontEnd to restart the reconnection mechanism if a command must be delivered after max disconnection time has expired.
- Added support for automatically removing BackEnds whose FrontEnds remain with the connection DROPPED for more than 1 hour (will be made configurable in next release)
- Added support to monitor BEManagementService activities by means of the SAM service
- Added jade_core_MainContainerImpl_ignorechildnodes option to avoid killing child nodes (typically BackEnds) on platform shutdown
- Added support for setting additional services to be activated in BackEnds by means of the <prefix>_additional-services configuration option
Behaviours
- OntologyServer modified to be fully Serializable (Map of cached methods declared transient and properly reinitialized when necessary)
- Added support for setting a specific ConversationList to ignore conversations in an OntologyServer behaviour
- Fixed BUG in WrapperBehaviour class: When calling restart() directly on the WrapperBehaviour, the wrapped behaviour was not restarted.
- getPeriod() method of TickerBehaviour class made protected.
Content Language and Ontologies
- Added utility method getReferencedSchemas() in Ontology class to get all referenced schemas of a schema
- Added support for decoding an SL element that is not a complete content expression in SimpleSLCodec
DF
- Added support to use a custom DF implementation class by means of the jade_core_MainContainerImpl_dfclass configuration option
- Modified DFDBKB to enlarged size of certain columns (e.g. ontology). 32 chars was too short
Others
- Fixed BUG in AMSService.getFailureReason() static method.
- Added utility class ThreadGroupHttpAuthenticator to support setting HTTP proxy authentication at the ThreadGroup level.
instead of the full JVM level.
JADE-LEAP ANDROID
- Access to AgentController and ContainerController made public in AgentHandler and AgentContainerHandler classes respectively
- Introduced the possibility to select the version of IP address (ip-version property with value 4 o 6)
ADD-ONS:
- Web Service Integration Gateway (WSIG)
- Added support to manage the WSIG (connect, disconnect, list services....) by means of a REST based API
- Added LogManagerAgent COS'E'???????????????
- Managed enum or aggregate of emun used in mapperClass but not present in the reference ontology
- Fixed BUG on management of empty array as parameters
- Fixed BUG when mapper class is not present
- Web Service Dynamic Client (WSDC)
- Managed actor/mustUnderstand/relay in soap headers
- Fixed BUG on http basic auth with recursive import
- Miscellaneous Add-On
- Added FileManagerAgent: ready-made agent acting as FileManagerServer
- Added support to download more than one file at once by means of the DownloadMultipleFilesAction action
- Added CLI command Shell and modified existing commands to print on a given PrintStream and not necessarily on the standard output
- Added support for "managing" Out Of Memory Error using the ContainerMonitorAgent
- NEW PKI Add-On (by Amadeusz Zolnowski)
The purpose of the JADE-PKI add-on is to introduce a public key infrastructure into JADE.
The add-on provides security for two areas: agent messaging and agent mobility.
The JADE-PKI might take inspiration from the JADE-Security [1] in some parts of agent messaging area,
therefore the project has the same license.
- XMLCodec Add-On
- Improved decode method to manage xml-aggregates in the form <person>...</person><person>...</person>...
- TestSuite Add-On
- Added handleTermination notification called at the end of SubProcessManager
EXAMPLES:
- Added example on Virtual Replicated Agents
- Modified examples distribution with examples jar file already available (no need to get Jade sources and compile the whole to run examples)
- Added linux script to start JADE demo
DOCUMENTATION:
- Added Tutorial on Virtual Replicated Agents
- Updated WSIG Tutorial with description of Result and Fault management
- Updated WSIG Tutorial with description of the REST-based management interface
- Added page numbers to JADEProgramming-Tutorial-for-beginners
POSSIBLE BACKWARD INCOMPATIBILITIES:
We do not expect any backward incompatibility with respect to the previous JADE version.
MAJOR CHANGES in JADE 4.2 (26 06 2012)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for Object-To-Agent Interface
- Modified to make deliverer Threads terminate when the JADE runtime exits (no more containers in the JVM)
- Modified InternalMessageQueue to include the Agent name in the error message that is printed when a message is discarded.
- Agent Mobility Service: Incoming agent management moved from local slice to target sink to enable user defined services to intercepts the INFORM_MOVED VCommand on destination containers
- SAM (System Activity Monitoring) Service: modified AverageMeasureProviderImpl to avoid keeping the full list of samples.
- UDPNodeMonitoring Service: Added support for specifying host where to bind the UDP server socket
- Changed class property separator from ; to , to avoid confusion with agent specifier separator (problem indicated by Matias SM)
- Added support for startupTag option to facilitate detecting successful JADE startup in separated process.
- Added support for timeout on read operations over JICPConnections. Problem indicated by Mark Bowman (Las Cumbres Observatory)
Split Containers
- Several improvements and fixes in BEManagement Service and related classes to manage split containers with java.nio
- Response timeout made configurable in BackEndDispatcher
- Modified to close "zombie" connections when a front-end disconnects (and the back-end does not detect that) and then reconnects.
Content Language and Ontologies
- Modified LEAPCodec to deal with Strings longer than 65535 chars
DF
- Managed jade_domain_dfservice_searchtimeout property in DFService to avoid synchronous search() to block forever in case of problems
Others
- Fixed compatibility with JAVA 7
- AppletBoot class to embed JADE agents in Java Applets moved from LEAP to JADE
BUG-FIXES:
Fixed bug: Principal and Credentials where not properly transported with the LEAP IMTPManager. Bug reported by Michael C. Smith
Fixed bug: Automatic main detection wild-card * was not properly managed
Fixed bug: Profile.setParameter() did not work properly for parameters that require special handling such as Profile.GUI and Profile.NOMTP. Bug reported by wra.
JADE-LEAP ANDROID
- Completely restructured the Jade Android demo
- Added asynchronous version of MicroRuntimeGateway.execute() method to comply with typical Android programming style
- MicroRuntimeGateway made singleton
- Modified JADE Logger to use android.util.Log in the Android environment
- Excluded unused class in android distribution
ADD-ONS:
- Web Service Integration Gateway (WSIG)
- Added ANT target customize-war to automatically generate a .war file including required application specific classes
- Added support for generating exposed services WSDL offline
- Modified mapper mechanism so that it is now possible to use beans not included in the mapped ontology
- Modified web.xml to support http authentication and SSL autehentication
- Added support for WS-Security
- Added support for managing SOAP faults
- Added support for managing SOAP headers
- Added schema for wsdl anyURI type in XsdPrimitivesOntology
- Miscellaneous Add-On
- Added support for transferring file between agents by means of the FileManagerServer and FileManagerClient classes
- Added CLI command CheckMain to check if the Main Container is up and running
- Trusted Agents Add-On:
- Modified to support management of commands other than CreateAgent
- More flexible setup to allow developers to secure any vertical command and to be more specific in providing tokens.
- Backward-incompatible API change: TokenProvider.getToken(), TokenValidator.isValid()
- XMPP MTP Add-On
- Bugfix by R.D. integrated (see http://old.nabble.com/Re%3A-XMPP-Plugin-for-connecting-to-SPADE-%28Python-based-agent-platform%29-p32854482.html). No more IllegalStateException when trying to connect to XMPP server.
EXAMPLES:
- Fixed WSIG xml SOAP client examples
DOCUMENTATION:
- Added Tutorial on Jade Android
- Updated WSIG Guide
- Updated Jade Security Guide (Fixed wrong indication about jade.mobile.SignatureService - Indicated by Michael.C.Smith)
POSSIBLE BACKWARD INCOMPATIBILITIES:
We do not expect any backward incompatibility with respect to the previous JADE version.
However, with respect to version 4.1.1 some changes occurred in low level communication within containers -->
DO NOT MIX Jade 4.2 and Jade 4.1.x containers in the same platform.
MAJOR CHANGES in JADE 4.1 (13 07 2011)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for Aliases
- Added support for listening about ALIAS creation/removal
- Added support for measuring message delivery information as well as application specific information by means of the System Activity Monitoring (SAM) Service
- Implemented the ResourceManagementService to retrieve resource from other containers
- Added support for replicating service method invokations by means of the MainReplicationService
- Added conversation-id (if not specified) in protocols performed by means of the FIPAService.doFipaRequestClient() method
- Added support for detecting real sender when an agent sends a message specifying a different sender.
- Added support for listening to Front-End relevant events by means of the FEListener interface and the addListener() method of the MicroRuntime class
- Added method dump() in MainReplicationService to enable runtime inspection via ContainerMonitorAgent (see misc Add-On)
- Improved error message when a mandatory kernel service fails at startup time
- Added/made public/refactored methods isMain(), isMasterMain() and isBackupMain() in Profile class.
- Modified ContainerID constructor to initialize address and protocol consistently. This solves a bug in LEAP serialization that created problems in Agent Mobility as reported by matias sm.
- Added shutdown hook to make the platform shut down if the Main Container JVM unexpectedly exits
Behaviours & Interaction Protocols
- Added method newIteration() to the ContractNetInitiator class to implement Iterated-Contract-Net
- Prevented potential deadlock in callback method onSuspended() of threaded behaviours
- Added method getTerminatedChildren() in ParallelBehaviour to retrieve children that have already completed
- Parameter management methods of LoaderBehaviour made protected to support customizations.
- Added method handleMessage(...) in OntologyServer to override standard message handling
- Added fixed-period mode in TickerBehaviour
- Properly implemented reset() method of SequentialBehaviour class
Content Language and Ontologies
- BeanOntology: Added support for forcing the management of the value of a slot as a Serializable object by means of the manageAsSerializable attribute of the @Slot annotation
- Modified SLCodec to work with an ad-hoc dialect of the SL language that preserves Java types (int, long, float, double...) when the SL-preserve-java-types System property is set to true.
- Added support for specifying a mandatory aggregate slot with min-cardinality = 0
- Added support for using an ad hoc ClassLoader in SerializationOntology
- Modified AbsHelper.setAttribute() method to permit null values
- Added isAbsTemplate(), addPrefix(), removePrefix(), applyDefaultValues() methods to AbsHelper class
- Added AbsExtendedPrimitive: an extended abstract descriptor that can hold values of generic primitive types
In-process interface
- Added overloaded method getAgent(String name, boolean isGuid) in ContainerController class to allow retrieving agents whose names are not in the form <local-name>@<platform-name>
- Modified DynamicJadeGateway so that if the init() method is not called the gateway starts with the default configuration
- Modified DynamicJadeGateway.init() method so that, if agentClassName is null, the default GatewayAgent one is used
Others
- HTTP MTP: Connection timeout made configurable. FIX by Libor Svehlak [Siemens]
- Added method getJADELogger() in Logger class to replace old getMyLogger() method
BUG-FIXES:
- Fixed bug in SSIteratedContractNetResponder (indicated by Henrique Lopes Cardoso): the first CFP message was passed to the handleCfp() method at each iteration
- Fixed bug in ObjectSchemaImpl.isAssignableFrom()
- Fixed bug in isLocalHost() method by Felix Krull. Previous version failed in case you set local-host in the container config to a local address which is not the address delivered by InetAddress.getLocalHost().getHostName(), but the address of another local interface.
- Fixed bug in NotificationService and Sniffer tool when an agent sended a messages specifying a different sender
- Fixed bug on visualization of properties and AIDs of pending and received ACLMessages shown by the IntrospectorAgent (Indication by Cuong P. Nguyen).
- Fixed bug in Main Replication mechanism when the local-host option was specified (bug reported by Tom Pannell)
- Fix in FE-to-BE SSL communication to prevent recursion when the SSLEngine is in closed state (by Eduard Drenth)
- Fixed bug in handleGatewayDisconnected of DynamicJadeGateway when gateway container dies.
- Fixed bug in AgentMobilityService - Deserializer: Added management of primitive java type (used if the moved agent declares a field of type Class with value a primitive type)
- Fixed bug in BeanOntology related to externalization of aggregates containing a null element
- Fixed bug in SimpleSLCodec to properly handle cases of String whose value is "(..." or ")...". Bug reported by Kostas (geniko09).
- Fixed bug in Logger deserialization: reconstructed Logger was not linked to the logging system
- Fixed bug: When moving/cloning agents replicated main containers where not properly kept in synch. Bug reported by Jamie Forth (Goldsmiths, University of London)
JADE-LEAP
- Jade Android restructured and revisited as a JADE-LEAP Target
JADE-OSGi:
- Added support for split container.
ADD-ONS:
- Misc Add-On:
- Added extensible JADE Administration Command Line Interface (package jade.cli)
- Added support for invoking Behaviour.dump() method when present in Agent DUMP
- Web Service Dynamic Client - WSDC Add-On:
- Added support for invoking WebServices using the WS-Addressing specification
- Added timeout when discovering Web Services
- Fixed bug in WebService invocation with IN/OUT headers
- Fixed bug in fault management with SOAP 1.2
- Added support for wsdl tag <Any/>
- Web Service Integration Gateway (WSIG)
- Modified to properly handle Java enum types
- Added support for using the @Slot annotation in mapper method parameters too
- modified to properly manage array/collection in mapper method parameters
- Modified default optionality value in mapper methods parameters: primitive class -> MANDATORY; non primitive class -> OPTIONAL
- WSIG specific annotation packaged in a separated jar
- Added support for adapting action results by means of the @ResultConverter annotation
- Modified WSIG Servlet to listen to gateway notifications and react properly
- Modified wsdl generation to properly handle minOccur in aggregate slot
- Fixed bug in soap response with null slot
- Removed limitation related to aggregates with the same type/dimensions
- Test Suite Add-On:
- Codec and Ontology properly registered in stand-alone execution mode too. Indicated by Leonardo C. Fraga
- Caught and traced JADE startup exceptions caused by JAVA_HOME environment variable syntax problems
EXAMPLES:
- New example on OntologyServer usage
- New example on alias declaration
- New example on JadeGateway usage
- New example on JADE Kernel Service development
DOCUMENTATION:
- Updated LEAP User Guide
- Updated WSIG Guide
POSSIBLE BACKWARD INCOMPATIBILITIES:
We do not expect any backward compatibility with respect to the previous JADE version
MAJOR CHANGES in JADE 4.0 (20 04 2010)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Restructured JADE kernel so that JADE and JADE-LEAP are now a single platform that can use two different IMTP modules for container-to-container interactions:
- The LEAP IMTP (jade.imtp.leap.LEAPIMTPManager class)
- The RMI IMTP (jade.imtp.rmi.RMIIMTPManager class)
The configuration can be done by means of the -imtp configuration option.
- Added support for checking if an UNREACHABLE node appears to be dead due to a long network disconnection by means of the NetworkChecker interface
- Added property Profile.NO_DISPLAY to avoid initializing AWT stuff when JADE is launched without the display
- Added support for NO_CLONE and SYNCH_DELIVERY (ACLMessage user defined properties) in ACL Message delivery system.
- Added support for "local" services i.e. services that do not require their class to be in the classpath of the Main Container
- Modified LEAP IMTP to support having containers belonging to different platforms in the same JVM (see the jade.enable.multiple.platforms System property)
- Substituted deprecated methods show() and hide() with setVisible(true|false) in jade.gui and jade.tools packages
- Restructured/simplified "extended properties" hierarchy
Behaviours
- Added OntologyServer class to handle REQUESTs refering to a given ontology in a simplified way
Content Language and Ontologies
- BeanOntology class and related classes moved from the Misc add-on to the JADE core distribution
- Properly managed fields of type byte[] (array of bytes) as ontological primitive types
- Added Facets for Permitted-Values, Default-Value, Documentation, Regexp
Others
- Added support for registering connection/disconnection listeners to the JadeGateway
BUG-FIXES:
- Fixed bug in Sniffer Agent: it did not serve correctly requests to start sniffing agents received as ACLMessages. Bug reported by Hanno Felix Wagner (University of Duisburg-Essen)
- Fixed bug in Sniffer Agent: the scrollbar disappeared when starting to sniff a new agent. Fix by Hanno Felix Wagner (University Of Duisburg-Essen)
- Fixed bug in HTTP MTP: when installing both an HTTP MTP and an HTTPS MTP in the same platform (different containers), messages were not properly routed to the right MTP. Fix by Libor Svehlak (Siemens)
- Fixed bug in IteratedAchieveREInitiator: there was an Inconsistent FSM error introduced by a previous modification on FSMBehaviour.deregisterState(). Bug reported by José Miguel Benedicto Ruiz
- Fixed bug in AgentMobilityService: An exception occurred when a migrated agent terminated and its home container was no longer there. Bug reported by sawal xp
JADE-OSGi:
- Redefined isLocal() method of the OSGiBridgeService class to avoid requiring it to be present in the Main Container classpath
- Fixed annoying exception when stopping the JADEOSGi bundle (problem notified by ALVARO CARRERA BARROSO - Telefonica I+D)
ADD-ONS:
- TrustedAgents Add-On (NEW!)
- New add-on developed by Eduard Drenth (Logica) that allows making sure only agents with a token that can be validated will be allowed to join the Jade Platform.
- Misc Add-On:
- BeanOntology class and related classes moved into the JADE core distribution
- ContainerMonitorAgent: Implemented the action DUMP-SERVICES, returning the services installed on a given container
- Web Service Dynamic Client - WSDC Add-On:
- Added defaultValue, regex, permitted values and cardinality in parameters, headers and schemas
-Added update definition function for cached WSDL
-Added security settings in DynamicClientCache
-Added HTTP Basic Authentication
-Added WS-Security Username Token
-Added WS-Security mustUnderstand flag
-Added WS-Security Timestamp
-Fixed bugs: DynamicClient thread-safe
-Fixed bugs: SOAP 1.2 compatibility
- Security Add-On:
- Fixed bug when encrypting a message with more than one receiver (reported by Popp, Caroline J.) due to non-deep-cloning of envelope properties and SecurityObjects
- Also inverted preferred position of SignatureService and EncryptionService (now we encrypt a signed message) in order to keep the same signature for each receiver when more than one is specified.
- Test Suite Add-On:
- Modified to use the JAVA_HOME environment variable (if present) when launching a new JADE instance
- XMLCodec Add-On
- Modified to use friendly primitive types instead of BasicOntology ones
- Modified decoding by order to try to assign values to slots on the basis of their types when some values is missing
EXAMPLES:
- Fixed problem in examples.bookTrading.BookSellerGui (fix by Doru Kaytar)
- Simplified examples.PingAgent.PingAgent and aligned with the revisited JADE Administration Tutorial
DOCUMENTATION:
- Fully revisited the JADE Administration Tutorial according to the evolutions in JADE 4.0
- Reorganized Online documentation index
- Updated/revisited according to the evolutions in JADE 4.0
- JADE Programmar's guide
- JADE Administrator's guide
- JADE Programming Tutorial
- LEAP User Guide
- JADE OSGi Guide
- BeanOntology Tutorial
- Content Language and Ontology Tutorial
- Arguments and Properties Tutorial
- Fixed name of property jade_mtp_http_https_friendListFilePass as indicated by Libor Svehlak (Siemens)
- NEW Jade tutorial in Portuguese by Andre Filipe
POSSIBLE BACKWARD INCOMPATIBILITIES:
- API
- The "extended properties" classes in the jade.util package have been fully restructured and merged
into a single class called ExtendedProperties
- Command line
- The agent specification syntax in the command line has changed according to the LEAP style:
- The separator between agent specifiers is the ';' instead of the blank
- The separator between agent arguments (if any) is now the ',' instead of the blank
- Blanks are NOT allowed!
See the example below
java -cp ... jade.Boot -gui a1:myPackage.MyClass(arg1,arg2);a2:myPackage.MyClass
The old style syntax can still be used by means of the jade.Boot3 bootstrap class as below:
java -cp ... jade.Boot3 -gui a1:myPackage.MyClass(arg1 arg2) a2:myPackage.MyClass
- jar files
- All JADE classes are now included into a single jar file called jade.jar (while until version 3.7 they where scattered accross 4 files: jade.jar, jadeTools.jar, http.jar and iiop.jar)
MAJOR CHANGES in JADE 3.7 (01 07 2009)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Added support for loading agents (and possibly other types of objects) whose code is stored in different spaces (jar file outside the classpath, OSGi bundles...) by means of the ObjectManager class
- Modified NotificationService, related classes and JADE internals to handle RECONNECTED and LEADERSHIP_ACQUIRED container events
- Enhanced MainReplicationService with support for application specific checks on connectivity status when a Main Container replica is considered dead due to a long disconnection
- Modified UDPNodeMonitoringService to improve the management of UDP ping packets from un-monitored nodes (orphan nodes)
- Added method resetTerminators() in Runtime to allows clearing the list of Runnable objects to be executed on JADE termination
Behaviours
- Added WrapperBehaviour to allow modifying behaviours methods on the fly
- In Ticker and Waker behaviour added restart in stop method
Content Language and Ontologies
- Registered java classes for primitive schemas. Added support for java collection aggregates to BasicOntology.toObject().
- Added adjustPrimitiveValues() method in BasicOntology to automatically convert primitive values according to the required type
- Fixed Set management in AbsHelper and BCReflectiveIntrospector.
- Added isAssignableFrom() method to ObjectSchema to performs a structural compatibility check on schemas
DF
- Modified DFService to set max-result to -1 (infinite) by default when creating a DF subscription message
Interaction Protocols
- Modified SSResponderDispatcher to initialize the conversation-id if not set and manage cases where createResponder() returns null
- Modified SubscriptionInitiator to properly set the reply-with field in the CANCEL message when a response to the CANCEL message is expected
Others
- Added class jade.util.leap.HashSet;
- Modified build process to recreate parsers only if both the JAVACC_HOME variable is set AND the makeParsers property is set to true in the build.properties file
BUG-FIXES:
- Fixed bug in jade.jar manifest: Replaced backslash with slash in Class-Path property
- Fixed bug in BasicOntology serialization
- Fixed bug on set of AbsObject: duplication of attribute names in case of multiple set of same attribute
- Fixed bug on container shutdown: the shutdown of a peripheral container living in the same VM of a main container used to stop the multicast listener of the main container.
- Fixed methods getConceptNames(), getActionNames() and getPredicateNames() in Ontology to consider super-ontologies too (bug indicated by Vadim Kimlaychuk)
- Fixed bug on removal of the local (main) container on platform shutdown: since the local node is not monitored the local container was not properly removed
JADE-LEAP:
- Added support for Java Platform Micro Edition SDK 3.0
- Modified FaultRecoveryService and JADE kernel to support reattachement of nodes that were considered dead due to a long network disconnection
- Completed support for ServiceHelper on split container
- Added FEService class to allow using the TopicManagement Service on split containers
- Added support for KILL Orphan Node Policy in FaultRecoveryService. This force a termination of the orphan node.
JADE-OSGi (NEW):
- Added support for running a JADE container inside an OSGi environment
- Added support for packaging agents into separated bundles
- Added support for giving agents access to OSGi features
ADD-ONS:
- Misc Add-On:
- Modified BeanOntology to support beans that do not implement ontological interfaces (Predicate, AgentAction, Concept)
- Added support in BeanOntology to retrieve elements type in aggregate slots from generics when present
- Modified ContainerMonitorAgent to invoke agent dump() method if defined
- Added support for showing wrapped behaviour information when using a WrapperBehaviour in ContainerMonitorAgent
- Web Service Integration Gateway - WSIG Add-On:
- Added support form managing ontologies with private constructor and exposing their singleton instance by means of the getInstance() static method (singleton pattern)
- Implemented soap fault management
- Web Service Dynamic Client - WSDC Add-On (NEW):
- Added support for web service dynamic (i.e. no WSDL import or class generation) invocation and introspection
- Added support for certificates (https) and http proxy
- Added support for retrieving Services, Ports, Operations and Parameters documentation
- Added support for caching DynamicClients by means of the DynamicClientCache class
- Test Suite Add-On:
- Added support to fix the port of the TSDaemon RMI UnicastRemoteObject by means of the tsdaemon.remoteobjectport system variable
- Semantic Framework Add-On
- Added extension for reasoning about institutional concepts (obligations, institutional powers, institutional actions...)
- Added new demo of a b2b mediation platform
- XMLCodec Add-On
- Modified to handle string slots as xml attributes. Improved string encoding to escape forbidden character (<>&"')
- Fixed bug for aggregate type (now decode with correct collection class)
DOCUMENTATION:
- Added tutorial on using JADE agents inside an OSGi environment
- Added tutorial on Web Service Dynamic Client
- Revisited tutorial on HTTP MTP configuration
- Revisited Online Documentation page
- Revisited FAQ page
- Several improvements to the Javadoc
POSSIBLE BACKWARD INCOMPATIBILITIES:
- Added reconnected() and leadershipAcquired() methods to the ContainerListener interface
MAJOR CHANGES in JADE 3.6.1 (04 11 2008)
==========================================================================
GENERAL IMPROVEMENTS:
Kernel
- Modified UDPNodeMonitoringService to explicitly ping a node that is not sending UDP packets before marking it as UNREACHABLE.
- Added method getFailureReason() to AMSService to retrieve from an AMS FAILURE message the reason why a message was not delivered to an agent
- Modified MessagingService to support message delivery to local agent even when the main container is unreachable
- Added support for onSuspended(), onResumed() and onAborted() callback methods on threaded behaviours
- Modified FIPAService.doFipaRequestClient() to throw FailureException, RefuseException or NotUnderstoodException depending on the response message
Content Language and Ontologies
- Added support for using concept slot names as functions (to create sentences like (= (age (Person :name John)) 41) ) by means of the ConceptSlotFunction class
- Added ContentException as common base class of CodecException and OntologyException to allow common handling of language and ontology related problems
- Added methods getSlotValue() and setSlotValue() in the Introspector interface
- Added method getSuperSchemas() to retrieve all super-schemas of a given schema (feature suggested by Antonio Amado)
- Modified AbsPrimitive to properly manage Long/Integer and Double/Float
- Modified methods getActionNames(), getConceptNames() and getPredicateNames() of the Ontology class to preserve case.
Tools
- Modified RMA Start Agent dialog box to provide a list of valid agent classes and to check that the agent name is set
- Added possibility of specifying a timeout in the message exchange supported by the SocketProxyAgent
BUG-FIXES:
- Fixed problem related to concurrent execution of block() and restart() in composite behaviours with several levels of nesting (in some cases a behaviour could remain blocked even if a message arrived)
- Added sanity check in LoaderBehaviour to avoid NullPoinerException in case of null parameters (problem reported by Mehrdad Senobari)
- Modified BasicProperties to avoid circular argument substitution exception when two threads search for the same property in parallel (problem reported by Henrique Lopes Cardoso)
LEAP:
- Modified LEAP connection pool to release connections when idle for more than 2 min
ADD-ONS:
- Misc Add-On:
- Added BeanOntology class that allows creating ontologies without the need of defining the schemas for ontological elements: schemas are automatically created from the ontological classes (beans)
- WSIG Add-On
- Management of different WSDL styles:
- rpc/encoded (reorganized according to W3C standards)
- document/literal(wrapped) WS-I compliant (set as default style)
- WSDL kept in memory (optionally written to file system)
- Support for standard WSDL download via http (http://.../MyService?WSDL)
- Proper management of java.util and jade.leap.util collections
- Proper management of optional ontological slots
- Management of Date fields according to the ISO-8601 standard
- Proper handling of multiple soap requests
- Improved example code
DOCUMENTATION:
- Added tutorial on creating ontologies by means of the BeanOntology class
POSSIBLE BACKWARD INCOMPATIBILITIES:
- Methods getSlotValue() and setSlotValue() were added to the jade.content.onto.Introspector interface --> Developers who created their own implementation of such interface will have to implement these methods
MAJOR CHANGES in JADE 3.6 (05 May 2008)
==========================================================================
GENERAL IMPROVEMENTS:
- Added support to specify the jar file where to load agent code at agent startup
- SubscriptionResponder: Modified according to comments by Chris Audley and Henrique Lopes Cardoso
- Extended TopicManagementService to deal with registrations to topic templates (e.g. foo.bar.*)
- Added responder class for Iterated-Contract-Net protocol using the Single-Session approach
- Added SSResponderDispatcher class to manage protocol initiation messages and dispatch them to SSResponder behaviours
- Added support for different implementations of the Agent MessageQueue. By Arend Freije [a.freije@minihouse.com]
- Added method setO2AManager() in Agent class to associate a single behaviour to the O2A communication mechanism.
- Modified automatic main detection mechanism to print a warning and go on when the initialization fails (on the Main Container) and it was not explicitly tured on
- Modified automatic main detection mechanism to require users to specify '*' as platform name (on peripheral containers) when they want to connect to whatever platform
- Added support to deregister transitions in FSMBehaviour
- Modified MainReplicationService to issue NEW_NODE and NEW_SLICE VCommands when a Main Container replica enters the ring
- Added method dump() to BaseService to support runtime service inspection by means of the ContainerMonitorAgent (misc Add-On)
- Added method getLocalServices() in ServiceManager interface
- Modified KeyStoreKeyManager to support selection of the keystore type (default still JKS, but other possible, eg. PKCS12). By Arend Freije [a.freije@minihouse.com]
- Added method hasDefaultTransition() in FSMBehaviour
- Sustituted AgentContainer#livesHere() with isLocalAgent()
- Modified SLCodec to support Java primitive types (long, int, float double) preservation in un-typed attributes
BUG-FIXES:
- Fixed bug in SSAchieveREResponder related to the receiption of successive messages when a performative different than REQUEST was used (Fix by Chris Audley)
- Fixed bug in WakerBehaviour reset() method
- Included HTTPS-classes in http.jar (also fixed build.xml). By Arend Freije
- Fixed bug in inter-platform communication: if the receiver did not exist in the remote platform no FAILURE message was returned to the sender
- Fixed problem when the PersistentDeliveryService stores a message for a foreign receiver (this information was lost by the PersistentDeliveryProxy).
LEAP:
- FrontEndCOntainer: Modified method exit() to avoid deadlock when activated from MicroRuntime.stop()
- BEManagementService: Added sanity check to avoid using a cancelled SelectionKey (problem indicated by Reza Mohseny)
- Added support for Object-2-Agent communication on split containers
- Fixed bug in FEService.
ADD-ONS:
- JADE-ANDROID Add-on
- New Add-on allowing deployment of JADE-based applications on Google Android platform
- Misc Add-on
- Added support for leader election within an open group (members can appear and disappear at any time) of agents
- Added support for DUMP-SERVICE action in ContainerMonitorAgent
- WSIG Add-on
- Support for optional/unordered parameters in Web Service invocations
- Improved AgentAction object construction from Web Service parameters
- Improved exception handling and error messages
- Added support for further WSDL customization by means of the OntologyName and SuppressOperation annotations.
- Modification to use XML validation schemes at non-standard addresses.
- Fixed problem related to usage of Basic Ontology types (such as AID) as Web Service operation parameters (bug indicated by Jason Woodrich)
- Some fixes to make things fully compliant to standards.
- Updated Guide and examples.
- XMLCodec Add-on
- Modified to preserve Java primitive types (long, int, float double) in un-typed attributes
- Modified to properly handle SET and SEQUENCE aggregates
DOCUMENTATION:
- Updated guides
POSSIBLE BACKWARD INCOMPATIBILITIES:
API: NONE
EXPECTED BEHAVIOUR:
- The detect-main option specified on peripheral containers requires the specification of the name of the platform
to connect to by means of the -name option. In order to connect to whatever platform it is possible to specify -name *
MAJOR CHANGES in JADE 3.5 (25 June 2007)
==========================================================================
GENERAL IMPROVEMENTS:
DF
- Modified DF to automatically remove subscriptions of dead agents when the autocleanup option is specified
- Modified DF to support a pool of thread serving registration, deregistration and search requests when using DB-based KnowledgeBase (option jade_domain_df_poolsize)
- Modified DF to support turning off content validation mode (option jade_domain_df_disablevalidation)
- Optimized DF search when using DB-based KnowledgeBase
- Modified DF to cache subscription relevant information. This speeds up performances when detecting subscribed agents to be notified about registration updates
Content language and ontologies
- Created CFReflectiveIntrospector to support usage of java.util classes in ontological classes
- Added methods to get predicate, concept and action names from an ontology
- Committed automatically generated SL and ACL parser classes
- Added method to define action-result type in AgentActionSchema
Kernel
- Added automatic Main-Container detection via multicast (option detect-main)
- Modified MainReplicationService to support detailed REMOVED_CONTAINER and DEAD_AGENT events notification instead of just RESET meta-event
- Modified FullResourceManager to avoid annoying stack traces at platform shutdown
- Modified MainContainerImpl to start the AMS and DF threads in the SystemAgent Thread Group
- Added dump-options option to print out configuration options at container startup
- Modified ContainerID class to include main/non-main indication
- added package scoped method getThread in the class Agent
- added package scoped methods getSize in jade.core.messaging.OutBox
- added package scoped methods getThreadPoolStatus and getThreadPool in jade.core.messaging.MessageManager
- added public methods getQueueSize and getThreadPool in jade.core.messaging.MessagingService
- Modified CodeLocator to use Base64 encoder by Apache commons-codec instead of sun.misc.BASE64Encoder as suggested by Jordi Cucurull Juan
- Modified CodeLocator to deal with ClassLoader instead of jar files by Jordi Cucurull Juan
- Modified AgentMobilityService to work with Java6 (load incoming agent classes by calling Class.forName(<class-name>, true, cl) instead of cl.loadClass(<class-name>)
MTP
- Integrated patch by Arend Freije (Minihouse) to avoid http MTP block all delivery processes when one takes a lot of time.
Tools
- Modified AgentTree class to show agents within a container in alphabetical order
- Improved management of colors in the Sniffer
BUG-FIXES:
- Integraed fix by Geoffrey De Smet to properly deal with loggers that are not JADE loggers.
- Fixed problem with Mobility and Java6 due to Java6 backward incompatibility https://glassfish.dev.java.net/issues/show_bug.cgi?id=714
- Added sanity check in MainContainerImpl.containerAgents() as indicated by Carlo Corda.
- Added sanity check on MainContainerImpl to deal with terminating agents while a query-agents-on-location action is served.
LEAP:
- Added support for ServiceHelper retrieval and usage in split container execution mode
- Added support for automatically changing the local port of the Main Container in case the specified port (or the default one) is busy (jade_imtp_leap_LEAPIMTPManager_changeportifbusy option).
- Added detach/attach functionality to the split execution mode
- Modified LEAP ConnectionPool to move connection creation outside a synchronized block. This avoids blocking all threads trying to interact with remote containers when one is taking a lot of time opening a network connection (e.g. due to TCP timeouts)
- Fixed bug in single-connection FE-BE connector class (jade.imtp.leap.JICP.FrontEndDispatcher) related to duplicated session-ID
- Fixed bug when restarting JADE-LEAP inside Tomcat (or another application that uses different classloaders each time) "No skeleton for object-id" reported first by Jaran Nilsen
ADD-ONS:
- Persistence Add-on
- Some fix to properly support MySql DB (by Vincenzo Gioviale)
- Misc Add-on
- Added dump of threads owned by an Agent (its Thread and its threaded behaviours)
- Added dump of all threads in a container
- Added dump of deliverer threads
- JADE-SHARP Add-on
- New add-on allowing Microsoft .NET clients (fully compatible with .NET Compact Framework) to connect to a JADE-based multi agent system and to exchange ACLMessages with remote agents
- Security Add-on
- Fixed bug (OutOfMemoryError) in encryption mechanism when encoding block-size is 0
- Fixed bug (ArrayIndexOutOfBoundException) in PermissionFIlter while checking an incoming KILL_CONTAINER command
- Reorganized messaging example to allow showing that a message is encrypted using the Sniffer
DOCUMENTATION:
- New tutorial on JADE-JESS integration by Henrique Lopes Cardoso (University of Porto)
- Updated tutorial on Content Languages and Ontologies with information about the new CFReflectiveIntrospector
- New examples about the topic-based message delivery mechanism
- Updated the Programmer's Guide with information about the topic-based message delivery mechanism
- Updated the Administrator's Guide with information about the automatic main detection mechanism
- Adjusted javadoc information for kernel level services classes
POSSIBLE BACKWARD INCOMPATIBILITIES:
API: NONE
EXPECTED BEHAVIOUR:
- When using Main Container replication, tool-agents now receive detailed REMOVED_CONTAINER and DEAD_AGENT events instead of just the RESET meta-event.
A fully backward-compatible behaviour can be obtained by setting to true the jade_core_replication_MainReplicationService_snapshotonfailure configuration option
MAJOR CHANGES in JADE 3.4.1 (15th November 2006)
==========================================================================
GENERAL IMPROVEMENTS:
- Modified HTTP MTP to properly select the XML parser (by Krešimir Jurasovic - University of Zagreb).
- Substituted getHostName() with getCanonicalHostName() in HTTP MTP to resolve domain problems.
- Added support for low-level container introspection by means of the ContainerMonitorAgent (jade_core_AgentContainerImpl_enablemonitor parameter).
- Added method getParam(int index) to JADE commands (jade.core.Command class).
- Modified message tracing mechanism to take the ACLMessage.TRACE user define property into account.
- Improved agent cloning error management.
- Added generation of ShutdownPlatformRequested AMS event (Introspection Ontology)
- Modified ThreadedBehaviourFactory to support Threaded-behaviour suspension.
- Modified default behaviour of jade.wrapper.gatreway.GatewayAgent to automatically call releaseCommand() when a Behaviour is passed in the execute() method of the JadeGateway class.
- Refactored Notification Service to i) use sinks for owned commands, and ii) dispatch ContainerEvents.
- Modified Agent.powerUp() method to avoid starting the agent thread two times.
BUG-FIXES:
- Fixed bug in SSResponder when initiator and responder are the same agent
- Fixed bug in ParallelBehaviour related to remotion of already terminated children (indicated by Juan A. Suárez-Romero - University of A Coruña)
- Fixed deadlock problem in OutgoingEncodingFilter due to useless synchronized block on AgentContainerImpl.
- Fixed bug notified by Maciej Gawinecki so that when trying to kill multiple agents at the same time from the RMA only the first one was actually killed (jade.tools.ToolAgent class).
- Fixed bug in jade.BootGUI (notified by Maciej Gawinecki, fix by Walter, Patrick A).
- Fixed problems in jade.proto.SSIteratedAchieveREResponder.
- Fixed bug in conversation ID generation (in some cases it was not unique) in the FIPAService.doFipaRequestClient() method.
- Fixed problem about jar file removal in CodeLocator (by Jordi Cucurull Juan).
- Fixed problem with the -main configuration option in BootProfileImpl.
- Fixed problem in the visualization of pending/sent messages in the Introspector agent.
- Fixed problem in Introspector agent related to behaviour status updating.
- Fixed bug in ToolNotifier: an inner behaviour did not block waiting for incoming messages --> in certain cases a terrible waste of CPU could be experienced.
LEAP:
- Modified CommandDispatcher skeleton ID generation mechanism to avoid problems when a container terminates and then restarts with the same name
- Modified to support socket timeout configuration (jade_imtp_leap_JICP_JICPPeer_connectiontimeout parameter)
- Fixed problem with reconnection after DROP_DOWN in single-connection BE-FE dispatcher class (jade.imtp.leap.nio.BackEndDispatcher)
ADD-ONS:
- Semantics Framework
- Improved the interface of OntologicalAction (new constructor) and SemanticBehaviour (RUNNING constant)
- Improved the simplification of EqualsNode (between an IRE and a value) and the toString method of MatchResult
- Beangenerator
- Fixed problem with Protege owl import
- ASCML
- parameters without name are passed to an agent as value-only and not as 'name=value' (AgentLauncherThread.java)
- added close-button in ParameterDialog
- dialog may now set to be not visible (ExceptionDialog.java)
- when changing the name of the society instance, check if the society instance is the default-society of the society type and if so, also change the name of the default society instance within the society type (SocietyInstance.java)
- Reworked the whole ToolRequester code to be expandable more easily.
- fixed bug in passing parameters to a newly created agent (AgentLauncherThread.java)
- fixed bug. Because of this bug, it was not possible to create more than one new Agent-/SocietyType.
- fixed bug: in case some references could not be resolved a society type is loaded into the repository anyway (ModelManager.java)
- WSIG
- Several updates and bug fixes
- Persistence
- Updated to run with Hibernate 3.x.
- Added a lot of sanity checks to avoid NullPointerExceptions
- Updated examples not to use deprecated methods
- Provided minimal demo to experience persistence features
- Test Suite Framework
- Added support for retrieving the ID of a remote JADE instance started by means of the TSDaemon through the getJadeInstanceId() method.
- Added system property tsdaemon.port and tsdaemon.name for TSDaemon configuratraion.
DOCUMENTATION:
- New Tutorial on JadeGateway usage by Viktor Kelemen
- Hardly improved JadeGateway javadoc
- Fixed error in code example in the Programmer's Guide as indicated by Fábio Silva Carvalho
- Completely revisited Persistence Guide
- Completely revisited WSIG Guide
POSSIBLE BACKWARD INCOMPATIBILITIES:
NONE
MAJOR CHANGES in JADE 3.4 (28th February 2006)
==========================================================================
GENERAL IMPROVEMENTS:
- Notification of agent deregistrations with the DF (Pavel Tichy)
The notification to subscriber will contain new set of services, i.e.:
1) registration - all registered services
2) modification - modified set of services (some can be removed some can be added in comparison to previously registered list)
3) deregistration - empty set of service
- Modified persistent DF DB schema in order to store String service properties as plain String instead of enconding them in Base64
- Added support for db-abortonerror DF property.
- Added support for Iterated search when using the persistent DF.
- AMS: modified killContainer() to throw NotFoundException if the container to kill does not exist.
- AMS: Added -jade_domain_ams_maxresult option to modify the AMS maximum number of results to include in a search response.
- Added support for Serializable agent arguments in agent creation through the ams.
- AMSSubscriber: added support for subscribing to the AMS of a remote platform
- Added support for timeout in JadeGateway command processing.
- Added check to prevent main-peripheral container inconsistencies in JadeGateway
- Added default implementation of GatewayAgent processCommand() method automatically dealing with "behaviour commands"
- Added method shutdown() in JadeGateway to kill the JadeGateway container
- Modified UDPNodeMonitoring service to automatically propagate settings from the main container to peripheral containers.
- Modified UDPNodeMonitoring service to also work between replicated main containers
- ProfileImpl modified to preserve services settings when reusing an old Properties object inside a new Profile
- Added method getPrevious() in FSMBehaviour to retrieve the previous state
- Added initial support for starting agents from separate jar files (i.e. jar files not included in the classpath)
- Added support for %C wild-card in agent names.
- Restructured the AgentTree class and modified rma, sniffer and introspector GUIs accordingly.
- Modified tooltip of container host in AgentTree to get host address instead of name.
Getting the host name from the Swing thread is dangerous as in particular cases it may block for a long time.
- Restructured some code in MessagingService and added support for message traceability.
- Added support for ACLMessage.IGNORE_FAILURES user defined properties in message delivery.
- Modified MessagingService to avoid sending back FAILURE messages to the AMS.
- Added method getWrappers() in ThreadedBehaviourFactory class
- Integrated CodeLocator (by Joan Ametller - UAB) in AgentManagementService and AgentMobilityService to support MigrationService
- Added IntrospectionServer behaviour to inspect agent fields at runtime
- Added support for runtime platform introspection through the -jade_core_AgentContainerImpl_enablemonitor option
- New version of the LogManager agent Supporting management of logs in remote containers too.
- Added class PlatformID: a Location representing a platform (by Joan Ametller).
- Replaced starlight Base64 codec (that was distributed under GPL license) with commons-codec (that is distributed under ASL license).
(Suggestion of Geoffrey De Smet)
- Modified jade.proto.Initiator class to put the Vector of actually sent messages in the DataStore at the ALL_INITIATIONS_KEY key
- Added support for iterated-fipa-request protocol
- Added single-session version of responder protocol classes
LEAP:
- Added FaultRecoveryService. By activating this service both on the main and on peripheral containers,
a platform can survive to a fault and a successive restart of the main container. The FaultRecoveryService
provides an alternative fault tolerance support with respect to the MainReplicationService and should be used in
situations where there is the possibility that all replicated main-containers crash at the same time.
- Added support for retrieval of BE connected status from BEManagementHelper
- DeliverableDataInputStream/DeleivarebleDataOutputStream modified to use the LEAPACLCodec to serialize/deserialize AID and ACLMessages
- FrontEndContainer modified to make the BE repeat the resynch process if synchronization fails
- Simplified reconnection/BE-recreation procedure in BIFEDispatcher by separating input and output related methods
- JICPServer: Added support for management of local host addresses.
- Restored single-connection BE-FE dispatcher classes.
- Removed support for stand-alone container in MIDP
- Added method log(level, message, Throwable) in the PJAVA and MIDP versions of jade.util.Logger.
- Added "tail" command in OutputViewer
- Modified jade.util.leap.Properties class to read manifest properties as LEAP-<prop-name> instead of MIDlet-LEAP-<prop-name> (indication by Markus Backer)
- Modified build scripts to support MIDP compilation with JDK1.5
- Modified build scripts to remove pjava dependency from JDK1.1.x
- Modified target minimize to get jar, dlc and manifest interactively
- Several updates from Federico Pieri to keep the .NET version up to date.
- Fixed several details in the demo