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