在基于Websphere做开发时,总是想直接在eclipse中能够debug,可惜一直都没有找到办法。
去装个RAD又实在嫌它是个庞然大物, 不想碰。
今天瞎逛博客时,还是发现了实现eclipse调试was的办法。
原文见:http://www.blogjava.net/Unmi/archive/2009/05/12/270213.html
我们用 Eclipse 开发 Web 项目时,多会用某个插件(如 MyEclipse) 来对 Tomcat 中的应用进行单步调试。而要调试 WAS 下的应用,MyEclipse 也是可以的,但在 MyEclipse 中启动 WAS 比较慢,且需要在本地安装一个 WAS。再有便捷点的方法是用 WSAD (Websphere Studio Application Developer) 或它的升级版 RAD (Rational Application Developer),它们内置了对 WAS 很好的支持,不过也需要本机安装了 WAS,WSAD/RAD 肥大的身躯自是不必说。若要让 WSAD/RAD 进行远程调试,似乎还得在Server 上安装个 IBM Agent Controller。
实际上 WAS 就支持远程调试的设置,打开它,你只需要用 Eclipse Debug 中的 Remote Java Application 功能连接到服务器上相应端口即行。设置很简单,这样的办法你甚至可以在闲时偷偷的调试一下生产环境的 WAS 应用以验证测试环境难以/无法重现的问题。具体做法如下(WAS 5.x 和 6.x 下的操作基本相同):
一:配置 WAS,打开调试服务
进到 WAS(或ND) 的管理控制台,在服务器 ->应用程序服务器 中,点击要启用调试服务的应用服务器,然后进入调试服务 ,勾选上启动 (指定当服务器启动时服务器是否将尝试启动指定的服务。)。JVM 调试端口 默认为 7777,注意该端口不能有冲突(如有多个应服务器要启用调试服务时,需要指定别的端口)。其他选项默认,或根据实际来设定。
确定 、保存 后重启应用服务器,WAS Base 版需要回到操作系统下重启,如果是在 ND 管理控制台下,可直接在页面中重启应用服务器。
二:配置 Eclipse,使用远程调试
Eclipse 的菜单 Run -> Open Debug Dialog 窗口中,右击 Remote Java Application ->New ,在右方的 Conect 标签页中,选择你要调试的 Project (即发布到 WAS 下启用了调试服务的,在你的 Eclipse 中存在的项目),Host 填上 WAS 服务器的 IP,Port 就是前面的 JVM 调试端口。其他两个标签页 Source /Common 可留意下。
点击 Debug 按钮,这时候 Eclipse 即处理于侦听 WAS 服务器的 JVM 调试端口的状态。
三:打上断点,调试应用
在 你的 Eclipse 中的项目(注意,该项目已部署到 WAS 上的) 要调试的代码行中打上断点,然后可以在网页上浏览 WAS 上的该应用。当执行到所在断点的代码行时,Eclipse 就会停在该行上,让你尽情的 F5/F6 的跳,像平时那样 Watch/Inspect/Display表达式或变量。
其他缺点就是:
1)观察不到控制台的输出,还得看 WAS 的 SystemOut.log 文件或日志文件。
2)JSP 文件无法调试,因为定位不到原码,并且这种方式也不足以聪明。
3)代码更新后,需手工把类文件或 JSP 文件拷到 WAS 的相应目录下。
4)启动了调试服务后,严重影响功能,通过鼠标点击就能感觉到,所以正式系统上完事后赶紧关了该功能。