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.conf
with$POPJAVA_LOCATION
falling back to./
if not set. The location where the Job Manager configuration file located.
-
DEBUG : Booelan
false
print debug information to console.
-
DEBUG_COMBOBOX : Booelan
false
print Combox debug information to console.
-
RESERVE_TIMEOUT : Int
60000
milliseconds before the Job Manager free reserved registered resources.
-
ALLOC_TIMEOUT : Int
30000
milliseconds waiting for a connection to happen after a reservation.
-
CONNECTION_TIMEOUT : Int
30000
milliseconds waiting before a connection exception is thrown.
-
JOBMANAGER_UPDATE_INTERVAL : Int
10000
milliseconds waiting from interval to interval to check to free resources.
-
JOBMANAGER_SELF_REGISTER_INTERVAL : Int
43200000
milliseconds (1/2 day) when the Job Manager register itself on its neighbors.
-
JOBMANAGER_DEFAULT_CONNECTOR : String
jobmanager
which 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
null
with which user should the Job Manager start objects as.
-
POP_JAVA_DEAMON_PORT : Int
43424
the default port that the Java Daemon should use.
-
SEARCH_NODE_UNLOCK_TIMEOUT : Int
10000
default time before unlocking the semaphore if no result was received.
-
SEARCH_NODE_SEARCH_TIMEOUT : Int
0
default timeout for a Search Node research.0
means that the first node responding will be used.
-
SEARCH_NODE_MAX_REQUESTS : Int
Integer.MAX_VALUE
how many nodes should we visit before stopping. Unlimited by default.
-
SEARCH_NODE_EXPLORATION_QUEUE_SIZE : Int
300
how many nodes should we remember before dropping them to save memory.
-
TFC_SEARCH_TIMEOUT : Int
5000
minimum 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
socket
which 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
null
the file with the Key Store with the private key.
-
SSL_KEY_STORE_PASSWORD : String
null
password for opening and checking the keystore.
-
SSL_KEY_STORE_PRIVATE_KEY_PASSWORD : String
null
password to decrypt the private key in the keystore.
-
SSL_KEY_STORE_LOCAL_ALIAS : String
null
alias 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
Settable
enumerator.
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.