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

Jon*_*gen 5 java tomcat kubernetes

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

apiVersion: v1
kind: Pod
metadata:
 name: tomcat-test-pod
...
...
env:
  - name: hostName
    value: 'test.com'
  - name: localhost
    value: 'localhost.com'
Run Code Online (Sandbox Code Playgroud)

这是我的 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"/>
Run Code Online (Sandbox Code Playgroud)

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

Pio*_*asz 4

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
Run Code Online (Sandbox Code Playgroud)

catalina.sh/startup.sh仅当您调用启动 Tomcat(直接或间接)时,这才有效。例如,当将 Tomcat 作为服务启动时,它将无法在 Windows 上运行。

  • 将系统属性添加到catalina.properties
org.apache.tomcat.util.digester.PROPERTY_SOURCE=org.apache.tomcat.util.digester.EnvironmentPropertySource
Run Code Online (Sandbox Code Playgroud)

这总是有效的。