【问题标题】:Unable to use JConsole with Tomcat running as windows service无法将 JConsole 与作为 Windows 服务运行的 Tomcat 一起使用
【发布时间】:2010-10-04 22:06:39
【问题描述】:

我将 tomcat 6.0.18 作为 Windows 服务运行。在服务小程序中,jvm 是默认配置的,即它使用 JRE 的 jvm.dll。

我正在尝试使用 JConsole 监控此应用程序,但无法在本地连接到它。我添加了参数 -Dcom.sun.management.jmxremote(在使用 start.bat 脚本启动 tomcat 时有效)。但是jvm好像没有接参数。

【问题讨论】:

    标签: java tomcat jmx jconsole


    【解决方案1】:

    有一个不错的 GUI 来编辑选项,无需在注册表中乱七八糟。

    打开 C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\tomcat6.exe(或者直接双击任务栏中的监视器图标)。转到 Java 窗格,将以下内容添加到参数列表中,然后重新启动 Tomcat。

    -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

    然后您可以连接 JConsole 或更新的 VisualVM。

    【讨论】:

    • 有了这个配置,我可以在localhost:8086上作为远程进程连接到进程(无需输入用户名和密码)
    • 请注意:tomcat6.exe 配置面板现在称为Tomcat7w.exe
    【解决方案2】:

    这是更改 jvmoptions 和与服务交互的规定方式:

    http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html

    我会尝试进入您在 HKLM/Software/Apache Software Foundation/Procrun 2.0//Parameters/Java 的注册表并直接编辑“选项”多字符串值。

    【讨论】:

    • 如果是 64 位,HKLM\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\\Java
    【解决方案3】:

    我发布它主要是为了给自己记录这些信息,我还没有验证它 - 但这应该也可以:

    http://mysqlandsqlserver.blogspot.com/2010/02/jconsolejmap-and-tomcat-as-windows.html

    【讨论】:

    • 这适用于我在 64 位 Windows 笔记本电脑上。不需要安装任何额外软件的加分项。
    【解决方案4】:

    仍然有一种相当简单的方法可以将 JConsole 连接到作为 Windows 服务启动的 Java 进程,使用我发现的本地模式 here

    基本上它说,为了连接到作为 Windows 服务启动的 Java 进程,您需要将 JConsole 作为 Windows 服务启动(您可以使用 Windows 原生 api 或使用任何包装器,如 yajsw。)

    顺便说一句,这将使您不必重新启动对我来说至关重要的 Java 进程。

    【讨论】:

      【解决方案5】:

      如果 Tomcat 作为 Windows 服务运行,并且您想在本地附加到 JVM,则需要将 VisualVM 或 JConsole 作为系统帐户运行。您可以使用Sysinternals PsExec.exe 来完成此操作。

      psexec.exe -i -s c:\visualvm\bin\visualvm.exe
      

      【讨论】:

      • 这似乎不起作用。 D:\Packages\Java\jdk1.6.0_25\bin>psexec -i -s jvisualvm.exe PsExec v1.98 - 远程执行进程 版权所有 (C) 2001-2010 Mark Russinovich Sysinternals - www.sysinternals.com jvisualvm.exe 已退出在 MACHINENAME01 上,错误代码为 -1073741819。
      【解决方案6】:

      在 catalina.bat 顶部附近添加以下内容

      set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote ^
          -Dcom.sun.management.jmxremote.port=8086 ^
          -Dcom.sun.management.jmxremote.ssl=false ^
          -Dcom.sun.management.jmxremote.authenticate=false
      

      停止并重新启动tomcat(显然)

      运行 jconsole.exe。如果您的 tomcat 作为服务运行,则以管理员身份运行 jconsole.exe。

      选择远程进程并输入localhost:8086

      【讨论】:

      • 我在tomcat7目录下的setEnv文件中添加了这些参数,效果很好。
      猜你喜欢
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多