6

I'm just a beginner at JADE. I would like to know how to create containers other than the main container and add multiple agents into it. A full code of creation would be appreciated.

Thanks!

user3382935
  • 61
  • 1
  • 3

3 Answers3

7

As stated in Tafadzwa Chikudo answer, the usual way to start a container is by launching jade.Boot from the command line (or in a shell script).

But it is also possible to do it inside another Java program, using the "JADE in-process interface" (package jade.wrapper, class jade.core.Runtime).

For instance, the following code creates a "peripheral" container (connecting to a main container on localhost) and launch one agent in it.

//Get the JADE runtime interface (singleton)
jade.core.Runtime runtime = jade.core.Runtime.instance();
//Create a Profile, where the launch arguments are stored
Profile profile = new ProfileImpl();
profile.setParameter(Profile.CONTAINER_NAME, "TestContainer");
profile.setParameter(Profile.MAIN_HOST, "localhost");
//create a non-main agent container
ContainerController container = runtime.createAgentContainer(profile);
try {
        AgentController ag = container.createNewAgent("agentnick", 
                                      "my.agent.package.AgentClass", 
                                      new Object[] {});//arguments
        ag.start();
} catch (StaleProxyException e) {
    e.printStackTrace();
}
Rémi
  • 527
  • 5
  • 10
  • how do you receive the object you pass (third argument) while creating the agent in the Agent Class? – user0221441 Jul 04 '22 at 19:59
  • 1
    @joedavid With the [getArguments method](https://jade.tilab.com/doc/api/jade/core/Agent.html#getArguments--) of the Agent class. – Rémi Jul 07 '22 at 14:06
1

A Peripheral container can be started as follows java jade.Boot -container -host x.x.x.x -agents z:package.agent;y:package.agent where x.x.x.x is ip of main contaner, z is the name you give to the first agent, y is the name you give to the second agent and package is the package that contains the agents in a jar file

0

Just to add to the solution given by Tafadzwa Chikudo, first you need to create a Main container, you can do so with the following command java jade.boot -gui, this simply creates a main container with the GUI. You can find the IP of the main container either from the GUI or the command line output you get from running the initial commands.

To add additional agents in their own containers, you can run java jade.Boot -container -host IP -agents agent_name1:package.agent_classname;agent_name2:package.agent_classname. "package" is the folder where the class is stored.

dipps_18
  • 47
  • 5