配置Eclipse进行远程调试
为了能在Eclipse中远程调试JBoss应用需要以debug模式启动JBoss服务器这可以通过在批命令脚本文件bin/run中设置debug选项来实现JBoss提供的调试机制是基于Java平台调试架构(JPDA)的按以下方式设置JAVA_OPTS变量
set JAVA_OPTS= Xdebug Xnoagent Xrunjdwp:transport=dt_socketaddress=server=y suspend=n %JAVA_OPTS%
这些debug参数有
有关debug参数设置的详细说明参见JPDA文档
为了演示Eclipse的远程调试功能需要在JBossServlet中抛出异常为此我们在JBossServletjava中引入NullPointerException(空指针异常)把原先的代码
outprintln(Eclipse JBossDebugging);
改为
String str=null;outprintln(strtoString());
接下来为该Eclipse项目的远程调试进行设置在Debug选项下拉条中选择Debug选项如图所示
图 Debug选项
图中显示的是Debug屏在该屏中选中Remote Java Application节点右击节点选择New如图所示
图 新的debug设置
在Debug Configuration屏中为Debug设置指定名字选中要调试的项目也就是此前在Eclipse IDE中创建的EclipseJBoss项目为Connection Type(连接类型)选择默认值在Connection Properties(连接属性)中将Host指定为localhost将Port(端口)指定为(JBoss服务器批命令脚本run中的端口设定值)点击Apply按钮将此远程Java应用调试设置加入如图所示
图 JBoss调试设置
接下来在JBossServletjava文件中加入异常断点此前我们已在JBossServlet中引入了NullPointerException异常选择Run > Add Java Exception Breakpoint在该servlet类中加入断点如图所示
educitycn/img_///gif >图 加入Java异常断点
在Add Java Exception Breakpoint屏中选择NullPointerException如图所示NullPointerException断点被加入到servlet类中
educitycn/img_///gif >图 NullPointerException断点
如果servlet应用在JBoss服务器上运行时产生了NullPointerException异常该应用就会被挂起同时Eclipse IDE的Debug视图中会显示出该异常
远程调试JBoss应用
为部署在JBoss服务器上的servlet示例应用配置好debug设置后我们就可以在Eclipse IDE中调试servlet应用了参照用Eclipse开发一个JBoss应用一节所说的方法用buildxml文件对修改后(引入了NullPointerException异常)的JBossServletclass重新编译为web应用生成新的webappwar文件在run批命令脚本中设定调试选项以debug模式启动JBoss服务器
接下来在Debug屏中选择EclipseDebug作为调试设置点击Debug按钮将远程调试器与JBoss服务器连接如图所示
educitycn/img_///gif >图 将远程调试器连接到JBoss服务器上
这样Eclipse的远程调试器就连接到了JBoss服务器上选择Debug Perspective按钮切换到Eclipse的Debug视图在该视图中显示出远程调试器已连接到本机的JBoss服务器上端口号为如图所示
educitycn/img_///gif >图 远程调试器已连接到JBoss服务器上
在浏览器中输入URL地//localhost:/webapp/catalog来访问JBoss服务器上的JBossServlet就像我们在Debug视图中看到的那样servlet因抛出NullPointerException异常而被挂起产生了异常的那一行代码被显示出来如图所示
educitycn/img_///gif >图 JBoss服务器在产生NullPointerException处被挂起
抛出异常的那一行是outprintln(strtoString());我们可以在Eclipse IDE的Run菜单中选择不同的调试选项对该servlet应用进行调试
小结
我们在Eclipse IDE中以远程的方式调试了部署在JBoss服务器上的一个应用只要将服务器设置成以debug模式启动我们就可以用这个方法调试部署在其它类型应用服务器(如Weblogic)上的应用