我们用 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)启动了调试服务后,严重影响功能,通过鼠标点击就能感觉到,所以正式系统上完事后赶紧关了该功能。
参考:1. WEBSPHERE+ECLIPSE远程调试
本文链接 https://yanbin.blog/eclipse-remote-debug-was/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。