tomcat的catalina.sh脚本中JAVA_OPTS和CATALINA_OPTS的区别

本文介绍了在Linux环境下,使用Apache Tomcat 8.5.34和JDK 1.8.0_171时遇到的问题:通过shutdown.sh关闭服务时出现端口占用错误。分析发现原因是JAVA_OPTS中包含远程调试参数,在启动和关闭时均被调用,导致端口冲突。解决方案是将远程调试参数从JAVA_OPTS移至CATALINA_OPTS,因为CATALINA_OPTS仅在启动、运行和调试时生效,避免了关闭服务时的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提说明

OS信息:

Linux rel65 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Tomcat版本信息:

apache-tomcat-8.5.34

JDK版本信息:

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

 

错误描述

执行startup.sh脚本启动tomcat服务时正常,但是使用相同用户执行shutdown.sh脚本关闭tomcat服务时报错,错误信息

ERROR: transport error 202: bind failed
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

修复办法

将tomcat/bin/catalina.sh中的JAVA_OPTS去除远程调试用的-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005,并增加到属性CATALINA_OPTS中。

 

原因分析

这里需要看下JAVA_OPTS和CATALINA_OPTS在catalina.sh脚本中的作用。

先查看下备注:

#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
#                   "run" or "debug" command is executed.
#                   Include here and not in JAVA_OPTS all options, that should
#                   only be used by Tomcat itself, not by the stop process,
#                   the version command etc.
#                   Examples are heap size, GC logging, JMX ports etc.

#   JAVA_OPTS       (Optional) Java runtime options used when any command
#                   is executed.
#                   Include here and not in CATALINA_OPTS all options, that
#                   should be used by Tomcat and also by the stop process,
#                   the version command etc.
#                   Most options should go into CATALINA_OPTS.

由注释信息可知, CATALINA_OPTS属性里面的参数只会在start,run和debug时被执行调用,而JAVA_OPTS在执行任何命令时均会被调用。

因此当启动时,两个属性里面的参数均会被调用,所以原先远程调试的参数均有效。但是当调用关闭服务命令时,JAVA_OPTS的参数会被再次调用,但此时端口号已经被占用,所以会报端口占用的错误。而CATALINA_OPTS则不会有影响。

所以如注释所说,大部分参数应当放到CATALINA_OPTS中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值