This is an add-on for the Jade agent development framework which enables Jade platforms to communicate via SOAP messages instead of HTTP or IIOP. It uses Apache CXF for sending and receiving SOAP messages. The approach is pretty simple, it sends the ACL envelope and payload as two message parameters to the other Jade platform. There is no mapping of ACL envelope to SOAP headers, so SOAP headers remain free to be used as necessary by the hosting environment. It is easy to modify the conversion process of outgoing and incoming SOAP messages using CXF interceptors.
The following types of interoperation are supported:
Agents can simply call Web Services (this is independent of agent messaging, and it is done synchronously). For an example, see SoapSendBehaviour.send1() in the samples package.
It is possible to send SOAP messages to agents inside a platform (if it knows the address of agent platform and the GUID of the agent). The addressed agent receives the message as a normal agent message, but it cannot reply or send response. For an example, see SoapSendBehaviour.send2() in the samples package.
Agents can easily provide Web Services. When such a WS is called, an agent method is executed where the agent can provide the response. For an example, see SoapServiceAgent in the samples package.
Please note that the approach uses plain Java objects instead of ontologies during communication.
You can download the current version here.
Everything is included; just unzip the downloaded file into the
add-ons folder of Jade.
Tested with JDK 1.6 and Jade 3.6.1.
An example how to start Jade with SOAP MTP:
jade.Boot -mtp hu.sztaki.dsd.jade.mtp.soap.MessageTransportProtocol -mtp_soap_port 1080 -mtp_soap_conf cxf.xml -gui
mtp_soap_port: the port the server should listen on (default 1080).
mtp_soap_binding: SOAP binding to be used (default is SOAP1.2). Other possible values: http://java.sun.com/javase/6/docs/api/constant-values.html#javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING
mtp_soap_https: https should be used (default is http). Note that the proper setup for https server has to be given in the inConf configuration.
mtp_soap_conf: general CXF configuration file to be used for both incoming and outgoing SOAP requests (default: cxf.xml)
mtp_soap_outConf: CXF configuration file to be used for outgoing SOAP requests (default: none). Overrides 'conf' parameter for outgoing messages.
mtp_soap_inConf: CXF configuration file to be used for handling incoming SOAP requests (default: none). Overrides 'conf' parameter for incoming messages.
mtp_soap_parser: XML SAX2 parser implementation to use (default: JVM default or defined as org.xml.sax.driver).
You can use 'ant run' and 'ant run2' to start two Jade platforms and test communication between them.
Examples for CXF and logging configuration are provided in the examples folder.
You may get the following exception when starting Jade:
java.lang.RuntimeException: java.net.URISyntaxException: Illegal character in path at index 13: commons-codec\commons-codec-1.3.jar
In this case you have to modify the META-INF/MANIFEST.MF file in your jade.jar: change the entry in the class-path from commons-codec\commons-codec-1.3.jar to commons-codec-1.3.jar. (Apache CXF does not like the backslash here.)
For certain setups you need to have javac in your PATH, otherwise you get IOException during exec() of compiler "javac". Check your path environment variable.
Andras Micsik, MTA SZTAKI DSD
Peter Pallinger, MTA SZTAKI DSD
Please post your comments about the add-on in this forum.
This add-on is licensed as LGPLv2.1.
The development has been supported by the BREIN project and has been partly funded by the European Commission’s IST activity of the 6th Framework Programme under contract number 034556.