Tomcat 7/8:在server.xml中重用环境变量

use*_*024 6 tomcat server.xml

对于一些使用tomcat的项目,我们将环境变量中的一些配置(URL等)外部化.

示例:/usr/share/tomcat7/conf/other-urls.xml

 <!-- LDAP -->
<Environment name="remote/com/mycompany/ldap" type="java.lang.String" value="ldaps://myldap.mycompany.net"/>
Run Code Online (Sandbox Code Playgroud)

server.xml中

 <?xml version='1.0' encoding='utf-8'?>
 <!DOCTYPE server-xml [
   <!ENTITY Other-URLs SYSTEM "/usr/share/tomcat7/conf/other-urls.xml">
 ]>
 <Server port="8005" shutdown="SHUTDOWN">
 ...
   <GlobalNamingResources>
      &Other-URLs;
   </GlobalNamingResources>
   ....
   <Service name="Catalina">
   ....
     <Engine name="Catalina" defaultHost="localhost"   jvmRoute="4996b9646dc">

  <Realm className="org.apache.catalina.realm.JNDIRealm"
       connectionURL="${remote/com/mycompany/ldap}"
       userPattern="(|(uid={0},ou=People,dc=mycompany,dc=net)(uid={0},ou=Other,dc=mycompany,dc=net))"     
    ....
    />   
Run Code Online (Sandbox Code Playgroud)

...

此配置不起作用(javax.naming.NamingException:无法解析url:$ {remote/com/mycompany/ldap}).当我在connectionURL中编写正确的LDAP-URL时,它可以工作.我尝试了不同的方法:使用$ {..},没有,使用java:/ env/comp,没有.

有没有办法在server.xml中重用环境变量?

谢谢你的任何提示.

CiaoPeterSchütt

min*_*das 1

您可以尝试通过系统属性 ( -Dname=value) 来解决此问题,而不是通过 XML 解决此问题。有一篇文章以更详细的方式解释了这一点