使用jvisualvm调试本地Tomcat应用

今天想用jvisualvm调试下Tomcat,却发现jvisualvm中找不到Tomcat,原来是因为Tomcat的临时目录设置问题。jvisualvm是通过pid来查找本地java应用的,pid文件存放在临时目录下的hsperfdata_<username>文件夹下。而Tomcat的临时目录使用的是CATALINA_TMPDIR:

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

而CATALINA_TMPDIR目录默认是Tomcat所在目录

if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"
:gotTmpdir

而jvisualvm的临时目录默认使用的是操作系统的临时目录,所以,jvsualvm就读取不到Tomcat的pid文件,也就无法调试Tomcat了。

解决办法就是使jvsualvm和Tomcat使用同一个临时目录,设置Tomcat的CATALINA_TMPDIR目录到系统的临时目录即可,可以在操作系统里添加环境变量,也可以在Tomcat脚本里添加。

使用jvisualvm调试本地Tomcat应用

时间: 2024-10-11 11:25:35

使用jvisualvm调试本地Tomcat应用的相关文章

windows调试本地启动的tomcat

我们一般都通过Eclipse进行tomcat的本地调试,但有些特殊情况下需要直接本地启动tomcat(进入tomcat的bin目录下执行startup.bat),此时我们可以利用类似远程调试模式的方式来进行debug. 首先需要在bin/catalina.bat里加入远程调试的环境变量设置,这里我们把调试端口号设为18080 set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:

开发环境eclipse、myEclipse本地tomcat调试发布maven项目遇到的糟心事

之前一直用myEclipse开发Web Project项目,通过myEclipse本地部署tomcat还算顺利,但是有个问题,myEclipse中Java Compiler只支持到1.7,但是spring boot要求至少是jdk1.8,所以放弃了myEclipse转为eclipse,至于idea后面再说吧.这里先说一下开发环境eclipse.myEclipse本地tomcat调试发布maven项目遇到的糟心事. (1)myEclipse部署maven项目到tomcat上识别不了项目,无法部署

使用JVisualVM 远程监控Tomcat程序中使用JMX鉴权访问

如何配置JVisualVM远程监控Tomcat程序请参考:http://hiandroidstudio.blog.51cto.com/5902332/1795310 1.配置JMX访问文件     # cd $CATALINA_HOME/conf/     # cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.password     # chmod 700 jmxremote.password    (

解决本地tomcat服务器内存不足问题

2014-6-25 9:47:48 org.apache.coyote.http11.Http11Processor process严重: Error processing requestjava.lang.OutOfMemoryError: PermGen space 在server窗口,双击配好的server,点击openlaunch configuration  在 arguments 选项卡的VM arguments 的最后加上以下配置信息就好. -Xms256M -Xmx1024M 

夜神模拟器访问本地tomcat服务器测试:失败

绿色版本tomcat解压后,在浏览器中输入http://localhost:8080/(默认端口为8080,可在配置文件中修改),出现如下页面: 该页面来自:/apache-tomcat-8.0.26/webapps/ROOT/index.jsp 在J2ee应用开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务.如果在Android模拟器中也采用同样的地址来 访问,Android模拟器将无法正常访问到tomcat上部署的服务.可想而知:Android底层是Linu

Chrome调试本地文件无法使用window.opener对象进行窗口间值传递

今天在百度BAE上建了个应用,svn上传后发现页面间互调有些问题,几经查询发现: (1)IE下正常的window.opener.object1.object2页面间对象访问方法在Chrome下不能使用,修改为window.opener.document.getElementById('object2')解决问题: (2)Chrome调试本地网页文件时无法使用window.opener对象访问父窗口内的对象,也就无法实现窗口间的值传递.

android - 模拟器连接本地tomcat

在使用android真机试图连接本地的tomcat的时候,发现一直没有反应.网上搜了很多资料,加上自己不断测试,后来发现模拟器访问tomcat的时候,ip的概念跟在pc上访问tomcat用的ip,根本就不同,更不用说真机了.怎么说呢?如果使用localhost(或127.0.0.1)就表示连接android 模拟器本身,所以,通过localhost(或127.0.0.1)连接,是行不通的.这时(使用android模拟器连接tomcat)可以使用android模拟器默认的ip(10.0.0.2),

[转]解决web项目无法部署到eclipse配置的本地tomcat

web项目无法部署到eclipse配置的本地tomcat 一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没有出现所建立的工程名字. 二.验证 很明显项目并没有自动部署到Tomcat的Webapps中而是部署在了别的容器中.在内置浏览器中输入http://localhost:8080/webDemo/login.jsp可正常打开.但在外部浏览器上

LoadRunner+Android模所器实现抓包并调试本地服务端

步骤就是 1:新建LR脚本.协议选择Mobile Application - HTTP/HTML 2:在record里选择第三个:Record Emulator........ 3:  选择下一步后,在emulator to record选择模拟器tools目录下的emulator.exe                     command line 里输入avd虚拟机的名称:用@连接  如@test      working directory 随便选个路径就行了 4:然后运行,就会自动启