[
https://issues.jboss.org/browse/JGRP-188?page=com.atlassian.jira.plugin.s...
]
Julien Kronegg commented on JGRP-188:
-------------------------------------
I would use a variant of Robert's suggestion (singleton that contains a Properties
object), but simpler (I would argue that System Properties are global anyway, so using a
singleton pattern would be a luxury).
This would require to update
[{{org.jgroups.util.Util}}|https://github.com/belaban/JGroups/blob/master/src/org/jgroups/util/Util.java]
as such:
- add the field {{private static Properties globalProperties=null;}}
- add a static setter for the {{globalProperties}} field
- modify the {{_getProperty(String,String)}} method (at line ~4099) in order to first
check for the {{prop}} key in the {{globalProperties}}, then, if not found, in the System
Properties, and finally use the default value if no value was found:
{code}
private static String _getProperty(String var, String default_value) {
if(var == null)
return null;
List<String list=parseCommaDelimitedStrings(var);
if (list==null ||list.isEmpty()) {
list=new ArrayList<String(1);
list.add(var);
}
for (String prop:list) {
retval = (globalProperties!=null?globalProperties.get(prop):null);
if (retval==null) {
// no value found from the global properties => look into the System
Properties
try {
retval=System.getProperty(prop);
} catch (Throwable e) {
// failed to get the system property => do nothing
}
}
if (retval!=null) {
return retval;
}
}
return default_value;
}
{code}
Thus, when the {{globalProperties}} are not set, the System Properties will be used
(unchanged behavior). Users who care about security would use the {{globalProperties}} and
others will still use System Properties. The documentation may also be updated in order to
warn the users about the (small) security risk of information disclosure.
Note that the {{getProperty(...)}} method at line ~3076 also uses
{{System.getProperty(String)}}, but I did not check if a modification is required here.
JGroups should not use System properties, because it's too
restrictive
----------------------------------------------------------------------
Key: JGRP-188
URL:
https://issues.jboss.org/browse/JGRP-188
Project: JGroups
Issue Type: Feature Request
Affects Versions: 2.2.8, 2.2.9, 2.2.9.1
Environment: all
Reporter: Robert Stevenson
Assignee: Bela Ban
Priority: Minor
Fix For: 2.4
Original Estimate: 1 day
Remaining Estimate: 1 day
JGroups should not use System properties for configuration, it should instead use a
Global Configurator class (singleton), similar to log4j; which just contains a Properties
object. This would allow JGroups to be much easier to move around to different
environments. For example : (Applet), which does not have access to easily change System
properties, on a per applet basis.
This new class could have a mapping/conversion method to make the current -D command line
options be put into this new Properties Configurator for backward compatibility
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira