使用 Eclipse 开发 J2EE 应用

---- 集成 Eclipse, Lomboz 和 JBoss

本文中作者向大家介绍了如何通过使用 eclipse 和可用于 eclipse 的插件 Lomboz 进行 j2ee 应用的开发。

姜巍巍 (jiangww@lenovo.com), 联想集团软件设计中心的开发工程师

姜巍巍,是联想集团软件设计中心的开发工程师,热衷于J2EE和Web服务技术。闲暇时,喜欢阅读计算机书籍,并频繁光顾各个Java论坛;周末的晚上,一般会乖乖的在电视机前面观看意甲直播。地址:北京市上地信息产业基地开拓路7号先锋大厦 邮编:100085 。您可以通过E-mail: jiangww@lenovo.com与他取得联系。



2003 年 6 月 10 日

Eclipse 是一个非常优秀的集成开发环境,这个在 IBM 支持下的开放源码项目经过一段时期的发展完善,已经为广大 Java 开发者所熟悉。Eclipse 的出现,为 Java 开发者提供了免费使用强大的 Java IDE 的机会,通过集成大量的 plugin,Eclipse 的功能可以不断扩展,以支持各种不同的应用。

Lomboz 是一个免费的 Eclipse plugin,它将很多 Java 应用服务器、J2EE 组件和 Web 应用开发集成到 Eclipse 中,可以帮助 Java 开发者使用 Eclipse 建立、测试、部署 J2EE 应用。

JBoss 是一个开放源码、功能强大的 Java 应用服务器,也是目前最受 Java 开发者欢迎的 Java 应用服务器,被 Java World 的编辑们评为 2002 年的最佳应用服务器。2003 年到目前为止的下载量已经超过了一百五十万次。

一、下载、安装和配置

1 . Eclipse 的下载和安装

首先需要安装 JDK,可以到 Sun 的网站上去下载最新版本并安装。

然后到 www.eclipse.org去下载 Eclipse 的最新版本,目前的最新版本是 2.1。下载以后解压到自己想要的目录中,比如 D:\Eclipse,直接运行 eclipse.exe,第一次运行的时候会自动寻找 JDK 并完成相应的配置,然后就进入了 Eclipse 的主界面。关于 Eclipse 的基本使用方法,developerWorks,Eclipse 的网站以及 Eclipse 的随机文档上都有详细地介绍,这里不详细描述了。

2 . Jboss 的下载、安装

JBoss 目前的最新版本是 3.2.1,不过我觉得这个版本有一些问题,启动服务器的时候会有一些 jar 包找不到,导致 WARN 和 ERROR 的发生。所以我推荐下载 3.0.7,也可以下载集成了 Tomcat 4.1.24 的 JBoss 3.0.7 版本。

下载后解压,我们假设 JBOSS_HOME 为 JBoss 的主目录,执行 JBOSS_HOME/bin/run.bat,就启动了 JBoss 服务器。一般会在 1 分钟左右启动完毕。

3 . Lomboz 的下载、安装和配置

Lomboz 目前的最新版本是 2.1,我们假设 Eclipse 的主目录为 ECLIPSE_HOME,下载以后将其解压到 ECLIPSE_HOME/plugins 文件夹下面,这样在这个文件夹下面就多了一个 com.objectlearn.jdt.j2ee 文件夹。

然后启动 Eclipse, 会自动出现 Customize Perspective 的对话框,如果没有出现的话,也可以通过菜单"Window->Customize Perspective"来显示这个对话框,如下图所示:

展开 File->New,选择所有与 Lomboz 相关的选项;

展开 Window->Show View,选择 Lomboz J2EE View;

展开 Other,选择 Lomboz Actions。

确认 OK。

下面要进行 Lomboz 的配置:

首先,打开属性对话框,确保 Java->New Project 中的设置:

接着在 Lomboz 属性中,确保如下设置:

最后,设置服务器属性。

Lomboz 预先定义了一些常用的 Java 服务器的设置,这些配置文件放在 ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夹下面,你可以用文本编辑器手工修改(除非你所用的服务器不在 Lomboz 默认的服务器中,否则我不推荐你这么做),也可以在 Eclipse 的属性对话框中设置,设置的过程非常简单,如下图所示:

记得每次修改以后,都要点击 Apply。

上图是 Properties 标签下的设置,Classpath 标签下一般不需要做任何改动(注意:如果你没有听我文章开始部分的劝告,使用了 JBoss3.2.0 以上的版本,可能需要手工加入多了个 jar 包,这是体力活,有些麻烦。我不知道这是不是 JBoss 的问题,具体操作我在下面会提一下)。

通过以上三个步骤,就完成了 Lomboz 对 J2EE 开发的支持和 JBoss 的配置。你可以进入文章的第二部分"使用 Eclipse 开发 Web 应用"了。

注意事项:

a .如果服务器不在默认服务器之列;

在 ECLIPSE_HOME/plugins/com.objectlearn.jdt.j2ee/servers 文件夹下新建一个后缀名为 server 的文件,然后根据已有的 server 文件为模版,用文本编辑器编辑 server 文件。建立了一个新的 server 文件以后,也可以在 Lomboz 的属性页中进行相应的设置。

b . 如果使用了 JBoss3.2.0 版本。

打开 Window>Preferences>Lomboz>ServerDefinitions,选择你的服务器,然后选择 classpath 标签,将如下的 jar 包加入到 server library 中:

JBOSS_HOME\lib\concurrent.jar

JBOSS_HOME \lib\boss-system.jar

JBOSS_HOME \server\default\lib\jboss.jar

JBOSS_HOME \server\default\lib\jpl-pattern.jar

JBOSS_HOME \server\default\lib\jpl-util.jar

JBOSS_HOME \server\default\lib\jnpserver.jar

JBOSS_HOME \server\default\lib\jboss-transaction.jar

我的 JBoss320.server 文件中的全部内容在本文的最后部分呈现。


二、使用 Eclipse 开发 Web 应用

首先,打开 File->New->Lomboz J2EE Project,创建一个名为 TestJ2EE 的 J2EE Project。

点击 Next,默认各种设置,点击 Next,进入下一个对话框,在 Targeted Server 中加入已经配置好的服务器,如下图:

在 Web Modules 和 EJB Modules 中分别新建 Web 模块和 EJB 模块,在本例中,我们分别命名为 MyWeb 和 MyEJB,然后点击 Finish。这样,一个 J2EE 项目的框架就自动生成了。

在 MyWeb 模块下面,自动生成了两个 jsp 文件:index.jsp 和 error.jsp,以及 WEB-INF 文件下面的配置文件。我们可以在此基础上面添加自己的 jsp 文件和 servlet,然后 build project。

在 Eclipse 的工具栏上点击 Lomboz J2EE project outliner 的按钮:

这样,在 Eclipse 上就出现了 Lomboz J2EE View,如下图所示:

由于我事先已经部署了另一个 Web 服务器:Tomcat,所以在 MyWeb 这个模块上面出现了它所绑定的这两个服务器,JBoss 3.0 All 旁边的红色标记表示它是默认的服务器。可以通过右击 Web 模块选择更改默认的服务器,如下图:

选择好服务器以后,在 Lomboz J2EE View 中右键单击服务器,选择运行服务器,等服务器启动好以后,右键单击 Web 模块,选择 Deploy Module,这样就完成了 Web 模块在服务器上的部署。打开 IE 浏览器,键入 http://127.0.0.1:8080/MyWeb,就可以看到自己开发的 Web 应用了。

这里有一点需要说明,如果采用 Tomcat 作为 Web 服务器的话,如果 Web 模块需要重新部署,则须重新启动 Tomcat 服务器,JBoss 则不需要这么做。

注意事项:

如果从 Eclipse 中启动 JBoss 服务器的时候,遇到了这个问题:

 Error occurred during initialization of VM 
 java/lang/NoClassDefFoundError: java/lang/Object

一般遇到这个问题,可能是由于 JRE 没有设置好,请在 Eclipse 中的 Preference 对话框中,展开 Java->Installed JREs,查看 JRE 是否设置好了;然后打开所开发的项目属性对话框,查看 Java Build Path 的 library 中是否有 JRE System Library,没有的话,点击 Add Library,添加 JRE System Library。


三、使用 Eclipse 开发 EJB

在第二部分"使用 Eclipse 开发 Web 应用"中,我们已经在 TestJ2EE 这个 J2EE 项目中添加了一个名为 MyEJB 的 EJB 模块。下面我们通过 Lomboz EJB Creation Wizard 向 MyEJB 模块中添加一个 Session Bean。

点击 File->New->Lomboz EJB Creation Wizard,或者右击 MyEJB 模块,选择 New->Lomboz EJB Creation Wizard,显示出如下对话框:

在 com.dino.testj2ee.myejb 这个包下面创建一个名为 MyEJB 的 Stateless Session Bean。完成以后,在 TestJ2EE 项目的 src 文件夹下面,出现了一个名为 MyEJBBean.java 的文件,右击这个文件,选择 New->Lomboz EJB Method Wizard,可以给这个 EJB 添加各种方法。我添加了一个 helloWorld 方法,返回一个 String 类型。如下图所示:

然后,需要把 MyEJB 这个 Session Bean 添加到 MyEJB 这个模块上面:右击 MyEJB.java,选择 Lomboz J2EE … ->Add EJB to Module,选择 MyEJB,OK。

右击 MyEJB 模块,选择 LombozJ2EE … ->Generate EJB Classes,这样就在 ejbsrc 目录下面自动生成了下面几个文件:

MyEJBHome.java
MyEJBRome.java
MyEJBLocalHome.java
MyEJBLocal.java
MyEJBSession.java (MyEJBSession extends MyEJBBean)
MyEJBUtil.java

Build project 以后,自动将模块打包完毕。接着就可以按照部署 Web 模块的步骤来部署 EJB 模块了。

最后,我们建立一个应用程序来测试 EJB。

通过 File->New->Lomboz EJB Test Client Wizard 打开一个对话框,按下图填写:

完成以后,在 src 目录下面生成了 TestMyEJB.java,在其中的 testBean 方法中加入测试代码:

 System.out.println(myBean.helloWorld());

如果目前 JBoss 服务器已经启动,而且 MyEJB 模块已经部署的话,执行 TestMyEJB,就会在 Console 窗口上显示出:

 hehe, I can deploy EJB by Eclipse!

四、总结

通过以上的介绍,我们了解到,Lomboz 使 Eclipse 开发 J2EE 应用变得非常简便,而且 Eclipse, Lomboz, JBoss 这些工具都是免费和开放源码的项目,所以这样的组合对 Java 开发者来说更有吸引力。

对于开发复杂的 J2EE 应用来说,上面的介绍可能还不够全面,希望大家在做项目的过程中体会,再将总结出来的经验放到 developerWorks 上来分享。


附录:JBoss320.server

 <serverDefinition name="JBOSS 3.2" 
     ejbModules="true" webModules="true" earModules="true"> 
 <property id="serverRootDirectory" label="Application Server Directory:" 
     type="directory" default="D:/jboss-3.2.0" /> 
 <property id="serverAddress" label="Address:" 
     type="string" default="127.0.0.1" /> 
 <property id="serverPort" label="Port:" 
     type="string" default="8080" /> 
 <property id="classPathVariableName" label="Classpath Variable Name:" 
     type="string" default="JBOSS32" /> 
 <property id="classPath" label="Classpath Variable:" 
     type="directory" default="D:/jboss-3.2.0" /> 
    
 <serverHome>${serverRootDirectory}</serverHome> 
 <webModulesDeployDirectory>${serverRootDirectory}/server/all/deploy
 </webModulesDeployDirectory> 
 <ejbModulesDeployDirectory>${serverRootDirectory}/server/all/deploy
 </ejbModulesDeployDirectory> 
 <earModulesDeployDirectory>${serverRootDirectory}/server/all/deploy
 </earModulesDeployDirectory> 
 <jndiInitialContextFactory>org.jnp.interfaces.NamingContextFactory
 </jndiInitialContextFactory> 
 <jndiProviderUrl>jnp://${serverAddress}:1099</jndiProviderUrl> 
 <startClass>org.jboss.Main</startClass> 
 <startWorkingDirectory>${serverRootDirectory}/bin
 </startWorkingDirectory>
 <startVmParameters></startVmParameters> 
 <startProgramArguments>-c all</startProgramArguments> 
 <stopClass>org.jboss.Shutdown</stopClass> 
 <stopWorkingDirectory>${serverRootDirectory}/bin
 </stopWorkingDirectory> 
 <stopVmParameters></stopVmParameters> 
 <stopProgramArguments>${serverAddress} ${serverPort}
 </stopProgramArguments> 
 <serverClassPath> 
 <jar type="variable">JDK_TOOLS</jar> 
 <jar type="variable">${classPathVariableName}/bin/run.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/bin/shutdown.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/javax.servlet.jar
 </jar>
 <jar type="variable">${classPathVariableName}/lib/commons-httpclient.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/concurrent.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/getopt.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/jboss-boot.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/jboss-common.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/jboss-jmx.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/jboss-system.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/jdom.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/log4j-boot.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/webdavlib.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/xercesImpl.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/lib/xml-apis.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jnet.jar
 </jar>
 <jar type="variable">${classPathVariableName}/lib/gnu-regexp.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jboss.jar
 </jar>
 <jar type="variable">${classPathVariableName}/server/all/lib/jnpserver.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jpl-util.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jpl-pattern.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jsse.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jbossha.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jboss-jaas.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jts.jar
 </jar> 
 <jar type="variable">
 ${classPathVariableName}/server/all/lib/jboss-transaction.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/javagroups-2.0.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jmxri.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jmxtools.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/server/all/lib/jbossmx.jar
 </jar> 
 </serverClassPath> 
 <clientClassPath> 
 <jar type="variable">${classPathVariableName}/client/jboss-j2ee.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jnp-client.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jboss-client.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jboss-common-client.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jbosssx-client.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/log4j.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jnet.jar
 </jar> 
 <jar type="variable">${classPathVariableName}/client/jaas.jar
 </jar> 
 </clientClassPath> 
 </serverDefinition>

参考资料

  • www.eclipse.org Eclipse 的官方网站;
  • www.jboss.org JBoss 的官方网站;
  • www.objectlearn.com Lomboz 的网站,上面有关于 Lomboz 的教程。
  • Eclipse in Action: A Guide for Web Developers, by David Gallardo, Ed Burnette and Robert McGovern, Manning Publications. 一本介绍使用 Eclipse 开发的好书。
  • JBoss 3.0: Quick Start Guide, by JBoss Group. 一本关于 JBoss 入门的好书。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Java technology
ArticleID=53165
ArticleTitle=使用 Eclipse 开发 J2EE 应用
publish-date=06102003