设置Java系统属性而不将值放在命令行上
|
我有一些Java代码,取决于系统属性
super.secret.password
。运行我的应用程序时,需要设置该属性。该应用程序将由Shell脚本启动,并且密码将以最小的读取权限保存在文件中。
我真的不想写:
java -Dsuper.secret.password=letmein gov.fortknox.MyApp
因为那样的话,任何可以登录到计算机并运行ps
或top
的人都可以看到密码。
因此,有没有一种好的方法可以设置系统属性而不在命令行中公开它们?
我们提出的唯一通用解决方案是编写一个小的C程序,该程序从文件中读取系统属性,然后使用JNI调用API启动JVM。不用说,我们不愿意这样做。
如果没有不使用命令行就可以设置它们的方法,有没有一种方法可以使命令行隐藏起来?我们正在使用Red Hat Enterprise Linux Server 5.5。
就其价值而言,有问题的应用程序实际上是JBoss EAP 4.3.0,我们正在使用系统属性在其XML配置文件中填充替换结构(${like.this}
)。有特定于JBoss的解决方案-使用SystemPropertiesService(默认情况下,通过deploy目录中的properties-service.xml文件进行配置),或将-P选项传递给run.sh。但是,我对更一般的情况感兴趣,在这种情况下,可以是任何Java程序。
没有找到相关结果
已邀请:
6 个回复
疼嘶桐
呢率篓舍烫
如果凭据是用于数据源的,我还应该指出其他针对JBoss的解决方案:
基本上完成了上述工作,而
与
一起使用时提供了密钥库解决方案。请参阅EncryptingDataSourcePasswords。 最后,Peter Lawery提出的使用文件的建议也是有效的。
了驳
芜任亮蜡
邦绊门蔽惩
靛取糕奖穿