Apache Tomcat:在 Solaris 11.4 (csh) 上从 7.0.77 升级到 8.5.51

Apache Tomcat: 7.0.77 to 8.5.51 upgrade on Solaris 11.4 (csh)

我们正在尝试将我们的一个 tomcat 从 7.0.77 升级到 8.5.51,但 运行 遇到了一些问题。

首先介绍一下我们当前设置的历史:

Apache Tomcat Solaris 11.4.20.4.0 上的 7.0.77,1 个带有 CSH 作为 shell 的 webapps warfile。为了设置我们的 JAVA_OPTS 和我们的 CATALINA_OPTS 我们在过去编辑了 bin/catalina.sh 并在第 119 行放置了以下内容:. opts.inc 此设置完美运行,并将继续如此。

示例opts.inc文件:

#!/bin/sh
JAVA_OPTS="-d64 -server -Xms1g <snip>"
CATALINA_OPTS="-Dtomcat.session=${JVMROUTE} -Dcom.sun.management.jmxremote <snip>"

注意:我们知道这是一种不好的做法,我们不会再在其他基于 bash 的 tomcat 上这样做(或这个)

现在的问题是我们要升级到 8.5.51,我们需要使用 setenv.sh(似乎是必需的 - 来自我们之前的其他 bash env tomcat 升级)。我们尝试了旧方法,但 logs/catalina.out 显示未应用 ENV 参数。这对我们 运行ning bash 的其他 tomcat 来说不是问题,因为它有效:

正在 bash tomcats(在 csh 中试过但没有成功)

#!/bin/sh
JAVA_OPTS="-Dcom1 -Dcom2 -Dcom3 ... etc" 
CATALINA="-Dcom4 -Dcom5 etc"

这在命令行上手动应用时有效,但在脚本中无效

cat $TOMCAT_DIR/bin/setenv.sh 
#!/usr/bin/csh 
setenv FOO "-Dcom1 -Dcom2 -Dcom3 etc"

运行 以上作为该 bin 目录中的测试:./setenv.sh(无错误)

环境 |grep FOO

没有。

@csh提示符

setenv FOO“-Dcom1 -Dcom2 -Dcom3”

环境 |grep FOO

FOO=-Dcom1 -Dcom2 -Dcom3

我现在真的不知道该怎么办,非常感谢任何帮助。

运行 你的 csh 脚本作为 ./setenv.sh 启动一个新的 shell,在那个 shell 中设置环境,然后当那个 shell 退出时,什么都没有改变。

要让它更改当前 shell 中的环境变量,假设它也是 csh 或 tcsh,您需要 运行 将其设置为 source ./setenv.sh,因此脚本在您当前的 shell 中 运行 而不是仅为脚本启动一个新脚本。

所以简单的解决方案是这样的:如果您使用的是 csh,只需照常执行以下操作即可。不要像我一样纠结于不同的shell

#!/usr/bin/sh

JAVA_OPTS="-Dcom1 -Dcom2 -Dcom3"
CATALINA_OPTS="-Dcom1 -Dcom2 etc"

如果我尝试过这个,我本可以避免一些心痛。我也 运行 解决了一些问题:JasperListener 也是,但是这个 post 解决了这个问题:JasperListener? Upgrading from Tomcat 8 to Tomcat 9

感谢那些回复并试图提供帮助的人。