【问题标题】:Set environment variable in shell script/access in Tomcat Application在 Tomcat 应用程序的 shell 脚本/访问中设置环境变量
【发布时间】:2012-04-26 13:06:35
【问题描述】:

我想添加可以通过我的 tomcat web-app 访问的环境变量。我已经通过this link,但我想在 root 用户中设置环境变量。该怎么做?

【问题讨论】:

    标签: java linux tomcat environment-variables ubuntu-10.04


    【解决方案1】:

    这行不通吗?

    转到您的环境文件。 sudo vi /etc/environment 和 添加所需的变量。并保存文件。

    我认为在最近的 Ubuntu 中,您必须重新启动系统才能使更改生效。

    【讨论】:

    • 但是我无法重启系统。有什么方法可以在不重启系统的情况下做到这一点?
    • 也许触摸 /etc/environment 和 source /etc/environment 可能会解决问题。
    • 对我不起作用,必须修改 /etc/init.d/tomcat7 并添加 export FOO=bar
    • 根据运行sudo service service_name start时的Ubuntu文档,/etc/environment中的环境没有被引用。另见问题:stackoverflow.com/questions/16645430
    【解决方案2】:

    得到了解决方案...我所做的是将导出语句放在/etc/init.d/tomcat6 的顶部,并通过命令sudo /etc/init.d/tomcat6 restart 重新启动服务器。所以现在我在 tomcat 服务器上运行的网络应用程序可以访问该变量。

    【讨论】:

    • 我认为修改原生 Apache 脚本 /etc/init.d/tomcat6 不是一个好主意。您的更改可能会干扰未来的更新,而且您正在修改默认的 Tomcat 行为。对我来说似乎很老套。
    • 我同意你的看法。请建议我任何其他方式来做到这一点。我已经在 AWS CloudFormation 上设置了所有环境,以便在 AWS 基础设施中实现自动化。所以它可能会自动完成所有的事情。但仍在寻找更好的建议。
    • 我不确定您是否曾经使用 AWS 用户数据让它工作,因为我很确定 tomcat 不会选择这些。请参阅我上面的答案以获取替代方法。
    【解决方案3】:

    根据文档 (http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt),您应该在 $CATALINA_HOME/bin/setenv.sh 中设置所有环境变量

    编辑: 为了完整起见,我想值得一提的是,尽管这是推荐的方式,但上面的文档指出:

    默认情况下 setenv 脚本文件不存在。如果脚本文件是 存在于 CATALINA_BASE 和 CATALINA_HOME 中,其中一个 首选 CATALINA_BASE。

    如果它不存在,您可能还想在以下位置查找环境变量:

    • /etc/tomcat/tomcat[67].conf (suse) 或
    • /etc/default/tomcat[67].conf(例如 ubuntu)或
    • /etc/sysconfig/tomcat[67].conf (rhel, fedora)

    【讨论】:

      【解决方案4】:

      你可以这样做

      1. sudo su 和 cd 到 /var/lib/tomcat8/bin/(或你的 tomcat bin 路径)
      2. 触摸 setenv.sh(如果不存在),如果文件已经存在,请执行 'vi setenv.sh'
      3. chmod 777 setenv.sh(使文件可执行)
      4. vi setenv.sh 并在 setenv.sh 中设置以下行 导出键=值
      5. sudo systemctl restart tomcat.service

      在您的 java 文件中,您可以使用以下代码检查变量是否已设置

      private static void printEnv() {
          System.out.println("******************************Environment Vars*****************************");
          Map<String, String> enviorntmentVars = System.getenv();
          enviorntmentVars.entrySet().forEach(System.out::println);
      
          System.out.println("******************************system Vars*****************************");
          Properties enviorntmentProperties = System.getProperties();
          enviorntmentVars.entrySet().forEach(System.out::println);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-25
        • 2018-04-27
        • 1970-01-01
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-03
        • 1970-01-01
        相关资源
        最近更新 更多