public class JadeGateway
extends java.lang.Object
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();
null
should be
passed as first parameter to the init()
method.
Alternatively programmers can
GatewayAgent
, that redefine its method processCommand
and that is the agent responsible for processing all command-requests
init
with the
name of the class of the application-specific agent
JadeGateway.execute(Object command).
This method will cause the callback of
the method processCommand
of the application-specific agent.
The method execute
will return only after the method GatewayAgent.releaseCommand(command)
has been called
by your application-specific agent.
NOT available in MIDP
- Version:
- $Date: 2015-09-07 16:57:33 +0200 (Mon, 07 Sep 2015) $ $Revision: 6765 $
- Author:
- Fabio Bellifemine, Telecom Italia LAB
-
-
Field Summary
Fields
Modifier and Type
Field and Description
static java.lang.String
SPLIT_CONTAINER
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods
Modifier and Type
Method and Description
static void
addListener(GatewayListener l)
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 DynamicJadeGateway
getDefaultGateway()
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
void
removeListener(GatewayListener l)
static void
shutdown()
Kill the JADE Container in case it is running.
-
-
Field Detail
-
SPLIT_CONTAINER
public static final java.lang.String SPLIT_CONTAINER
- See Also:
- Constant Field Values
-
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.
-
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
-
addListener
public static void addListener(GatewayListener l)
-
removeListener
public void removeListener(GatewayListener l)
-
getDefaultGateway
public static final DynamicJadeGateway getDefaultGateway()
These are the official JADE API. For these API backward compatibility is guaranteed accross JADE versions