编程语言

img 23_ray

[翻译教程]使用JBOSS和ECLIPSE构建J2EE应用程序教程--第一章

发表于2004/9/17 16:45:00  2737人阅读

使用JBOSS和ECLIPSE构建J2EE应用程序教程

翻译:raxy

第一章

配置ECLIPSE并使用JBOSSLOMBOZ

安装Eclipse.

首先我们要安装Eclipse作为集成开发环境(IDE)JBOSS作为我们的应用程序服务器.

去这个页面: http://www.eclipse.org/downloads/index.php下载Eclipse编辑器的二进制文件.你可以根据你的平台下载适合的二进制文件.本教程是在Linux (Red Hat 8.0)下进行开发的.

示例: eclipse-SDK-2.1-linux-gtk.zip, eclipse-SDK-2.1-win32.zip

注意 : Eclipse并不包含JAVA的运行环境(JRE).你需要下载一个至少是1.3JAVA运行时Java开发包(JDK)安装在你机子上以使Eclipse可以运行.

解压缩该文件到你的home目录下.

[vishal@localhost eclipse]$ unzip eclipse-SDK-2.1-linux-gtk.zip

Archive: eclipse-SDK-2.1-linux-gtk.zip

Archive: eclipse-SDK-2.1-linux-gtk.zip

inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/boot.jar

inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/splash.bmp

inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/boot.xml

inflating: eclipse/plugins/org.eclipse.core.boot_2.1.0/plugin.properties

-----------------------------------------------------------------------------

----------------------------------------------------------------------------

-------------------------------------------------------------------------

inflating: eclipse/install.ini

inflating: eclipse/startup.jar

inflating: eclipse/readme/readme_eclipse.html

?

一旦你解压了这个文件你会home目录中找到一个名为'eclipse'的目录.

进入该目录并运行'eclipse'.

?

[vishal@localhost eclipse]$ cd eclipse

[vishal@localhost eclipse]$ ls

cpl-v10.html features install.ini plugins startup.jar

eclipse icon.xpm notice.html readme workspace

[vishal@localhost eclipse]$ ./eclipse

它将会在你的工作站上启动Eclipse IDE.让我们来更加熟悉这个环境吧.


安装JBOSS.

既然Eclipse已经安装好了并可以在你的工作站上运行,那么我们开始安装JBOSS.

你可以下载直接就可以运行的JBOSS.因为JBOSS内置了一个简单的数据库(Hypersonic)和网络服务器(JBossWEBTomcat)你可以不作任何设置直接使用. 你可以在SourceForge 中的JBOSS (http://sourceforge.net/projects/jboss)项目的页面下载,在那里你可以找到最新的版本,或是到JBOSS的主页下载 在那里你可以找到很多关于JBoss的有用信息,比如说官方的信息,免费论坛以及 项目的信息等等,同样也可以从 http://www.jboss.org/downloads.jsp下载.在本教程中我们使用的是集成了'Jetty' 作为JBOSS HTTP网络服务器的JBOSS-3.2.1.

范例 : jboss-3.2.1.zip (包括JBossWeb HTTP服务器和JSP/Servlet引擎, EJB, CMP2.0, JCA, IIOP, Clustering, JTS, JMX.)

注意 : JBOSS不包含JAVA运行环境(JRE).

首先使用用户'root'登录然后解压这个文件到适当的位置,那里必须有足够的空间.我把它解压到了/opt/jboss/目录.

它会在/opt/jboss/下创建一个名为 jboss-3.2.1的目录.

在运行JBOSS之前, 为了检查JBOSS的安装是否正确,确认你是否设置了以下变量.

JBOSS_HOME: /opt/jboss/jboss-3.2.1

JAVA_HOME: /usr/java/j2sdk1.4.1_02

CLASSPATH: /usr/java/j2sdk1.4.1_02/lib/tools.jar

?

进入jboss-3.2.1目录,你会找到所有这些目录.

[root@localhost jboss-3.2.1]# ls

bin client docs lib server

进入bin目录,你会找到run.sh脚本文件.

在命令行下运行该文件.它会启动,你将看到下面这条信息.

15:12:59,876 INFO [Server] JBoss (MX MicroKernel) [3.2.1 (build: CVSTag=JBoss_3_2_1 date=200305041533)] Started in 59s:676ms.

注意:这就是说 JBOSS已经安装好并成功运行了.现在是在eclipse IDE中配置它的时候了.

为了验证JBOSS运行是否正确,在你的浏览器中输入下面的地址'http://localhost:8080/jmx-console/index.jsp'.

注意: 这个页面指向的是'JMX Management Console'This page is referred as the 'JMX Management Console'.


如果你可以在你的浏览器中访问它,说明你的JBOSS已经成功的在运行了.

在该页面的 'jboss'子标题下,有一个接是 'service=Hypersonic'.点击该链接;会出现'MBean View'页面.在该页面有一个叫做'startDatabaseManager'MBean操作;找到那里然后按下 'Invoke'按钮. 将会出现嵌入式数据库Hypersonicconsole,在那里你可以访问数据库模式或者执行其他的数据库管理的操作.




创建数据库模式.

在学习案例中提到的, 我们商店仓库的数据库模式由5个关系组成. 我们会在嵌入式数据库Hypersonic中装载它.

出于这个目的, 我们会用到以下的脚本文件.

a) myStoreSchema.script – 用于创建数据库模式.

b) myStoreSchema.data – 用于向表中添加数据.

c) myStoreSchemaDrop.script –用于删除教程中用到的表.

下载:

myStoreSchema.script

myStoreSchema.data

myStoreSchemaDrop.script

?

首先拷贝这3个文件到 $JBOSS_HOME/server/default/data/hypersonic/目录. 这个例子中它是 /opt/jboss/jboss-3.2.1/server/default/data/hypersonic/

现在使用上图所示的JMX-Management Console 访问HSQL Database Manager.

?

注意: 请在数据库中删除已经存在的和我们用到的表同名的表,否则当你运行这些脚本的时候自然会有错误产生.

?

HSQL Database Manager顶部的菜单中选择File > Open Script.. > 选择myStoreSchema.脚本.





在点击完Open 后按下‘Execute SQL Statement’,屏幕上会成为如下图所示的样子.




在菜单中选View > Refresh Tree.如果你看到有5个新表被创建了,就说明你的数据模式就弄好了,是在表中加入数据的时候了.

?

在菜单中选File > Open Script.. >选择myStoreSchema.data > Open.. > Execute SQL Statement.


?




现在你的数据已经装载到你的数据库中了,你可以执行任意查询(这里使用的是select * from storeaccess)来验证它并可以看到象下表中一样的结果.




确定你使用了'commit'(Options->commit)在你的数据库中保存你的数据库模式.

注意:关闭Jboss服务器因为我们后面会在eclipse中运行它.

安装Lomboz.

为了在Eclipse中运行JBOSS你需要一个插件,在本教中我们使用Lomboz可以在 http://sourceforge.net/projects/lomboz http://www.objectlearn.com/index.jsp下载到.

注意: 我们在这里使用的是lomboz.21_02.zip.

解压该文件到临时目录;你会找到一个叫plugins的目录.进入目录plugins/com.objectlearn.jdt.j2ee/servers. 这个目录中包括针对各种服务器的配置文件.在本教程中我们提供一个jboss3.2.的配置文件供下载.

注意: 如果有多个配置文件存在,插件会默认的使用eclipse/plugins/com.objectlearn.jdt.j2ee/servers/目录中的按字母排序的第一个配置文件,所以把所有配置文件的后缀名改为'.bak'.这样做是为了在我们教学避免发生错误.

现在,复制我们提供的jboss321all.server文件到servers 目录.

cd plugins/

[vishal@localhost plugins]$ ls

com.objectlearn.jdt.j2ee

[vishal@localhost com.objectlearn.jdt.j2ee]$ cd servers

[vishal@localhost servers$ ls

jboss244.server.bak jboss303Tomcat4112.server.bak jboss300all.server.bak jboss321all.server

tomcat403.server.bak weblogic70.server

jboss300.server.bak tomcat410.server x.log

?

这是'jboss321all.server'文件中用于配置的一个片段. 在本教程中我们会使用这个文件,你可以在Downloads里下载.



Downloads :

jboss321all.server



你可以在此文件中根据你的系统修改设置(例如. 端口号).

在你把该文件存到com.objectlearn.jdt.j2ee/servers目录后,移动 com.objectlearn.jdt.j2ee目录到$HOME/eclipse/plugins/目录下($HOME就是你的home目录.

[vishal@localhost temp/plugins] mv com.objectlearn.jdt.j2ee /home/vishal/eclipse/plugins/.

现在, 我们将使用jboss321all.server文件配置Lomboz.

注意 :现在你可以删除临时目录了.

?

配置Lomboz.

现在来运行Eclipse配置Lomboz ($HOME/eclipse/eclipse ).

选择顶部菜单中的Window > Open Perspective > Java就象下图所示一样.

在本教程中我们想订制Java perspective:




再次选择顶部菜单中的Window > Customize Perspective > Other.




选中Lomboz Actions子结点.




点击OK. 现在在你顶部菜单的下方会出现象这样的一个图标.




点击该图标会在你的workbench出现一个Lomboz J2EE View 窗口.



现在, Lomboz J2EE View是可用的了.

选择Window > Customize Perspective.

展开File > New的子结点.选中所有以Lomboz开头的结点.




接着展开Window > Show view.选中Console, Lomboz J2EE View 以及如下图所示的其他几项.




现在点击ok. 你会发现所有这些选项都会在顶部菜单的 File > New >中出现并且还会出现Lomboz菜单,或者在Package Explorer中点右键,一个菜单就会弹出.

配置JBOSS并在Eclipse中运行.

首先我们要配置Java开发的相关设置,因为Lomboz需要使用不同的目录存放源代码和字节码.

选择Window > Preferences > 展开Java结点 > 选择New Project.

在相应的框中输入srcbin作为目录的名字,它们是默认好了的. 请不要修改这些默认的名称,因为在某些Lomboz任务中会用到它们.

同样的,确定JRE library被设置为'JRE_LIB' variable.




选择顶部菜单中的Window > Preferences.




Preferences窗口中选择Lomboz结点.确认JDK Tools.jar被设置为$JAVA_HOME/lib/tools.jar




LOMBOZ结点下选择server definitions子结点. Server types中选择JBOSS 3.2.ALL作为 Server types,选择好之后,其余的选项会被自动加载我们为教程订制的设置.




选择Server Definitions下的'Classpath'标签并确认所有的路径都是正确的. 如果设置的路径有误,Server libraries / Client libraries的子项的jar图标其面就会出现红叉.




你可以在这里添加或删除类库.在你更改了这些选项之后,点击'Apply'确认应用这些设置.

?

现在来验证你的'Classpath Variables'.

选择Window > Preferences > Java > Classpath Variables




你应该会获得和你的开发环境正好相对应的所有这些Classpath变量.

?

测试你的设置.

为了测试你的配置是否正确,我们创建一个J2EE工程作为测试.

选择顶部菜单中的File > New > Lomboz J2EE Project..




输入 'Test'作为项目名并点击Next.

在这里检查一下你的设置;如果你的编译路径是'Test/src'而默认输出路径是'Test/bin'那么就没有问题.




在项目创建向导中点击Libraries标签.

由于Eclipse 2.1中的一个Bug 下面的这个库没有配置正确.

所以选中它并删除掉.




现在添加一个新的库,选择library > Add Library.. >选中JRE System library >点击Next .




选择默认(Default)库,点击Finish.




新的库就被配置好了.

注意:因为eclipse 2.1存在着一个Bug,当你创建一个新的J2EE工程的时候你不得不重复这一步骤.

Next.

选择Web Module > Add.. > 输入模块(Module)的名'OnlineBank' > Ok.






选择Ejb 模块(Modules)标签> Add.. >输入模块(Module)的名'MyBank' > Ok.






选择Targeted Server > Add.. > 'JBOSS 3.2.1 ALL' .

注意: 'JBOSS 3.2.1 ALL'不是文件名,而是我们在文件'jboss321all.server'中为服务器设置的名字用于配置服务器. 下面是文件的一些片段.

name="JBOSS 3.2.1 ALL"
ejbModules="true"






按下Finish.

你会在Package Explorer中的Test工程下看到所有这些目录和库.

Test工程中 'src'用于存放开发的EJB组件的包和Servlets包源代码的目录.

'MyBank'目录是你的EJB模块,开始的时候含有7个文件如下图所示.

'OnlineBank'目录是你的Web模块,开始的时候含有7个文件如下图所示.这个模块的JSP页面会存在该目录下.

注意: 如果你对Ant (出自Jakarta项目)感兴趣,那么你该注意到两个模块都含有一个Ant'build.xml'文件用于编译应用程序.



选择顶部目录的Window > Show View > Lomboz J2EE View.

Lomboz J2EE 视图中也会出现Test工程,包括两个模块'MyBank' 'OnlineBank'使用JBOSS 3.2.1作为他们默认的服务器.




好了,我们开始创建一个EJB,

选择File > New > Lomboz EJB creation wizard.

注意: 你可以通过在Package ExplorerTest工程上点击右键访问生成向导. 如前面介绍的一样选择菜单中的New > Lomboz EJB creation wizard.

添加名为'au.com.tusc'的包;你也可以使用其他的名字.在名称中添加'MySession'.选择无状态会话(Stateless Session EJB选项.




它将如下图所示一样在'au.com.tusc'包中创建文件'MySessionBean.java'.

注意: bean的名称, jndi的名称以及文件中bean的类型会自动生成.同样在生成文件名的时候你给的名字'MySession'后面也会被自动加上'Bean'.所以请留意命名的惯例,因为你只需要在向导中输入bean的名字.不要在名字当中加上Bean这个词,因为向导会自动为你添加它.






现在我们要通过向导添加一个商业方法.

'Package Explorer'中选择 'MySessionBean.java'并展开它, 象下图一样在'MySessionBean'结点上点右键,选择 New > Lomboz EJB Method wizard.

Method signature中输入'public String learnJ2EE(String messg)', 方法的类型选择'Business Method'并且接口的类型选择'Remote Interface'.




在你的bean类中你的商业方法需要的signature将会生成.

在该方法中加入这一行 return "Me too! ";

Bean文件中的代码片段

?/**

? * @ejb.interface-method

? * tview-type="remote"

? *

? **/

???? public? String learnJ2EE? (String messg)? {

???????? return "Me too! ";

???? }

保存这个文件.? 现在我们来生成部署这个bean所需要的其余的文件 (伴随着帮助类的Home以及Remote接口, 使用Xdoclet).

首先把这个Bean加入模块中.

选择Package Explorer> Test > MySessionBean.java > MySessionBean,在上面点右键; 一个菜单会弹出.选择弹出菜单中的Lomboz J2EE项并选择'Add EJB to module'.






选择Package Explorer > Test > MyBank (这是个目录), 在上面点右键; 一个菜单会弹出.?选择在弹出菜单中底部的Lomboz J2EE.?选择Generate EJB classes. 这样会生成和部署有关的接口,帮助类以及其他相关文件; 也就是部署描述器(deployment descriptors.






这样会生成一个名为ejbsrc的目录,它下面有一个名为au.com.tusc的包,并且在那下面会生成伴随着必要帮助类的远程和本地接口.

注意:在使用本教程的过程中你不用编辑任何在'ejbsrc'目录下由Xdoclet生成的文件.因为每当你使用Generate EJB Classes的时候,它会生成上面提过到的必要的接口和帮助类. 在解析了由Lomboz bean创建向导创建的bean类之后,这些文件会由Xdoclet生成. Xdoclet读取(looks at)在bean类中声明的各种标签和方法,然后生成相应的文件. 因此, 你只要添加商业方法并在bean类中实现它们,其余的就交给Xdoclet办了.因此在开发过程中, 你不必 (也不应该!) 编辑任何生成好的文件.在阅读本教程的过程中这点会变得越来越清楚.

MyBank > META-INF目录下现在有15个文件,其中包括ejb-jar.xml jboss.xml以及ejb-generate.xml.前文提到过最开始这里只有6 个文件.其他的文件是部署bean时需要的.




现在在没有任何关于部署的更多信息的情况下我们来部署这个bean.

在你工作区(workspace)的Lomboz J2EE视图中, 展开Test > 展开 MyBank.

au.com.tusc.MySessionBean 添加到你的MyBank EJB模块中.

JBOSS 3.2.1 ALL 图标上点右键如下图所示.






一个菜单会弹出;选择Debug Server选项.它会在启动带有调试模式的服务器并在启动成功之后在工作区(workspace)的console中显示入下所示的信息.




选择Lombo J2EE View > expand Test > 选择MyBank 并在上面点右键; 一个菜单会弹出; 选择Deploy.




一旦这个bean被部署了, 一条消息便会在你的'Console'中等待确认,如下图所示.




现在我们来创建一个客户端来访问部署在JBOSS(应用程序服务器)上的bean.

Go to Package Explorer > Test > src, 在那上面点右键,会弹出一个菜单>选择EJB Test client.

输入包的名字'test' 和客户端的名字 'Client'.




选择EjbHome作为'MySessionHome' 以及Ejb Interface作为 'MySession' > Finish如下图所示.




现在客户端已经生成了,是调用部署好的bean的商业方法的时候了.

我们需要一些代码来调用bean的方法.




Client.java中添加下面的'testBean()'方法.

String request = "I'm tired of 'Hello, world' examples..";

System.out.println("Request from client : " + request);

System.out.println("Message from server : " + myBean.learnJ2EE(request) );

Client.java的代码片段.

     public void testBean() {
         try {
               au.com.tusc.MySession myBean = getHome().create();
               //--------------------------------------
                //This is the place you make your calls.
                //System.out.println(myBean.callYourMethod());
               String request = "I'm tired of 'Hello, world' examples..";
               System.out.println("Request from client : " + request);
               System.out.println("Message from server : " + myBean.learnJ2EE(request) );
          } catch (RemoteException e) {
                 e.printStackTrace();
          } catch (CreateException e) {
                 e.printStackTrace();
          } catch (NamingException e) {
                 e.printStackTrace();
          }
     }


Package Explorer下面选择Client结点. 象下图一样在顶部的菜单中点击这个图标.


在该图标中选择> Run as > Java Application.




你的客户端会发出一个请求,它的结果会在你的工作区的console中显示出来, 如下所示.




注意:忽略这些和org.apache.log4j.Property有关的例外因为它需要在客户端路径的'log4j.properties'.我们会在以后提到这个问题,因为它并不影响这个bean的功能.

?

你已经成功的创建了一个bean并对它执行了一个操作. 现在,在我们开始实现这个学习案例之前,我们将在下一章将简要的概括一下J2EE的概念.

?

待续,将会在我的Blog:raxy.blogbus.com中同步登出,

阅读全文
0 0

相关文章推荐

img
取 消
img