我有一个Java应用程序,它使用一些外部程序(调用命令行工具)。如何为Java Web应用程序设置参数
我想让命令行程序的路径可配置,以便我可以在不重新构建应用程序的情况下对其进行更改。
问题:
1)准确的参数,我应该使用(掉那些在web.xml中提供的),如果只设置一次(在部署),然后永远不会改变?
2)如何在Java代码中访问此参数?
在此先感谢
德米特里
我有一个Java应用程序,它使用一些外部程序(调用命令行工具)。如何为Java Web应用程序设置参数
我想让命令行程序的路径可配置,以便我可以在不重新构建应用程序的情况下对其进行更改。
问题:
1)准确的参数,我应该使用(掉那些在web.xml中提供的),如果只设置一次(在部署),然后永远不会改变?
2)如何在Java代码中访问此参数?
在此先感谢
德米特里
的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<context-param>
<param-name>command</param-name>
<param-value>SOME_COMMAND</param-value>
</context-param>
.
.
.
.
</web-app>
Java代码
String commandToExecute = getServletContext().getInitParameter("command");
或者
你也可以把这个东西属性/ XML文件中的类路径读它,并把它当背景来初始化servlet上下文。
您可以使用ENV条目:
<env-entry>
<description>command line</descriptor>
<env-entry-name>commandLine</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>some_command</env-entry-value>
</env-entry>
而且在你的web应用代码从任何地方获得它:
javax.naming.Context ctx = new javax.naming.InitialContext();
String command = (String) ctx.lookup("java:comp/env/commandLine");
我会去,在这种情况下的系统性能。只是一个JVM标志像-Dyour.command.path=/path/to/your/command
运行应用程序服务器,然后在代码中,你只需要写:
String cmd = System.getProperty("your.command.path", "/some/default/fallback/path/cmd");
这样你就不会依赖于一些Java EE/Servlet容器运行。
这是一个两部分的解决方案。
Apache CLI是做一些程序化访问的一个很好的选择。
属性文件是一个简单而好的想法。 +1 – Vincent 2013-06-13 04:58:37
Thansk,解决了我的问题。 – 2011-06-01 11:15:30
欢迎您:) – 2011-06-01 11:35:59