《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > J2EE应用服务器与JBuilder集成的实现

J2EE应用服务器与JBuilder集成的实现

2008-12-12
作者:杨光,雷益鹏

背景知识 

    对于广大的J2EE应用开发人员来说,一个强大而高效的Java开发环境是必不可少的。JBuilder是一个优秀的JAVA 集成开发环境,它能够集成Weblogic, WebSphere,Borland Enterprise Server等应用服务器" title="应用服务器">应用服务器,使开发人员可以快速开发和分发应用程序到这些J2EE平台应用服务器。 

    除了目前JBuilder支持的应用服务器外,还有一些受用户喜欢,并正在使用的应用服务器产品。对于习惯于使用JBuilder的开发人员来说,他们特别希望这些应用服务器也能被JBuilder所支持,以便在开发过程中应用JBuilder的强大功能。因此,将特定的应用服务器与JBuilder集成,是一件非常有意义的事情。 

    为此,我们着手实施了这项工作,通过开发TongWebOpenTools插件,成功地将国产应用服务器TongWeb集成到JBuilder开发环境中,现将实现方法描述如下。

JBuilder的Open Tools框架 

    首先介绍一下JBuilder提供的一种允许第三方" title="第三方">第三方扩展IDE的机制,即Open Tools框架,JBuilder同时提供了实现该框架的接口 — OpenTools API。

1.Open Tools框架

    在OpenTools 框架中,能对JBuilder的很多功能进行扩展,对J2EE应用服务器支持的扩展就是其中之一。在JBuilder7.0以前的版本中,在对J2EE应用服务器支持的扩展方面,提供了AppServer机制,我们可以利用这种机制将第三方的J2EE应用服务器集成到JBuilder中,达到扩展JBuilder所能支持的应用服务器的目的。在JBuilder7.0/8.0版本中,已经不采用AppServer机制了,而是提供了Server Plugin机制。为了将已经在7.0以前版本中扩展的应用服务器继承过来,JBuilder还提供了一种Legacy机制,可以将基于以前版本的JBuilder的应用服务器扩展集成到7.0/8.0版本中。此外,JBuilder还提供了一种Server Configuration机制,支持对应用服务器进行配置,并保存配置。

    针对目前使用最广泛的JBuilder7.0及以上版本,为了实现对一个新的第三方J2EE应用服务器的支持,应该采用Server Plugin和Server Configuration机制。因此,对这两种机制,在这里有必要简要介绍一下。

(1)Server Plugin机制 

       Server Plugin主要涉及三个方面的内容,Server,Service,Plugin。Server指的是一些特定版本的应用服务器,例如Borland Enterprise Server 5.0,Tomcat 4.0,WebLogic6.1等。Service是应用服务器所支持的特性,例如EJB, web application (JSP and Servlet), JMS, deployment等。Plugin指的是一些classes,通过这些classes,可以使Server和Service在JBuilder中注册,以便能在JBuilder的集成开发环境中被使用。因此,Server Plugin机制主要包含了Server、Services和ServerLanucher API。类图如下:

图 1 Server Plugin机制类图

    每个Server类的子类" title="子类">子类实现都代表一个应用服务器,该子类可以根据情况包含不同的Services。支持的Services包括:ClientJarService、EjbService、JspServletService、DeployService等等。

    在JBuilder启动时,Server类的子类能够通过工具类ServerManager将自己及自己支持的Services注册到JBuilder中。该注册过程位于必须实现的方法initOpenTool()中。方法initOpenTool()是一个很特殊的方法,它不是由任何接口或虚类指定,但任何想接入JBuilder中的插件都必须提供该方法来将自己注册到JBuilder中。JBuilder 将根据是否提供该方法来自动发现第三方提供的插件,并自动将其按插件方式载入。

    ServerLanucher则是支持Server 启动的类,能提供Server 启动所需的各种信息,并且提供了在Server启动和停止的各个阶段插入代码的接口。它由Server来创建。

(2)Server Configuration机制 

    在JBuilder中使用任何一个应用服务器,都必须先进行配置。JBuilder启动后,通过JBuilder菜单中的Tools->Configure Servers,可打开Configure Servers对话框。在该对话框中可以看到,左边是Server列表栏,右边是Server的常规配置信息和定制的配置信息。当一个Server的OpenTool通过ServerManager实现了注册,这个Server将出现在Server列表栏中。选择Server,并对Server进行配置后,注册的Server就可以在JBuilder中使用了。这一配置机制就是JBuilder提供的Server Configuration机制该机制能将配置的信息保存起来,下次启动JBuilder时,它就能读取先前的配置,并根据该配置查找类库。如果找不到匹配的Server库(比如已经删除),则该Server在对话框的Server列表栏中显示为红色。

图 2 Server配置界面的类图

2.  OpenTools API

    在OpenTools框架中,和集成J2EE应用服务器相关的API都在包com.borland.jbuilder和包com.borland.primetime中,下面

我就其中主要的包进行一下介绍。

(1)       com.borland.jbuilder中的包

com.borland.jbuilder.server: 主要用于ServerServices的注册。

com.borland.jbuilder.enterprise.ejb: 主要用于支持JBuilder7.0以前版本的AppServer机制,还用于生成选定的应用服务器的部署描述符" title="描述符">描述符。

com.borland.jbuilder.enterprise: 主要用于ServerJDK设置。

com.borland.jbuilder.runtime.servlet:主要用于Servlet Service的实现。

(2)       com.borland.primetime中的包

com.borland.primetime.node: 主要用于对项目和文件节点的操作。

com.borland.primetime.properties: 主要用于属性设置。

com.borland.primetime.ide: 主要用于实现图形界面。

TongWeb Open Tools的实现
    TongWeb Open Tools是为了将应用服务器TongWeb集成到JBuilder而开发的,它是JBuilder OpenTools框架的一个具体实现。目前,已经完全支持在JBuilder中基于TongWeb 应用服务器进行EJB和Jsp/Servlet的开发、部署、运行以及动态调试。
    为了实现上述功能,我们需要解决下列问题:
1. Server管理,包括Server的注册载入,Server的启动等
2. Ejb部署描述符的生成
3. Jsp/Servlet 的编译
4. 动态部署
5. 动态调试
6. 配置管理,包括Project Properties,Configure Servers等
    TongWeb Open Tools可以划分为6个模块,即Server模块,Generic deploy code(部署代码生成" title="代码生成">代码生成)模块,JSP/Servlet Compiler模块,Deploy(动态部署)模块,Configure模块和动态调试模块。各个模块的关系图如下, 其中白色为外部系统。


                                   图 3 TongWeb Open Tools模块关系图
1. Server模块
    Server模块负责注册Server及Server提供的各种服务(services)、提供Server启动时所需的各种参数。
    Server模块在JBuilder启动时由JBuilder Opentools 框架提供的ServerManager注册到JBuilder中。
2. Generic deploy code(部署代码生成)模块
    部署代码生成模块负责生成TongWeb EJB部署描述符(包括ejb-jar.xml、teas-ejb-jar.xml)和部署代码(包括stub/skeleton及实体Bean的O/R映射代码jorm),并将所有生成的代码和EJB本身打包成可部署到TongWeb3.4上的EJB jar包。
在JBuilder中,EJB部署描述符的生成原理是:在创建EJB工程及设计EJB的过程中,JBuilder将自动生成Jbuilder特定的部署描述符,然后JBuilder将JBuilder特定的部署描述符转换成选定的应用服务器的部署描述符。该转换是针对选定的应用服务器特定的部署描述符而言,对于J2EE标准的ejb-jar.xml则不需要转换。这个转换工作,要由选定的应用服务器的Opentools来实现。因此,TongWeb Open Tools中,我们设计和实现了一个特定的类来完成这个转换。
    对于部署代码的生成和最终的打包,则是调用了TongWeb服务器的工具GenIC来完成。
3. JSP/Servlet Compiler模块
    JSP/Servlet Compiler模块负责对JSP/Servlet的编译,并将所有生成的代码打成war包。为了能实现对JSP/Servlet的编译,并生成可部署的war包,需要通过对OpenTools API的JspCompiler和JspSourceBridge进行扩展。
4. Deploy(动态部署)模块
    通过调用TongWeb服务器的工具TeasAdm,动态部署模块实现了将EJB动态的部署到运行中的TongWeb3.4服务器,重新部署,取消部署,列出可部署的jar包等功能。
5. Configure模块
    Configure模块是用户配置上述几个模块所需参数的图形界面。在JBuilder中,参数的配置和对参数的使用是分离的。为了实现这种分离,它通过静态类PropertyGroup及其子类来进行参数的存储工作。配置好的参数写入静态类PropertyGroup中,当其它模块需要使用这些参数时就从静态类PropertyGroup中获取。静态类PropertyGroup从作用上看类似一个配置文件,但它是写在内存中的,速度较快。
使用TongWeb Open Tools
    TongWeb Open Tools的最终产品是一个TongWebOpenTool.jar文件,只需要将这个文件拷贝到 libext目录下,就完成了产品的安装。
    完成产品安装后,在JBuilder中就可以轻松的开发,部署应用程序到TongWeb3.4应用服务器上了,下面将用几张图来简要描述安装了TongWeb Open Tools插件的JBuilder对TongWeb3.4应用服务器的支持。
(1) 配置TongWeb应用服务器
    当TongWeb Open Tools安装后,启动JBuilder后,选择JBuilder菜单中的Tools->Configure Servers,可以看到TongWeb 应用服务器已经出现在左侧的服务器列表中了,选则TongWeb应用服务器后,就可以对它进行配置。

                                         图 4 配置服务器
(1) 部署EJB
    选择菜单中的deploy,对 EJB进行部署,在JBuilder的控制台上会显示提示信息,当部署成功,将显示Succeeded: Dedeploy --- xxx.jar。

图 5部署EJB 

 

结束语 

    如何向用户提供方便高效的开发工具,是国产应用服务器厂商面临的一个重要问题。对TongWeb来说,通过开发TongWeb Open Tools,使JBuilder支持面向TongWeb的全过程开发,既充分利用了JBuilder的强大功能,又解决了国产应用服务器的开发工具支持问题,不失为一种比较好的策略。

参考文献 

1. 《Developing OpenTools》 http://www.borland.com/ 


 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。