如何在 tomcat 中设置 org.apache.tomcat.util.digester.EnvironmentPropertySource

how to set org.apache.tomcat.util.digester.EnvironmentPropertySource in tomcat

我想通过 Kubernetes 为 tomcat 中的 server.xml 设置环境变量。这是我的 deployment.yaml:

apiVersion: v1
kind: Pod
metadata:
 name: tomcat-test-pod
...
...
env:
  - name: hostName
    value: 'test.com'
  - name: localhost
    value: 'localhost.com'

这是我的 server.xml:

<?xml version='1.0' encoding='utf-8'?>
<Resource 
      auth="Container" 
      description="Global E-Mail Resource" 
      mail.debug="false" 
      mail.smtp.auth="false" 
      mail.smtp.ehlo="true" 
      mail.smtp.host="${hostName}"
      mail.smtp.localhost="${localhost}"  
      mail.smtp.port="25" 
      mail.smtp.sendpartial="true" 
      mail.transport.protocol="smtp" 
      name="mail/Session" 
      type="javax.mail.Session"/>

https://tomcat.apache.org/tomcat-9.0-doc/config/systemprops.html开始,它说我需要将org.apache.tomcat.util.digester. PROPERTY_SOURCE设置为org.apache.tomcat.util.digester.EnvironmentPropertySource,但我不确定我应该做什么。我需要在 setenv.sh 中设置它还是需要创建另一个 class?任何帮助将不胜感激..

org.apache.tomcat.util.digester.PROPERTY_SOURCE 是一个 Java 系统 属性 因此您可以在接受系统属性的地方设置它:

  • 您可以将其添加到命令行选项中,例如添加到 setenv.sh:
CATALINA_OPTS="$CATALINA_OPTS -Dorg.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource

只有当您调用 catalina.sh/startup.sh 启动 Tomcat(直接或间接)时,这才会起作用。例如,当作为服务启动 Tomcat 时,它不会在 Windows 上工作。

  • 添加系统属性到catalina.properties:
org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource

这总是有效的。