简体   繁体   中英

Tomcat 7/8: Reuse of Environment variables in server.xml

for some projects with tomcat we externalize some configs (URLs, etc) in environment variables.

Example: /usr/share/tomcat7/conf/other-urls.xml

 <!-- LDAP -->
<Environment name="remote/com/mycompany/ldap" type="java.lang.String" value="ldaps://myldap.mycompany.net"/>

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))"     
    ....
    />   

...

This configuration does not work (javax.naming.NamingException: Cannot parse url: ${remote/com/mycompany/ldap}). When I write the correct LDAP-URL in connectionURL then it works. I try different ways: With ${..}, without, with java:/env/comp, without.

Is there a way to reuse the environment variable in the server.xml?

Thanks for any hint.

Ciao Peter Schütt

Instead of solving this via XML, you could try doing it via system properties ( -Dname=value ). There's an article which explains this in a more detailed fashion .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM