我在使用Amazon Linux 1 AMI构建的AWS实例中安装了tomcat8。在tomcat.conf中,我添加了使用命令替换$()设置的变量,以从AWS参数存储中读取参数,并提供有关数据库URL,名称等的信息。效果很好。每当tomcat启动时,它将运行并解析命令并根据当前参数存储值设置环境变量。然后可以在spring bean中使用它来连接数据库。
最近,我不得不更新为使用Amazon Linux 2 AMI。我想出了如何安装tomcat(8.5),但它现在已作为systemctl服务运行。当启动时,它按原样读取命令替换文本,因此最终将环境变量设置为“ $(.....)”,这显然不起作用。
如果我手动运行/usr/libexec/tomcat/servers start
,它会进行替换,但是当我运行systemctl start tomcat.service时,它不会。
我尝试使用jsvc,但这没有什么区别。在读取tomcat.conf并且不执行命令替换后,我可以立即在/usr/libexec/tomcat/preamble
中打印出其中一个变量。
有人知道为什么这不再有效吗?有什么方法可以像以前一样在运行时为tomcat设置环境变量?
我在使用Amazon Linux 1 AMI构建的AWS实例中安装了tomcat8。在tomcat.conf中,我添加了使用命令替换$()设置的变量以读取...
所以我想出了一种方法。如果我将文件放在/etc/tomcat/conf.d文件夹中,它将被解析。我将要设置的所有变量都移到了该变量中,并在前面添加了“导出”,这似乎可以做到。