jade.wrapper.gateway
Class JadeGateway

java.lang.Object
  |
  +--jade.wrapper.gateway.JadeGateway

public class JadeGateway
extends java.lang.Object

This class provides a simple yet powerful gateway between some non-JADE code and a JADE based multi agent system. It is particularly suited to be used inside a Servlet or a JSP. The class maintains an internal JADE agent (of class GatewayAgent that acts as entry point in the JADE based system. The activation/termination of this agent (and its underlying container) are completely managed by the JadeGateway class and developers do not need to care about them. The suggested way of using the JadeGateway class is creating proper behaviours that perform the commands that the external system must issue to the JADE based system and pass them as parameters to the execute() method. When the execute() method returns the internal agent of the JadeGateway as completely executed the behaviour and outputs (if any) can be retrieved from the behaviour object using ad hoc methods as exemplified below. DoSomeActionBehaviour b = new DoSomeActionBehaviour(....); JadeGateway.execute(b); // At this point b has been completely executed --> we can get results result = b.getResult();
When using the JadeGateway class as described above null should be passed as first parameter to the init() method.

Alternatively programmers can

NOT available in MIDP

Version:
$Date: 2007-06-18 14:44:57 +0200 (lun, 18 giu 2007) $ $Revision: 5971 $
Author:
Fabio Bellifemine, Telecom Italia LAB

Method Summary
static void checkJADE()
          This method checks if both the container, and the agent, are up and running.
static void execute(java.lang.Object command)
          execute a command.
static void execute(java.lang.Object command, long timeout)
          Execute a command specifying a timeout.
static java.lang.String getProfileProperty(java.lang.String key, java.lang.String defaultValue)
          Searches for the property with the specified key in the JADE Platform Profile.
static void init(java.lang.String agentClassName, java.lang.Object[] agentArgs, Properties jadeProfile)
          Initialize this gateway by passing the proper configuration parameters
static void init(java.lang.String agentClassName, Properties jadeProfile)
           
static boolean isGatewayActive()
          Return the state of JadeGateway
static void shutdown()
          Kill the JADE Container in case it is running.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getProfileProperty

public static final java.lang.String getProfileProperty(java.lang.String key,
                                                        java.lang.String defaultValue)
Searches for the property with the specified key in the JADE Platform Profile. The method returns the default value argument if the property is not found.

Parameters:
key - - the property key.
defaultValue - - a default value
Returns:
the value with the specified key value
See Also:
Properties.getProperty(String, String)

execute

public static final void execute(java.lang.Object command)
                          throws StaleProxyException,
                                 ControllerException,
                                 java.lang.InterruptedException
execute a command. This method first check if the executor Agent is alive (if not it creates container and agent), then it forwards the execution request to the agent, finally it blocks waiting until the command has been executed (i.e. the method releaseCommand is called by the executor agent)

Throws:
StaleProxyException - if the method was not able to execute the Command
ControllerException
java.lang.InterruptedException
See Also:
AgentController.putO2AObject(Object, boolean)

execute

public static final void execute(java.lang.Object command,
                                 long timeout)
                          throws StaleProxyException,
                                 ControllerException,
                                 java.lang.InterruptedException
Execute a command specifying a timeout. This method first check if the executor Agent is alive (if not it creates container and agent), then it forwards the execution request to the agent, finally it blocks waiting until the command has been executed. In case the command is a behaviour this method blocks until the behaviour has been completely executed.

Throws:
java.lang.InterruptedException - if the timeout expires or the Thread executing this method is interrupted.
StaleProxyException - if the method was not able to execute the Command
ControllerException
See Also:
AgentController.putO2AObject(Object, boolean)

checkJADE

public static final void checkJADE()
                            throws StaleProxyException,
                                   ControllerException
This method checks if both the container, and the agent, are up and running. If not, then the method is responsible for renewing myContainer. Normally programmers do not need to invoke this method explicitly.

StaleProxyException
ControllerException

init

public static final void init(java.lang.String agentClassName,
                              java.lang.Object[] agentArgs,
                              Properties jadeProfile)
Initialize this gateway by passing the proper configuration parameters

Parameters:
agentClassName - is the fully-qualified class name of the JadeGateway internal agent. If null is passed the default class will be used.
agentArgs - is the list of agent arguments
jadeProfile - the properties that contain all parameters for running JADE (see jade.core.Profile). Typically these properties will have to be read from a JADE configuration file. If jadeProfile is null, then a JADE container attaching to a main on the local host is launched

init

public static final void init(java.lang.String agentClassName,
                              Properties jadeProfile)

shutdown

public static final void shutdown()
Kill the JADE Container in case it is running.


isGatewayActive

public static final boolean isGatewayActive()
Return the state of JadeGateway

Returns:
true if the container and the gateway agent are active, false otherwise


JADE