JBuilder7中调试WebLogic7.0的EJB 摘 要:本文目的是介绍如何在集成的开发环境JBuilder 下调试运行在WebLogic当中的EJB,分为三部分。第一部分讲述Java Platform Debugger Architecture,JBuilder下的调试器正是基于这个框架进行工作的;第二部分介绍JBuilder下的WebLogic配置,正确的在JBuilder配置是保证成功调试的前提条件;第三部分进入调试EJB的实质阶段,以一个具体的例子演示EJB的调试。
1.关于Java Platform Debugger Architecture
在Java的发展历史上,JAVA 2的推出使得Java逐渐切入企业级的应用市场。面对众多的企业应用开发者,如何提供一个方便、易用的调试框架,为所有的JAVA 2应用提供基础层次的调试支撑,成为JAVA 2设计者们所要考虑的一个重要问题。 新的Java Platform Debugger Architecture伴随着JAVA 2的发布而出现在开发人员面前,它由三个部分组成:Java虚拟机调试接口(JVMDI)、Java调试网络协议(JDWP)和Java调试接口(JDI)。 它们之间的关系可通过以下的示意图描述:
任何符合JAVA 2规范的虚拟机都必须实现JVMDI,以支持来自JDI的调试命令。至于JVMDI和JDI之间通过何种方式进行通信,在跨越网络的环境下,首选的协议是TCP,当然也可能包含其他的网络协议和方式,这取决于厂商提供的JVM的实现。比如目前Sun公司提供的用于Windows平台的JVM,一个JVMDI的实现,同时支持TCP和Share memory的通信方式;而用于Solaris平台的JVM,则只支持TCP的通信方式。 通常我们会以调试模式启动即将被调试的JAVA 2进程,而后调试前端attach到这个进程上,向该进程发起调试命令,这称为远程调试(Remote debugging)。 自JAVA 2发布后,在1.3、1.4当中,JPDA都得到了不断的增强,有关更多JPDA的信息,请参见JAVA 2联机文档。 在JBuilder当中,我们即将使用的调试方式就是Remote debugging。
2.在JBuilder中配置WebLogic "工欲善其事,必先利其器",JBuilder作为一个功能强大的IDE,支持在多种应用服务器环境下进行开发、调试和部署J2EE应用。缺省的,JBuilder当中只配置了一个免费的tomcat作为EJB的容器,我们需要重新设定JBuilder缺省的应用服务器为WebLogic。 2.1.配置WebLogic Application Server 启动JBuilder后,选择菜单"Tools"->"Configure Servers…",设置画面如下:
Home directory - WebLogic Server所在目录 Main class - 当设定Home directory后,JBuilder会自动设定 VM parameters --当设定Home directory后,JBuilder会自动设定 Working directory - WebLogic Server域所在目录
JDK installation directory - WebLogic Server所使用JDK所在的目录 BEA home directory - BEA软件所在目录 Domain directory - 同Working directory User name - 启动WebLogic Server的系统用户 Password - 系统用户口令 2.2.指定WebLogic Application Server为缺省的应用服务器 以上的步骤实际上已经在JBuilder当中配置了一个可用的WebLogic Server,下面我们将该WebLogic Server设定为JBuilder项目缺省使用的应用服务器。 选择菜单"Project"->"Default Project Properties…"->"Server",在Single server for all services in project的下拉列表中选择WebLogic Application Server 6.x+
点击"OK"按钮即完成在JBuilder中配置WebLogic的事项。
3.在JBuilder中调试EJB
3.1.建立新项目Sample 使用JBuilder开发J2EE应用时,都是以project为单位的,因此接下来我们首先在JBuilder当中新建一个名为DebugEJB的项目,选择菜单"File"->"New Project…"
点击"Finish"按钮,完成Sample项目的建立。
3.2.向项目增加DebugEJB EJB Module 选择菜单"File"->"New",在Object Gallery对话框中选择EJB Module类型
接下来在弹出的对话框当中为该EJB Module命名为DebugEJB
在EJB Module中开始增加EJB,为了方便起见,我们加入一个名为Sample的简单Session EJB
紧接着为该Session EJB增加一个test方法,其返回值定义为String类型:
JBuilder将自动在SampleBean.java产生对应方法的代码,我们切换到test方法所对应的代码区,增加以下代码:
int i=0; i++; return "SampleBean.test was called!!!";
编译并产生EJB打包文件Sample.jar。 接着使用JBuilder为该EJB产生一个用于测试的EJB Test Client,
修改SampleTestClient1.java的main方法,以调用开发的EJB:
client.create(); String s = client.test(); System.out.println("The return value from EJB is " + s);
选择Project->Project Properties...->Run->New,为EJB的启动产生一个运行时的配置文件(JBuilder7的新特性):
接下来,还需为调用session bean的应用程序产生一个运行时的配置文件(这时应使选择Application属性页):
在test方法中设置断点,然后使用鼠标点击浮动工具栏的Debug Project图标,并选择For EJB Run,如下图。JBuilder7将启动WebLogic7.0以开始调试。
由于WebLogic7.0缺省运行在开发模式,因此我们只需要将DebugEJB.jar拷贝到C:/bea/user_projects/mydomain/applications目录,WebLogic7.0会自动部署我们的EJB。 接着运行调用session bean的应用程序,JBuilder7将在断点处停下来:
一旦session bean的代码发生变化,我们重新编译后,可直接将DebugEJB.jar拷贝到C:/bea/user_projects/mydomain/applications目录,WebLogic7.0会自动重新部署新的.jar文件。 调试结束后,应该将C:/bea/user_projects/mydomain/applications目录下的DebugEJB.jar删除。 附录 下面是一些可供参考的资料 - Java 2 SDK, Standard Edition Documentation
- Borland JBuilder Online Help
|