基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

jopen 11年前

本文介绍在MyEclipse下进行EJB 3.0开发的方法,J2EE服务器使用Tomcat+EmbededOpenEJB,数据库使用MySQL。

一、环境配置

本文所用的软件版本都经过验证,但所采用的方法不只适用于这些版本,如有兴趣,其它版本请另行验证。需要注意,所有软件的安装路径最好不要出现中文字符、空格以及其它特殊符号等,否则在有些环境下可能会有问题。下面介绍各软件的版本及其安装。

1.Java

JDK1.6以上都可以。安装完成后,可按如下方法配置Java的环境变量:

1)        在环境变量里添加JAVA_HOME变量,其值是安装的JDK的根目录路径。如JAVA_HOME = D:\JavaTools\Java\jdk1.6.0。

2)        继续添加CLASSPATH变量,其值是JDK的lib目录路径。如”CLASSPATH = .;%JAVA_HOME%\lib\”。CLASSPATH中不同的值用分号隔开,.表示当前目录,%JAVA_HOME%表示将名为 JAVA_HOME的变量的值替换到此处。

3)        再添加PATH变量,其值是JDK的bin目录路径。如”PATH = %JAVA_HOME%\bin\”。

配置好环境变量后,可通过在命令行中运行java和javac,简单地判断是否配置正确。

2.Tomcat

进行EJB开发,要使用Java企业版服务器。目前,比较常用的J2EE服务器包括JBoss和WebLogic等,但这些服务器都比较重量级,启 动比较慢,因此在调试启动时往往非常浪费时间。而Tomcat运行时占用的系统资源小,扩展性好,是目前比较流行的Web 应用服务器。但Tomcat实际上只是一个Servlet容器,不能作为EJB容器。另外,作为开源服务器项目的OpenEJB是一个轻量级的EJB容 器,除了有单独运行版本以外,还有可能很容易地嵌入到Tomcat中的版本,于是可以选用Tomcat + OpenEJB的组合来部署EJB。

目前Tomcat的最新版本是7.0.22,但经过试验OpenEJB尚不支持Tomcat 7,因此在本文中选择6.0.20。

Tomcat6的下载地址是:http://archive.apache.org/dist/tomcat/tomcat-6/。其安装比较简单,只需要下载免安装版本直接解压缩即可。解压缩后,需要按如下方法配置Tomcat的环境变量:

1)        在环境变量里添加CATALINA_HOME变量,其值是安装的Tomcat的根目录路径。如CATALINA_HOME = D:\JavaTools\apache-tomcat-6.0.20。

2)        在CLASSPATH变量中添加值,即Tomcat的lib目录路径。如”CLASSPATH = ;%CATALINA_HOME%\lib\”。

3)        在PATH变量中添加值,即Tomcat的bin目录路径。如”PATH = ;%CATALINA_HOME%\bin\”。

配置好环境变量后,可以通过运行Tomcat的bin目录中的startup.bat文件,启动Tomcat服务器。待Tomcat启动后,在浏览器中访问http://localhost:8080/,如果出现如下界面,则说明Tomcat启动成功:基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

3.OpenEJB

OpenEJB分为两种:一种是可以单独运行的Standalone服务器,另一种是可以嵌入Tomcat的Embedded OpenEJB 3.1.2。

OpenEJB 3.1.2的下载地址是:http://mirror.nexcess.net/apache/openejb/3.1.2/。其安装也比较简单,只需要下载openejb.war,放到Tomcat的webapps目录中即可。装好后再次启动Tomcat服务器。待Tomcat启动后,在浏览器中访问http://localhost:8080/openejb/,会显示如下界面:基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

然后进入“Testingyour setup”进一步检查,如果所有选项都是显示OK,则说明OpenEJB启动成功。同时注意在上图所示的界面中,OpenEJB提供一一些工具,例如 OpenEJB JNDI Browser可以用来方便地查看所部署的SessionBean的接口。

关于OpenEJB的详细安装说明,可以参考其官网,上面提供了站内搜索功能,可以对想要查找的资料进行搜索。因为介绍OpenEJB的中文资料非常少,在使用OpenEJB时遇到的问题,可以到官网上查询。

4.MySQL

MySQL是一个开源的小型关系数据库管理系统,其体积小、速度快并且完全支持SQL语言,被许多中小型网站采用。

MySQL Server的安装比较简单,需要注意的是,在安装过程中,大部分都选择默认设置,但要将default character set选项设置为Best Support for Multilingualism才能支持中文,同时要设置root用户的密码。

为了在Tomcat服务器中部署Web应用能够使用MySQL,需要将JDBC驱动包放到Tomcat的lib目录下。本文安装的MySQL版本号是5.0.27,对应的JDBC驱动包是mysql-connector-java-5.0.4-bin.jar。

MySQL Server安装成功后,会提供命令行工具,运行后输入root密码即可进入。当然,也可以在Windows的命令行中连接MySQL Server,具体方法是执行如下命令:

mysql –u root –p

然后输入密码即可MySQL的命令行界面。具体怎么用MySQL,网上资料很多,请自学。

此外,涉及到数据库的开发,经常需要将数据库和数据表导出到.sql文件,或者从.sql文件中导入。对于MySQL,导出的方法是在命令行中执行:

mysql dump -uroot xyz > xyz.sql

就可以把名为xyz的数据库整体导入到当前路径下名为xyz.sql的文件中。导入的方法是在命令行中先进入.sql文件所在的目录,然后执行:

mysql -u root -pxyz < xyz.sql

就可以把名为xyz.sql的文件中的所有内容导入到名为xyz的数据库中。

因为MySQLServer本身只提供了一个命令行界面,因此为了方便操作,可以另外安装一些图形界面的MySQL工具,例如MySQL官方提供的MySQL GUI。

5.Ant

Ant是一种跨平台的、基于Java和XML的build工具,可以很方便的对大的工程进行编译和测试等。

Ant安装方便,直接解压缩即可,本文安装的Ant版本号是1.7.1。Ant的配置方法如下:

1)        在环境变量里添加ANT_HOME变量,其值是安装的ANT的根目录路径。如ANT_HOME = D:\JavaTools\apache-ant-1.7.1。

2)        在CLASSPATH变量中添加值,即ANT的lib目录路径。如”CLASSPATH = ;%ANT_HOME%\lib\”。

3)        在PATH变量中添加值,即ANT的bin目录路径。如”PATH = ;%ANT_HOME%\bin\”。

配置好环境变量后,可以在命令行中执行ant,检查是否能正常使用。

Ant是根据XML格式的build文件进行build的,build.xml的具体内容请自学。

6.MyEclipse

MyEclipse是在Eclipse的基础上开发的一种IDE,支持多种语言的开放,并包含完整的编码、调试、测试和发布等功能。 MyEclipse的最新版本是10,功能和插件都很庞大,而只要用MyEclipse6.0就能够完成作业。下面介绍在MyEclipse6.0的环境 下,如何进行EJB开发。关于如何利用MyEclipse进行Web开发(包括Java Severlet、JSP、)请自学。下面介绍如何进行EJB开发。

首先,新建一个EJB工程,其中J2EESpecification Level选择Java EE 5.0 - EJB 3.0,如果工程中需要使用数据库,勾选上Add support for entity beans,否则不选。基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

如果勾选上Addsupport for entity beans,下面需要进一步配置数据库的连接驱动,点击Next后进入如下界面:基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

需要在JNDI DataSource中输入jdbc/mysql,然后点击Create new Driver,进入如下界面:基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

Driver template选择MySQL Connection/J,Driver Name需要起个和已有驱动不同的名字,Connection URL的值改为jdbc:mysql://localhost:3306/,User Name和Password中填MySQL的用户名和密码,并在DriverJARs中添加MySQL的JDBC驱动包,然后点击Next。基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

选择Display theselected schemas,再点击Add,此时会先尝试和MySQL连接。连接成功后,会列出当前MySQL中的所有数据库,这里可以添加我们在该工程中要用的所有 数据库,最后点击Finish结束数据库的连接驱动的配置,并回到上一步设置的界面。基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

此时点击Update List,选择需要的Schema,最后点击Finish,完成工程的建立。

此外,MyEclipse默认Tomcat无法部署EJB工程,下面说明如何在MyEclipse中将新建的EJB工程部署到Tomcat +OpenEJB上。

首先,需要在MyEclipse中配置之前安装的Tomcat服务器,方法是在菜单 Window->Preference->MyEclipse->ApplicationServers->Tomcat->Tomcat 6.X中(如下图所示),将Tomcat home directory路径设为所安装的Tomcat根目录的路径,并将Tomcat 6.x状态改为 Enable。基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

然后,需要对Tomcat的运行参数进行配置,方法是在菜单Run->Open Run Dialog的MyEclipse ServerApplication中(如下图所示),新建一个Server Configuration,并将其工程名称改为我们的EJB工程名称,将Project也选为该工程,将Server选择Tomcat 6.x。如果建立的是EJB工程而非Web工程,通常Deploy type要选择 Packaged Archive。然后点击Apply,虽然窗口中还是会出现红叉提示不可以用这种服务器对该工程进行部署,但是可以忽略这个提示,因为这个Tomcat中 是嵌入了OpenEJB这个EJB容器的。最后点击Run,就开始部署运行了。基于OpenEJB + Tomcat+ MyEclipse + MySQL进行EJB 3.0开发

等服务器启动完成后,你便可以在浏览器中输入http://localhost:8080/openejb 在其JNDIBrowser里对部署结果进行查看。并且嵌入Tomcat的openejb提供了在浏览器中直接对接口进行调用试验的功能,就像调用Web Service一样。

二、EJB开发

在OpenEJB的官网上有很多的例子,并提供源代码下载。下面以简单的SessionBean与EntityBean的例子稍做介绍。关于EJB本身的使用请查阅相关的资料。

1. SessionBean开发与使用。

SessionBean有Stateless与Stateful两类。以一个单纯的SessionBean为例,它不使用数据库。因此在创建工程时,把Add support for Entity beans(Add JPA Capabilities)勾掉不选。

请参考示例代码中的写法。

(1)    设计与实现:

分别定义接口和实现类,然后以前面所讲的方式,在MyEclipse中将工程启动部署在Tomcat 6.x上。

(2) 调用方法

另外创建一个普通的Java工程,在其BuildPath中引用上面工程中的classes文件夹、以及另外的JavaEE 5 Library,  openejb-client.jar(在安装了openejb的tomcat的webapps/openejb/lib中),来然后通过编写代码调用发 布的Session Bean来对其进行测试。

注意调用接口时,需要提供相应的Provider URL,对于嵌入Tomcat的OpenEJB有:

properties.put("java.naming.provider.url","http://127.0.0.1:8080/openejb/ejb");

2. EntityBean开发与使用

可以在官网上参考例子中的Injectionof EntityManager Example的代码与介绍。

在代码中连接数据源的方式有很多种,可以查看OpenEJB官网上的关于Database的一些配置和使用的文档(比如http://openejb.apache.org/databases.html)。

以下只对MyEclipse中如何配置做一些简单但不系统的介绍。

在开发EntityBean之前,你应该先完成数据表的设计,并在MySQL中已经创建了相关的数据库和数据表。

(1) 在创建EJB 3.0工程时,把Add support for Entity beans(Add JPA Capabilities)勾选上。

(2) 关于连接数据库的问题。首先确认是否将MySQL的驱动包放到Tomcat的lib目录下。

安装OpenEJB后,在Tomcat的conf目录下,会有一个openejb.xml文件。它是用于配置OpenEJB的,而我们主要需要做的工作就是添加一下数据源资源。

关于openejb.xml中的数据源的配置,可以参见以下网址:

http://openejb.apache.org/3.0/common-datasource-configurations.html

具体到添加我们的MySQL数据源,就是要将以下内容添加到openejb.xml中其他的Resource之后:

<Resource id="MySQLDB"type="DataSource">

    #  MySQL example

    #  This connector will not work until youdownload the driver at:

    # http://www.mysql.com/downloads/api-jdbc-stable.html

    JdbcDriver        com.mysql.jdbc.Driver

    JdbcUrl              jdbc:mysql://localhost/your_database

    UserName        your_username

    Password                   your_password

</Resource>

将上面内容中的your_database,your_username, your_password分别改为你所使用的数据库名称、用户名、密码即可。当然,资源的id也可以改为其他名称。

然后要在你的EJB 3.0工程的persistence.xml文件中修改persistence-unit结点的内容,修改结果如下所示:要特别注意其中jta-data-source的值,即资源的jdni名称为java:openejb/Resource/MySQLDB,也就是使用上面openejb.xml中定义的资源。

<persistence-unit name="NewEJBPU" transaction-type="JTA">

<jta-data-source>java:openejb/Resource/MySQLDB</jta-data-source>

<properties>  

<propertyname="openjpa.jdbc.SynchronizeMappings"value="buildSchema(ForeignKeys=true)"/>

</properties>

</persistence-unit>

确保persistence.xml与openejb.xml中的配置的一致性,否则将不能正常连接数据库。

(3) MyEclipse自动生成实体类代码(可能需要在此基础上进行一些修改)

MyEclipse提供了非常便利的根据数据表来自动生成相应EntityBean类及其在数据库中对相应实体进行增删改查等操作对应接口的SessionBean类的功能。但是openejb并不一定完全支持所有的EJB注释,你可能需要一些修改。

具体操作方法就是选中工程的src文件夹,然后点击右键弹出的菜单中,找到MyEclipse->Generate Entities。即可选择相应的数据表,并为其产生对应的Entity类和相应接口等。当然如果表的数量不多,你也可以选择手工创建和输入 EntityBean及其操作对应的SessionBean。