【问题标题】:How to set a parameter for a Java Web application如何为 Java Web 应用程序设置参数
【发布时间】:2023-03-31 15:37:01
【问题描述】:

我有一个 Java 网络应用程序,它使用一些外部程序(调用命令行工具)。

我想让命令行程序的路径是可配置的,这样我就可以在不重新构建我的应用程序的情况下更改它。

问题:

1) 我应该使用哪个参数(web.xml 中可用的参数),如果它只设置一次(在部署时)并且此后永远不会改变?

2) 如何在我的 Java 代码中访问此参数?

提前致谢

德米特里

【问题讨论】:

    标签: java jakarta-ee


    【解决方案1】:

    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上下文中。

    【讨论】:

      【解决方案2】:

      您可以使用 env-entry:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

          • 属性文件是一个简单而好主意。 +1
          猜你喜欢
          • 2016-10-07
          • 1970-01-01
          • 2015-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多