Reputation: 83
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
Upvotes: 6
Views: 5863
Reputation: 26713
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.
Upvotes: 1