如何在RHEL上作为服务运行时以调试模式启动Tomcat 6

时间:2012-12-07 21:17:55

标签: tomcat tomcat6 rhel6

这应该很简单,但是当它在RHEL 6.1上作为服务运行时,我无法在Tomcat 6上进行调试。

我已将以下行添加到/etc/tomcat6/tomcat6.conf

JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

当我用

重新启动tomcat 6服务时
service tomcat6 restart

命令行指示Tomcat关闭并启动,但它没有运行,当我查看catalina.out日志时,我看到

ERROR: Cannot load this JVM TI agent twice, check your java command line for duplicate jdwp options.
Error occurred during initialization of VM
agent library failed to init: jdwp

尝试重启Tomcat6服务对于关闭和启动都会失败。我必须重新启动RHEL。

我认为默认情况下Tomcat6可能在调试模式下运行,但是当我在tomcat6.conf中注释掉该行并使用netstat -an重新启动时,使用端口8000或Tomcat使用的任何端口都没有显示任何内容。 / p>

当Tomcat 6作为服务运行时,它是否可以在调试模式下运行?

3 个答案:

答案 0 :(得分:2)

只需检查 Catalina.sh 文件中提供的 PORT number 8000 即可。并检查是否有任何进程在相同的PORT编号8000中运行。

如果任何进程在同一端口运行,则停止进程并运行jpda。

检查同一地址中的 env 变量。 catalina.sh文件shell脚本清楚地告诉它使用端口8000来执行它。

如果您想更改端口地址并在 .bashrc 文件中设置 如

导出JPDA_ADDRESS = 8009

并执行命令

$ ./catalina.sh jpda run (这是普通方法)

如果您已经使用安全管理器运行

$ ./catalina.sh jpda run -security

并转到 Eclipse

转到 - > 调试配置

将Eclipse配置为远程调试

首先,我们必须使用我们要调试的应用程序的源代码打开或导入项目。之后我们必须从Eclipse设置调试:

1)单击工具栏中“调试”按钮(带有错误的按钮)的右侧(箭头朝向上方),然后单击“调试配置...”或菜单“运行”>调试配置...然后将打开一个具有不同调试配置的新窗口。

调试配置

2)在左侧菜单中选择“远程Java应用程序”,然后按“新启动配置”按钮(左上角带有文件夹图标的按钮)。

新的调试配置

3)使用与我们的Tomcat实例对应的数据填充配置:

Project: The project we want to debug: it has to contain the source code for the application we want to debug.
Connection Type: Standard (Socket Attach).
Host: IP of the server in which is Tomcat installed.
Port: Port indicated to JVM in address parameter. Port 8000 in our example

Eclipse没有显示。 eclipse中没有显示任何变化。

在eclipse中只需设置断点,然后在tomcat中运行应用程序。

<强> !!!!!!成功调试模式将正常工作!!!!!!!!!

<强> Congratzzzzz !!!!!

通过 sampath

答案 1 :(得分:1)

再一次重启似乎解决了它。 RHEL现在正在侦听端口8000,我可以连接一个远程调试器。

怪异。

答案 2 :(得分:0)

我遇到了同样的错误,原因是https://bugzilla.redhat.com/show_bug.cgi?id=899458。解决方法是从/usr/sbin/tomcat6中删除以下行:

# Get the tomcat config (use this for environment specific settings)
if [ -z "${TOMCAT_CFG}" ]; then
  TOMCAT_CFG="/etc/tomcat6/tomcat6.conf"
fi

if [ -r "$TOMCAT_CFG" ]; then
  . $TOMCAT_CFG
fi

您的问题可能有所不同(否则没有理由重新启动),但我要离开这个,以便搜索错误消息的人可以找到它。