(我首先尝试谷歌,得到了一百万篇文章,这些文章只是对 tomcat 的安装自述文件的重复)。
我正在尝试更改用于在 Ubuntu 20.04 上运行 Tomcat9 的 Java 命令行。具体来说,我正在尝试设置 Xmx、启用 gc 日志记录、定义 HTTP 代理和其他一些内容。 Tomcat 是从存储库安装的。我在某处读到(当时没有记下 URL),这应该通过向单元文件添加覆盖并在 JAVA_OPTS 变量中设置所需的参数来完成。所以我做了这个......
[Service]
ProtectSystem=full
Environment="JAVA_OPTS=-noverify -Xms512M -Xmx4096M -server -Dprod=true
-Xloggc:/var/log/tomcat9/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5
-XX:GCLogFileSize=20M -Dcom.sun.management.jmxremote
-Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dlog4j2.formatMsgNoLookups=true
-Dhttp.proxyHost=proxy.bip -Dhttp.proxyPort=3128 -Dhttps.proxyHost=proxy.bip
-Dhttps.proxyPort=3128 -javaagent:/var/lib/tomcat9/lib/aspectjweaver-1.8.13.jar
-Dlog4j2.formatMsgNoLookups=true"
(我在环境行中添加了一些换行符以帮助此处的可读性 - 在源文件中它是一行)。
可以肯定的是,我也运行了一个,systemctl daemon reload
但是当我停止/启动服务时,我看到了这个......
/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.util.logging.config.file=/var/lib/tomcat9/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.awt.headless=true -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
-Dorg.apache.catalina.security.SecurityListener.UMASK=0027
-Dignore.endorsed.dirs= -classpath /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar
-Dcatalina.base=/var/lib/tomcat9 -Dcatalina.home=/usr/share/tomcat9
-Djava.io.tmpdir=/tmp org.apache.catalina.startup.Bootstrap start
这些不是我的 JAVA_OPT。
检查启动链(见下文),我看不到任何会删除我设置的选项的内容。
/lib/systemd/system/tomcat9.service
/usr/libexec/tomcat9/tomcat-update-policy.sh
$CATALINA_BASE/policy/catalina.policy
/usr/libexec/tomcat9/tomcat-start.sh
/etc/default/tomcat9
/usr/libexec/tomcat9/tomcat-locate-java.sh
$CATALINA_HOME/bin/catalina.sh
我宁愿将我的配置与打包软件分开。我在这里缺少什么?
答案1
原来我误读了其中一份文件。 /etc/default/tomcat9 覆盖 JAVA_OPTS 环境变量。
从该文件中的注释来看,它似乎是打包者希望用户放置自己的选项的地方。