我需要为我正在处理的RMI应用程序设置代码库,并且首先使用它成功完成了
try{
ResourceBundle config = ResourceBundle.getBundle("myApp");
String codeBaseUrl = config.getString("codeBaseUrl");
System.setProperty("java.rmi.server.codebase", codeBaseUrl);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
然后使用
java -Djava.rmi.server.codebase=http://192.168.1.1/path/to/codebase ...
Run Code Online (Sandbox Code Playgroud)
在命令行上.
这两种方法都允许在不需要重新编译的情况下更改代码库,但System.setProperty方法允许将代码库并入属性文件并使用相同的启动命令.
我读过的大部分教程/文档都使用-D方法让我相信这被认为是最佳实践,但我一直无法找到解释为什么我应该使用的另一个.
-D被认为是设置系统属性(如代码库)的最佳实践,它会带来哪些好处/它会避免哪些陷阱?
(已编辑 - 我误读了这个问题)
比较两者:
-D是可配置的 - 它是在运行时指定的System.setProperty()仍然是"运行时",但它是通过一个超出启动命令的文件进行编辑的首先,通过在运行时指定设置来驱动灵活行为总是优于硬编码行为(除非行为实际上不灵活 - 即除非有这样的值,否则不要使用配置).
使用文件的主要缺点是它可能包含敏感数据,如密码,系统管理员不希望永久存在于磁盘上.如果密码作为启动命令的一部分输入,则它是短暂的并且更加安全(会话命令历史记录不能承受).
使用文件的好处是您可以建立正确的设置并保留在文件中.您甚至可以通过源代码管理来管理文件.
还有另一种更安全的选择,即启动时要求在命令行输入密码,这样就不会留下任何痕迹.
| 归档时间: |
|
| 查看次数: |
7326 次 |
| 最近记录: |