Configuration¶
POP-Java can be configured by placing a file in a specific location: ${POPJAVA_LOCATION}/etc/popjava.properties.
There exists three level of configuration in POP-Java, the first level is POP Hardcoded values, the second is system level override in the location specified above, while the third level is user level override which enable the user to tweak POP even more locally. This can be seen in Figure 1.
Figure 1: POP-Java Configuration Layers
Note
For testing purpose the path ./etc/popjava.properties is also valid.
Parameters available¶
-
SYSTEM_JOBMANAGER_CONFIG : File $POPJAVA_LOCATION/etc/jobmgr.confwith$POPJAVA_LOCATIONfalling back to./if not set. The location where the Job Manager configuration file located.
-
DEBUG : Booelan falseprint debug information to console.
-
DEBUG_COMBOBOX : Booelan falseprint Combox debug information to console.
-
RESERVE_TIMEOUT : Int 60000milliseconds before the Job Manager free reserved registered resources.
-
ALLOC_TIMEOUT : Int 30000milliseconds waiting for a connection to happen after a reservation.
-
CONNECTION_TIMEOUT : Int 30000milliseconds waiting before a connection exception is thrown.
-
JOBMANAGER_UPDATE_INTERVAL : Int 10000milliseconds waiting from interval to interval to check to free resources.
-
JOBMANAGER_SELF_REGISTER_INTERVAL : Int 43200000milliseconds (1/2 day) when the Job Manager register itself on its neighbors.
-
JOBMANAGER_DEFAULT_CONNECTOR : String jobmanagerwhich connector is used when none is specified.
-
JOBMANAGER_PROTOCOLS : String[] [ "socket" ]protocols which are used for the Job Manager.
-
JOBMANAGER_PORTS : Int[] [ 2711 ]ports which are used in combination with JOBMANAGER_PROTOCOLS.
-
JOBMANAGER_EXECUTION_BASE_DIRECTORY : File .which directory should Job Manager use to start objects.
-
JOBMANAGER_EXECUTION_USER : String nullwith which user should the Job Manager start objects as.
-
POP_JAVA_DEAMON_PORT : Int 43424the default port that the Java Daemon should use.
-
SEARCH_NODE_UNLOCK_TIMEOUT : Int 10000default time before unlocking the semaphore if no result was received.
-
SEARCH_NODE_SEARCH_TIMEOUT : Int 0default timeout for a Search Node research.0means that the first node responding will be used.
-
SEARCH_NODE_MAX_REQUESTS : Int Integer.MAX_VALUEhow many nodes should we visit before stopping. Unlimited by default.
-
SEARCH_NODE_EXPLORATION_QUEUE_SIZE : Int 300how many nodes should we remember before dropping them to save memory.
-
TFC_SEARCH_TIMEOUT : Int 5000minimum time to wait for TFC results are returned to the user. Similar to SEARCH_NODE_SEARCH_TIMEOUT.
-
DEFAULT_ENCODING : String xdr
-
SELECTED_ENCODING : String raw
-
DEFAULT_PROTOCOL : String socketwhich protocol should we use when none is specified.
-
PROTOCOLS_WHITELIST : Set<String> [ ]which protocols should be allowed to be used.
-
PROTOCOLS_BLACKLIST : Set<String> [ ]which protocols should be blocked and not be used; also applied when using PROTOCOLS_BLACKLIST
-
ASYNC_CONSTRUCTOR : Booelan true
-
ACTIVATE_JMX : Booelan false
-
CONNECT_TO_POPCPP : Booelan false
-
CONNECT_TO_JAVA_JOBMANAGER : Booelan true
-
REDIRECT_OUTPUT_TO_ROOT : Booelan true
-
USE_NATIVE_SSH_IF_POSSIBLE : Booelan true
-
SSL_PROTOCOL_VERSION : String TLSv1.2
-
SSL_KEY_STORE_FILE : File nullthe file with the Key Store with the private key.
-
SSL_KEY_STORE_PASSWORD : String nullpassword for opening and checking the keystore.
-
SSL_KEY_STORE_PRIVATE_KEY_PASSWORD : String nullpassword to decrypt the private key in the keystore.
-
SSL_KEY_STORE_LOCAL_ALIAS : String nullalias of the private key and public certificate.
-
SSL_KEY_STORE_FORMAT : KeyStoreFormat. null, formatJKS,PKCS12(experimental).
New attribute¶
Adding a new attribute require the modification of the Configuration class, this is because we grant access to attributes via get and set methods.
The process is done 4 steps.
- Choose the name of the attribute and add it to the
Settableenumerator.
private enum Settable {
MY_NEW_ATTRIBUTE,
...
}
- Add a class attribute which will be used to store the value.
private String myNewAttribute = "";
- Create getter and setter methods.
public String getMyNewAttribute() {
return myNewAttribute;
}
public void setMyNewAttribute(String value) {
setUserProp(Settable.MY_NEW_ATTRIBUTE, value);
myNewAttribute = value;
}
Note
Using setUserProp enable us to save only the changed information if the User call store().
- Add the parsing rules in
load.
switch(keyEnum) {
case MY_NEW_ATTRIBUTE: myNewAttribute = value; break;
...
}
Remarks¶
All Java version except Java 9, properties file are encoded with ISO-8859-1 which means that all character outside the first 256 byte will be encoded with its hexadecimal form \uXXXX.
For this reason be on alert when using characters outside this charset manually.
From Java 9 properties files are saved using UTF-8 so this problem shouldn’t matter.