java - Tomcat 生产/开发环境

标签 java tomcat environment

在 PHP 开发中,可以通过服务器的“环境”变量确定应用程序是在生产环境还是开发环境中运行。

在 tomcat 服务器上是否有类似的变量可用,或者是否有更好的方法将应用程序用于生产和开发?

最佳答案

我们拥有的每个 Tomcat 实例都在 server.xml 文件的 GlobalNamingResources 部分中定义了一个 isProduction 标志。

server.xml:

<Server ...>
  ...
  <GlobalNamingResources>
    <Environment name="isProduction" value="false" type="java.lang.Boolean" override="false" /> 
  </GlobalNamingResources>

  <Service name="Catalina">
  ... etc ...
  </Service>
</Server>

这允许通过在引用资源的 context.xml 中创建一个属性来使该属性在整个应用程序中可用:

context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context ...>
  <ResourceLink name="isProduction" global="isProduction" type="java.lang.Boolean" />
  ...
</Context>

获取值:

public boolean isProduction() {
   Object o;
   try {
      o = (new InitialContext()).lookup("java:comp/env/isProduction");
   }  catch (NamingException e) {
      o = Boolean.FALSE; // assumes FALSE if the value isn't declared
   }
   return o == null ? Boolean.FALSE : (Boolean) o;
}

关于java - Tomcat 生产/开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378444/

相关文章:

java - 关闭 Spring @Service 的 Autowiring

java - Android Dex :Unable to execute DX (IntelliJ), 如何解决?

java - 用于 tomcat 的分布式 HTTP session 状态服务器

java - 预编译 JSP 和 <jsp-file> 标签

linux - linux "at"命令可以在/bin/sh以外的环境下运行吗?

java - OSX 上 Eclipse 中的环境变量

java - 在默认文件资源管理器中打开文件并使用 JavaFX 或纯 Java 突出显示它

java - 无法共同创建对象/找不到名字对象 |雅各布

java - 没有用于 Tomcat 的实体管理器的持久性提供程序

C# 在操作系统windows中设置环境变量(不执行)