将运行时参数传递给tomcat服务器上的grails项目

时间:2015-09-01 09:44:03

标签: apache tomcat grails deployment configuration

我正在尝试将运行时的变量传递给我的应用程序来配置我的外部配置文件的存储位置。

我需要外部配置文件,以便每次配置更改时都可以更改配置而无需部署新版本,并且希望能够在运行时定义这些配置的位置,以便应用程序更具可移植性部署应用程序的团队可以遵循他们存储配置的现有规则。

我已经读过这样的答案: How to add custom "-Djava" arguments to Grails app? - 但我不确定这与我在本地计算机上使用war文件的关系,以及在传入param的情况下进行部署是如此。我一直在使用Tomcat Web应用程序管理器来只需选择要上传的war文件,然后点击delpoy - 文件就会上传并自动展开并启动。

https://grails.github.io/grails-doc/latest/ref/Command%20Line/war.html - 这表明参数必须在创建war文件时传递,而不是我所追求的。

在我的代码中,我有:

grails.config.locations = ["${System.properties['configFolder']}/application-config.properties"]

我正在寻找一种方法来在从应用程序管理器部署时包含参数,或者像

这样的命令
deploy myApp.war -DconfigFolder="/usr/share/tomcat5/.grails/myApp/conf/application-config.properties"

1 个答案:

答案 0 :(得分:0)

修改

事实证明,当您启动tomcat服务器时(或之后),而不是在部署应用程序时,您应该传递运行时参数。

所需命令是:

export CATALINA_OPTS="-DconfigLocation=/usr/share/tomcat5/.grails/TAPaS/"

或任何您想要的参数/值。

这可以在服务器启动后手动输入,也可以在CATALINA_HOME目录中创建包含该命令的setenv.sh文件。这可以使用echo $CATALINA_HOME找到。找到它的另一种方法是使用下面的start命令,并查看响应,例如

bash catalina.sh start
Using CATALINA_BASE:   /opt/apache-tomcat-7.0.61
Using CATALINA_HOME:   /opt/apache-tomcat-7.0.61
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.61/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-7.0.61/bin/bootstrap.jar:/opt/apache-tomcat-7.0.61/bin/tomcat-juli.jar

如果已将命令添加到setenv.sh文件,请使用命令bash catalina.sh start启动服务器。 bash catalina.sh stop用于阻止它。如果您不在目录中,则需要使用.sh文件的路径。

据我所知,这是不可能的。 每当.war文件被放入appBase

  1. 如果autoDeploy属性为“true”,则在Tomcat服务器运行时将自动部署应用程序
  2. 否则,将在启动Tomcat服务器时部署应用程序

    bash /opt/apache-tomcat-7.0.61/bin/shutdown.sh

    bash /opt/apache-tomcat-7.0.61/bin/startup.sh

    将关闭并再次启动服务器,并将部署appBase中的所有.war文件。

  3. 我可以看到需要部署实际命令的唯一实例是使用Client Deployer Package时。有关Tomcat部署的更多信息,请参阅:https://tomcat.apache.org/tomcat-8.0-doc/deployer-howto.html