如何在启动Tomcat时传递-D附加参数?

29

我有一个Maven项目,在运行命令mvn install后,所有项目和模块都成功编译并复制到本地仓库。但现在我想在Tomcat6中运行生成的Web应用程序。客户提供了一些Tomcat参数,如-Dapp.username,-Dapp.username,,这些参数将在项目启动时在内部使用。但我不知道如何在Tomcat6中设置这些附加参数。以下是我的开发环境:

  1. 操作系统 = Windows
  2. Tomcat = tomcat 6.0.27

请帮帮我吗?

6个回答

41

对于Tomcat 6,您应该将参数添加到startup.sh(Windows上则是startup.bat)中。对于Tomcat 7及以上版本,您应该在{Catalina Root} /bin/setenv.sh中设置参数,如下所示:

export CATALINA_OPTS="$CATALINA_OPTS -Dapp.username=username -Dapp.password=password"

或者在 Windows 系统中:

set CATALINA_OPTS="$CATALINA_OPTS -Dapp.username=username -Dapp.password=password"

注意:请注意在开头的$CATALINA_OPTS,这样您就不会清除之前设置的任何值。 如果不这样做,可能会创建一个非常难以调试的问题!

如果您设置的参数仅用于Tomcat,请确保使用CATALINA_OPTS进行设置。

如果您的应用程序将使用这些参数,请务必改用JAVA_OPTS。 Tomcat也会读取这些参数。 这也可以放在setenv.sh文件中。例如:

export JAVA_OPTS="$JAVA_OPTS -Dapp.username=username -Dapp.password=password"

或者在Windows中:

set JAVA_OPTS="$JAVA_OPTS -Dapp.username=username -Dapp.password=password"

3
这个答案需要更多的赞。catalina_opts更整洁。 - Monish Sen
1
尽可能使用catalina_opts。 - viz
刚刚在快速追踪后验证了一下:在Windows中不要包含引号,使用%代替$。所以它应该是:set CATALINA_OPTS =%CATALINA_OPTS%-Dapp.username = username-Dapp.password = password(Tomcat 8,Windows 10,Java 8) - apil.tamang
有用的链接:https://docs.oracle.com/cd/E40520_01/integrator.311/integrator_install/src/cli_ldi_server_config.html#:~:text=Apache%20Tomcat%20不运行,除非您在setenv文件中设置了LD_LIBRARY_PATH变量。 - andreagalle

19
您可以设置一个环境变量来实现这一点。例如,在Linux系统中:

export JAVA_OPTS="-Dapp.username -Dapp.username"

或者在Windows系统中:

set JAVA_OPTS="-Dapp.username -Dapp.username"

在启动Tomcat之前进行此操作。

7
为了安全起见,我会执行 export JAVA_OPTS="${JAVA_OPTS} -Dapp.username -Dapp.username" - Boris the Spider
1
但是我在哪里设置这些变量呢? - Rais Alam
你是如何启动Tomcat的?在控制台上使用startup.bat吗?还是作为服务或守护进程? - betomontejo
是的,借助于bin/startup.bat文件可以实现。 - Rais Alam
你可以通过在启动startup.bat的控制台窗口中执行“SET”命令来设置任意一个变量,或者你也可以前往Windows环境变量设置并在那里进行设置,二者取决于你的喜好。 - betomontejo
许多应用程序使用JAVA_OPTS环境变量,因此您可能会无意中破坏其他一些应用程序。最好设置CATALINA_OPTS,这更适用于Tomcat。 - kc2001

8

您需要设置 CATALINA_OPTS 系统变量 - Tomcat 在启动时会读取此变量(仅限于 Tomcat)。正如 @Betoverse 所说,可以使用以下两种方法来设置:

export CATALINA_OPTS="-Dapp.username -Dapp.username"

或者在Windows中:

set CATALINA_OPTS="-Dapp.username -Dapp.username"

您可以将该命令添加到UNIX的~/.profile中,以便自动设置。

我正在使用Windows操作系统。我应该在哪里设置这个变量?是在Windows环境变量中还是其他地方? - Rais Alam
1
在Windows上,它是一个环境变量。这里有一份指南可以帮助你设置它们。或者你可以像这里那样编辑startup.bat - 不过那样会比较混乱。 - Boris the Spider

6

我已经在 Windows 10 和 CentOS 7(Linux)上测试了 Tomcat 7/8 的参数。
1) 在 Windows 上需要在 {TOMCAT_HOME}/bin/ 路径下创建 setenv.bat 文件并插入以下代码:

set CATALINA_OPTS=-Dapp.username=admin -Dapp.password=12345

重要提示: 在Windows上设置参数时不要使用引号(" ")。

2) 在CentOs上需要在{TOMCAT_HOME}/bin/路径下创建setenv.sh文件,并插入以下代码:

export CATALINA_OPTS="-Dapp.username=admin -Dapp.password=12345"

您还可以创建 {TOMCAT_HOME}/conf/conf.d/custom.conf 并在其中插入相同的 export 命令。

我的IT员工在CentOS / Linux上安装了Tomcat 8,但我找不到任何关于“setenv.sh”的参考 - 换句话说,如果存在该脚本,则我找不到运行该脚本的任何位置。此外,我无法找到任何地方的“catalina.sh”。我是否安装了非标准的Tomcat 8? - rich p
1
你可以自己创建setenv.sh文件。默认情况下,它是一个空文件。 在CentOs上,通常的默认路径是/usr/share/tomcat8/bin/setenv.sh($CATALINA_BASE/bin)。我猜你的tomcat是通过包管理器(例如yum)安装的,并且默认配置为服务。因此,这是来自包管理器的标准tomcat。(https://dev59.com/h2ct5IYBdhLWcg3wLqnx) - Maksym
1
有用的链接 https://docs.oracle.com/cd/E40520_01/integrator.311/integrator_install/src/cli_ldi_server_config.html#:~:text=Apache%20Tomcat%20不运行,variable%20in%20the%20setenv%20file。 - andreagalle

5
如果您不想更改您的环境或编辑.sh文件,您可以使用以下方式启动服务器。
CATALINA_OPTS="-Dparam1=value1 -Dparam2=value2" catalina.sh start

0

在启动Tomcat服务器之前,右键单击项目 -> 运行为 -> 运行配置。第二个选项卡 -> -Dname=values,-Dname=values,-Dname=values。

+Dname=value怎么样?它的值会被加密。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接