如何为Java Web应用程序设置参数
我有一个Java的Web应用程序,它使用一些外部程序(调用命令行工具)。
我想让命令行程序的路径可配置,这样我就可以在不重新构建应用程序的情况下进行更改。
问题:
1)我应该使用哪个确切的参数(在web.xml中可用的参数),如果它只设置一次(部署时),之后永远不会更改?
2)如何在Java代码中访问此参数?
提前致谢
德米特里
web.xml中
command SOME_COMMAND . . . .
Java代码
String commandToExecute = getServletContext().getInitParameter("command");
另外
你也可以将这个东西放在classpath的property / xml文件中读取它,并在上下文初始化时将它放到servlet上下文中。
您可以使用env条目:
command line commandLine java.lang.String some_command
并从您的webapp代码中的任何位置获取它:
javax.naming.Context ctx = new javax.naming.InitialContext(); String command = (String) ctx.lookup("java:comp/env/commandLine");
在这种情况下,我会使用系统属性。 只需使用-Dyour.command.path=/path/to/your/command
等JVM标志运行应用程序服务器,然后在代码中,您只需编写:
String cmd = System.getProperty("your.command.path", "/some/default/fallback/path/cmd");
这样您就不会依赖于在某些Java EE / servlet容器中运行。
这是一个两部分的解决方案。
- 首先,我们可以创建一个Web应用程序可访问的属性文件。 这不一定是您的标准邮件属性,而是辅助文件。
- 其次,您的部署脚本和构建脚本可以执行一些额外的工作来在应用程序服务器中创建上下文目录,在该目录中它可以从构建中复制属性文件并使其也可用于命令行工具。
Apache CLI是进行某些编程访问的非常好的替代方案。