动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网络应用 → 阅读文章

 调试WebSphere应用程序(1)

作者来源:IBM中国  
阅读 数 379 人次 , 2006-3-18 11:21:00 

2001 年,IBM 为开放源代码社区引入了 Eclipse 平台,以努力使其产品的工具对第三方产品更加开放,同时也努力对平台进行总体上的加强。作为这个战略的一部分,IBM 现在提供了一套新工具,用来构建基于 Eclipse 平台的企业 Java™ 应用程序。这套新工具称为 WebSphere™Studio Application Developer,它集成了一个基于 Java 的调试器来作为它自己的调试器。

这给我们带来了很大的好处,因为我们不必再使用两个调试器。VisualAge™forJava 由一个在 VisualAge for Java 内进行调试的内部调试器和一个用于调试远程服务器的 IBM 远程调试器(IBM Remote Debugger)组成。现在我们可以使用一个调试器,它可以满足您的全部需要,并且具有 IBM 一贯提供的丰富的功能。

我们打算在两篇文章中向您介绍这个调试器。我们假设读者熟练掌握了 J2EE、WebSphere Studio Application Developer 开发和部署的基础知识。

在这篇文章中,我们通过在 WebSphere Studio Application Developer 内使用 EJB、Servlet 和 JSPs™,向您介绍如何使用这个调试器及其某些基本/集成功能来调试 Java 应用程序。我们将采取一种实际操作的办法介绍一个简单的 Web 应用程序,这个应用程序存在几个相互嵌套的问题(一个问题在 JSP 代码中,一个问题在 Servlet 代码中,还有一个问题在 EJB 代码中),我们将使用这个调试器发现和修正全部三个问题。

在第2 部分中,我们将说明,把应用程序部署到 WebSphere Application Server,高级版(Advanced Edition(AE))之后,如何使用 WebSphere Studio Application Developer 来调试它。

这里可下载文件DebugInWSADpt1.zip ,包含有本文所描述的类和归档。

调试一个简单的 Java 应用程序

在调试器中启动您的应用程序

  1. 切换到(或打开)一个 Java 透视图。
  2. 创建一个新的 Java 工程并将之称为 TestDebug
  3. 将样本 Java 应用程序 testdebug.jar 文件导入到 TestDebug 工程。
  4. 请检查 poc.debug.app.AppDebug.java 。它是一个简单的应用程序,我们将用它来演示调试器的基础知识。
  5. 插入一个断点到 main 方法中的循环内的以下语句: x = y + z;

    要这样做,您可以双击源代码的左窗格,或使用弹出菜单,如下面的图 1 所示。
  6. 图 1. 向源代码添加断点

    向源代码添加断点

  7. 在工具栏中,单击 DebugDebug 图标)按钮。您将看到一个对话框,询问您想使用哪一个启动程序。选择 Java Application,选中 Set as default launcher...复选框,然后单击 Next

    运行应用程序的另一个按钮是 RunRunning man 图标)按钮。这个按钮在非调试 Java JVM 中运行应用程序,这种 JVM 的执行速度更快,但不允许调试或使用断点。这是 WebSphere Studio ApplicationDeveloper 和 VisualAge for Java 之间的根本不同之处,VisualAge for Java 在它自己的 JVM 中运行所有应用程序,并且总是在调试模式中。而 WebSphere Studio Application Developer 则使用可插式 JVM,并且您可以选择是否要在调试模式中运行。

  8. 选择您想测试的类。WebSphere Studio Application Developer 给您一个选项,让您选择要用应用程序启动程序(Application Launcher)启动的、在同一个工程中的一组类。
  9. 这个启动程序将启动另一个 JVM 进程来运行您的应用程序(看一下 Windows Task Manager ,其中将显示一个额外的 javaw 进程,并且将出现一个带 AppDebug.java 源代码的 Debug 视图。)

现在让我们停下来,快速看一下我们在调试模式中可以使用的不同视图和功能。

调试器透视图和调试器任务

Debug/Process/Navigator 视图

Debug 视图显示当前线程、先前终止的线程、执行堆栈和停止时所在的当前断点。请注意,正是这个 debug 视图带有这些熟悉的按钮: StepStep intoStep outRunSuspend和其它调试控制按钮。

单击 Process 窗格将向您显示当前进程,系统正在用来运行这个应用程序的可执行文件(在我们的案例中是 javaw )。

Navigator 窗格只是一个浏览器,它允许您全面浏览代码,而且不用离开调试透视图就可以再多设置些断点。

图 2. Debug/Process/Navigator 视图

Debug/Process/Navigator 视图

Breakpoint/Inspector/Variables/Inspector 视图

这个视图的缺省窗格是 Breakpoints 视图,您将在其中看到程序中可用断点的列表。您也可以在一个断点上单击鼠标右键并从弹出菜单中选择 HitCount,它告诉调试器在一定数量的命中后停止。如果你想让循环停止于某次迭代,在这样的循环内设置断点,这很有用。

把您的断点的 HitCount设置为 2

如果您在 Variable 窗格上单击,那么您将有机会看见可用的变量以及它们的值。在任何变量上单击鼠标右键,您都将得到以下选项:

  • Inspect-- variables 视图可能包含许多变量。inspector 视图允许您集中在感兴趣的少量变量上。
  • Change Value-- 这是一个非常重要的功能。当您选择这个选项时,您将可以改变所选定的变量的值,并可以研究这一改变对程序执行的影响。
  • Show Type Names-- 这个选项显示变量的类型。
  • Show Qualified Names-- 这个选项允许您看到变量类型的全限定名。

图 3. Breakpoint 视图

Breakpoint 视图

图 4. Variables 视图

Variables 视图

单击 RunRun 图标)按钮,您将注意到执行将在断点处停止。检查 count 变量和其它变量的值,确认程序执行在循环的第二次迭代处停止。这是我们前面设置的命中计数(hit count)。

Code、Outline 和 Tasks/Console 视图

Code 和 outline 视图跟您在其它透视图中看到过的视图是相同的。tasks 视图也一样,它与 Console 视图共享同一个窗格。这个调试器的优秀功能之一是可以运行到代码的某个点上。

例如,如果我们现在想运行到并停止在循环后面紧跟的语句上,则我们可以在 code 视图中,在该语句上单击鼠标右键并选择 Run to Line。当您单步执行(step-over)该语句时,程序在 console 视图中输出 x 的值。请注意 console 视图如何自动变成活动的窗格。这是 console 视图的缺省行为,每次您输出一些内容时,console 视图都会变成活动的。您可以从 Preferences 对话框的 Debug 窗格改变这种行为和 console 视图中的输出格式。

在运行调试器时修改代码(热修改)

在 VisualAge for Java 中,我们有了“热方法编译(hot method compiling)”功能。这意味着我们可以在调试一个方法时修改该方法内的代码,调试器会自动跳回到执行块的开头,我们可以继续调试而无需重新运行应用程序。这是一个可用于 VisualAge for Java JVM(我们称它为“J9”类 JVM)的功能。这个功能在标准 JVM(例如:WebSphere Studio Application Developer 附带的 JVM)中是没有的。

这个新工具确实虑及了在您修改 WebSphere Application Server 中的 Servlet 后重新装入它。这保证了这个 Servlet 方法的第二次执行将反映您的最新修改。

Servlet/JSP 的调试

要演示编译器调试 Servlet/JSP 的功能,请将 TestEAR.ear 文件装入到名为 TestEAR的工程。如果您遇到了任何编译错误,请确保刚刚创建的 AdderEJB 工程在 AdderWEB 工程的类路径中。

理解 Adder 企业应用程序

我们构建了一个名为 poc.debug.ejbs.AdderSession 的会话 EJB,它提供 strCat 方法,这个方法使用内存缓冲区(在 Java 中将字符串连接起来的快速的、推荐的办法)将两个字符串连接起来。




  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:无线路由“放飞”无线FTP服务器
· 下一篇:如何更改WebSphere的Windows登录密码(1)
· 在ASP.NET中实现AJAX(1)
· HijackThis日志细解正文(十三)
· Windows 2000系统下关闭端口的方法与思路
· 天网防火墙V2.61学习教程(4)
· Windows系统中隐藏驱动器



关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077