信息化 频道

CRM中的管理理念

    调试标准的Java 应用程序

    除了调试Web应用外,Workshop还允许你调试标准的Java应用程序。我们继续用SamplesApp进行试验。
    1. 按下IDE工具栏中的Stop 按钮(如果你仍然在运行HelloWorld.jws的话)。
    2. 打开ProxyClient项目中的文件MazeClient.java。
    3. 在main方法中设置一个断点。
    4. 按下IDE工具栏中的开始按钮。你将找到断点。
    5. 按下IDE工具栏中的继续按钮。
    6. 等到"Enter rows"出现在Output窗口中。
    7. 按下IDE工具栏中的Pause按钮。
    现在你可以查看Call Stack框或者Threads框,看看进程在做什么。通过这样做,你可能会注意到一个问题:该进程正在等候来自于控制台的输入,而IDE没有任何用于输入的控制台。要正确调试该应用程序,我们需要从命令行运行这个程序并连接它。

    连接正在运行的进程

    在进一步讲解之前,你应该阅读 ProxyClient项目中的readme.html。确保你能够从命令行运行该项目。
    1. 打开build.xml,然后向javac ant任务中添加debug="true"
    2. 在命令行中输入"ant compile"。
    3. 打开run.bat。(或者如果你运行的是Linux,就打开run.sh)
    4. 插入参数"-Xdebug -Xrunjdwp:transport=dt_socket,address=2235,suspend=n,server=y"。
    5. 输入"run",从命令行运行MazeGen。 

    现在你需要设置调试器选项来连接到那个进程。

    1. 在IDE中右键单击ProxyClient项目,然后选择Properties选项。
    2. 进入调试器面板。
    3. 在Debugging Options下,单击"Attach to Process"单选按钮。
    4. 现在,在"Attach To Process Settings"下将端口设置为2235。
    5. 单击OK。
    现在当你打开文件MazeClient.java并按下开始按钮时,IDE将停止在你设置的断点处。使用同样的技术将调试器连接到任意正在运行的Java进程。

    远程调试Web应用

    远程调试Web应用简单而快速。当你启动服务器时创建的调试代理更会加快这一场景的进度。我们已经创建了一个代理,这个代理与IDE之间采用一中很笼统的协议。然后代理将这个协议翻译为更细粒度、但是更详细的JVM 可以理解的JDI(Java调试接口)协议。这就使得通过网络的调试信息数量大大减少。为了演示这一点,需要另一台安装了Workshop的机器:
    1. 进入另一台安装了Workshop的机器,并启动Workshop。
    2. 打开SamplesApp。
    3. 在Tools菜单下打开Application特性,并把Hostname设置为第一台机器的名称。
    4. 进入文件 HelloWorld.jws,并在Hello()中设置一个断点,位置是该函数的返回行。
    5. 按下Start按钮。你现在应该可以正常调试了。
    警告:当按照这种方法进行调试时,你将不能把改动部署到服务器上。你对源代码所做的任何改动都需要通过WebLogic 控制台重新建立和重新部署。

     调试Production模式的服务器

    有时问题可能暴露在测试机器、两阶段调试(staging)机器或者运行在一个生产域(production domain)上的其他机器上。你可能希望能够在这样的环境中连接和调试应用程序。但是,当一个域处于生产模式的时候,它不会使用可以使调试更简单的大部分我们喜欢的东西。这意味着要调试生产域,将需要做更多的工作 。你将需要:
    1. 修改文件startWebLogic.cmd(如果你的系统为Linux,则修改startWebLogic.sh),加入调试参数(参见上面的"连接正在运行的进程"一节)。
    2. 在IDE中,需要假定你正在调试一个Java应用程序。这意味着你将需要创建一个Java应用程序并在其中添加一个文件。该文件只是一个占位程序,所以你可以启动该项目。
    正确完成这些步骤后,启动你的Production服务器。然后进入IDE,打开占位程序文件,然后按下 Start按钮,IDE 现在应该连接上了,那么就可以调试该服务器了。你仍然可以打开SmartDebugging ,这样你就可以绕过不感兴趣的WebLogic线程和类。不幸的是,在生产模式中,不能调试XScript文件。

    非Workshop应用

    如果你试图在不支持Workshop的WebLogic Server 域上调试应用程序。那么有两种选择:

    1. 可以按照上面的"调试Production服务器"一节中的指示,或者
    2. 可以按照 Workshop帮助中的"How Do I: WebLogic Workshop-Enable an Existing WebLogic Server Domain?"主题中的说明,来启用WebLogic Server域的Workshop支持。

    高级 Workshop调试主题

    当创建Workshop时,我们添加了大量的特性,以便用户能更好地浓缩他们所调试的应用程序上。这些特性或者使调试速度加快,或者尽可能地筛选出不重要的信息。

    Web应用中的线程

    当运行一个Web应用,单击断点或者单击暂停时,我们并没有暂停VM中所有的线程。我们只暂停了WebLogic Server的用户线程。这主要是考虑到性能的问题。事实证明,停止和启动VM中的所有线程需要花费很多时间,而且,从Web应用的角度来看,这些线程是没有意义的。

0
相关文章