Locations

A location defines the medium on which a port sends and receive messages.

A location is always a URI in the form medium[:parameters], where medium is the medium identifier and the optional parameters is a medium-specific string

Jolie natively supports five media:

  • local (Jolie in-memory communication);
  • socket (TCP/IP sockets);
  • btl2cap (Bluetooth L2CAP);
  • rmi (Java RMI);
  • localsocket (Unix local sockets).

In the following sections we explain the medium-specific properties of the locations provided by Jolie.

Automatic configuration of a location using extension auto

Both inputPort locations and outputPort locations can be automatically set from an external file by using the extension auto. auto is a special extension which can be defined instead of a usual location. When using auto two different kind of external files can be exploited for defining the locations: ini and json.

The form of the extension string for auto is:

auto:<file format ini|json>:<variable path>:file:<path to file>

ini file

Here we show an example of port definition which exploits the extension auto together with a file ini.

inputPort MyInput {
location: "auto:ini:/Location/MyInput:file:config.ini"
protocol: sodep
interfaces: DummyInterface
}

outputPort MyOutput {
location: "auto:ini:/Location/MyOutput:file:config.ini"
protocol: sodep
interfaces: DummyInterface
}

where the ini file is:

[Location]
MyInput=socket://localhost:8000
MyOutput=socket://100.100.100.100:8000

Note that the <variable path> take the following forms:

/Location/MyInput
/Location/MyOutput

where Location is the name of the section inside the ini file.

json file

Here we show an example of port definition which exploits the extension auto together with a file json.

inputPort MyInput {
location: "auto:json:MyInput.location:file:config.json"
protocol: sodep
interfaces: DummyInterface
}

outputPort MyOutput {
location: "auto:json:MyOutput.location:file:config.json"
protocol: sodep
interfaces: DummyInterface
}

where the json file is:

{
    "MyInput": {
        "location":"socket://localhost:8000"
    },
    "MyOutput": {
        "location":"socket://100.100.100.100:8000"
    }
}

Note that the <variable path> take the following forms:

MyInput.location
MyOutput.location