繁体   English   中英

如何为 Java Web 应用程序设置参数

[英]How to set a parameter for a Java Web application

我在 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");

或者

你也可以把这个东西放在类路径中的property/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>

并从您的 webapp 代码中的任何位置获取它:

javax.naming.Context ctx = new javax.naming.InitialContext();
String command = (String) ctx.lookup("java:comp/env/commandLine");

在这种情况下,我会使用系统属性 go 。 只需使用 JVM 标志(如-Dyour.command.path=/path/to/your/command )运行您的应用程序服务器,然后在代码中,您只需编写:

String cmd = System.getProperty("your.command.path", "/some/default/fallback/path/cmd");

这样你就不会依赖在一些 Java EE / servlet 容器中运行。

这是一个两部分的解决方案。

  1. 首先,我们可以创建一个可供 web 应用程序访问的属性文件。 这不必是您的标准消息属性,而是辅助文件。
  2. 其次,您的部署脚本和构建脚本可以做一些额外的工作来在应用程序服务器中创建上下文目录,它可以从构建中复制属性文件并使其也可用于命令行工具。

Apache CLI 是进行一些编程访问的一个很好的替代方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM