分享
 
 
 

用j2ee实现的一个简单的会话bean(译自j2ee tutorial)

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Getting start(为了和tutorial的章节名字相对,以后所有章节采用英文名字)

设置:

在你开始运行所给的应用程序事例前,你应当按照步骤下载和配置服务器。

1.下载示例代码:

本教程的源代码在j2eetutorial/examples/src/ejb/converter文件夹下,当你下载并解压缩tutorial bundle的后,会找到这个目录。

下载地址:http://Java.sun.com/j2ee/download.Html#tutoril

2.下载build工具(ant)

为了运行实例,你必须下载并且安装j2ee sdk和ant。

j2ee sdk下载地址:http://java.sun.com/j2ee/download.html#sdk;

ant下载地址:http://jakarta.apache.org/builds/jakarta-ant/release/v1.3/bin

按照提示解压缩或者安装即可。

3.检查环境变量

在系统的环境变量中,设置如下:

JAVA_HOME: j2se sdk安装的目录

J2EE_HOME: j2ee sdk安装的目录

ANT_HOME: ant安装的目录

PATH: 里面必须含有j2se,j2ee,ant下的bin目录

4.运行j2ee服务器

在命令提示行下输入j2ee -verbose

-verbose不是必需的,但是有利于debug。

要停止服务,输入

j2ee -stop

5.运行deploytool

你可以使用2种模式,命令行或者GUI。这里推荐大家使用GUI。

运行了j2ee后,在命令提示行输入deploytool。

建立j2ee应用程序

这个简单的应用程序含有3个组件:一个enterprise bean,一个j2ee客户,一个web组件。在建造这些组件之前,你必须建立一个j2ee应用名字叫CoverterApp,这个会被存储在ConverterApp.ear的文件中

1.在deploytool中,选择FileNewApplication。

2.点Browse。

3.选择目录j2eetutorial/examples/src/ejb/converter。

4.输入文件名字ConverterApp.ear。

5.点New Application。

6.点OK。

建立enterprise bean

一个enterprise bean是一个包含了商业逻辑的服务器组件。在运行时,客户通过调用enterprise bean的方法执行商业逻辑。在这个例子中,这个bean是一个无状态的会话bean名字是CoverterEJB。源代码在j2eetutorial/examples/src/ejb/converter Directory。

一个enterprise bean包含3个部分:

1.Remote interface

2.Home interface

3.Enterprise bean class

一个Remote interface定义了客户可以调用的方法,方法实现于enterprise bean代码,这个实例的Remote interface如下:

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

import java.math.*;

public interface Converter extends EJBObject {

public BigDecimal dollarToYen(BigDecimal dollars)

throws RemoteException;

public BigDecimal yenToEuro(BigDecimal yen)

throws RemoteException;

}

一个home interface允许一个客户创建,查询或者删除一个enterprise bean。ConverterHome interface含有一个创建方法,返回一个remote interface 类型。

import java.io.Serializable;

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface ConverterHome extends EJBHome {

Converter create() throws RemoteException, CreateException;

}

这个示例的enterprise bean类名字是ConverterBean。这个类实现2个商业方法,dollarToYen和yenToEuro。

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import java.math.*;

public class ConverterBean implements SessionBean {

BigDecimal yenRate = new BigDecimal("121.6000");

BigDecimal euroRate = new BigDecimal("0.0077");

public BigDecimal dollarToYen(BigDecimal dollars) {

BigDecimal result = dollars.multiply(yenRate);

return result.setScale(2,BigDecimal.ROUND_UP);

}

public BigDecimal yenToEuro(BigDecimal yen) {

BigDecimal result = yen.multiply(euroRate);

return result.setScale(2,BigDecimal.ROUND_UP);

}

public ConverterBean() {}

public void ejbCreate() {}

public void ejbRemove() {}

public void ejbActivate() {}

public void ejbPassivate() {}

public void setSessionContext(SessionContext sc) {}

}

现在你可以去编译这些类

1.在命令提示行进入j2eetutorial/examples目录

2.输入以下命令ant converter

ant自动编译这些文件,编译好的文件放在j2eetutorial/examples/build/ejb/converter目录下。

打包enterprise bean

在deploytool下,选择FileNewEnterprise Bean

1.点Next

2.在Application button选择Create New JAR File,在下拉菜单选择ConverterApp,在JAR Display Name输入ConverterJAR,点Edit,在数形目录上输入j2eetutorial/examples/build/ejb/converter directory,选择这些类并且点Add:Converter.class, ConverterBean.class, and ConverterHome.class,点OK,点Next。

3.选择Bean Type为Session,选择Stateless,Enterprise Bean Class 下拉菜单选择ConverterBean, Enterprise Bean Name为ConverterEJB。在Remote Home Interface选择ConverterHome,在Remote Interface选择Converter,点Next。

4.点Finish。

创建客户端

一个j2ee应用程序客户端是用java写成的。他和服务器端运行在不同的jvm中。

示例程序的客户端源代码j2eetutorial/examples/src/ejb/converter/ConverterClient.java。你在运行ant的同时也同时编译了此客户端。

一个客户端需要执行这些基本任务:

1 Locating the home interface

2 Creating an enterprise bean instance

3 Invoking a business method

ConverterHome interface定义了life-cycle methods比如creats,在ConverterClient可以执行create方法前,他必须定位并且示例化一个ConverterHome类型的对象。

1 创建initial naming context

Context initial = new InitialContext();

上下文是JNDI的一部分。一个上下文是一个名字和对象binding的集合。

2 取得客户的环境命名上下文

Context myEnv = (Context)initial.lookup("java:comp/env");

3 取得binding在ejb/SimpleConverter上的对象

Object objref = myEnv.lookup("ejb/SimpleConverter");

ejb/SimpleConverter被binding在一个enterprise bean引用上,这是一个enterprise bean逻辑的名字。

4 缩小指向ConverterHome对象的引用

ConverterHome home =

(ConverterHome) PortableRemoteObject.narrow(objref,

ConverterHome.class);

为了取得一个bean实例,客户在ConverterHome调用create方法

Converter currencyConverter = home.create();

调用商业方法也很简单,这个客户调用dollarToYen方法如下:

BigDecimal param = new BigDecimal ("100.00");

BigDecimal amount = currencyConverter.dollarToYen(param);

客户端程序:

The full source code for the ConverterClient program follows.

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

import java.math.BigDecimal;

public class ConverterClient {

public static void main(String[] args) {

try {

Context initial = new InitialContext();

Object objref = initial.lookup

("java:comp/env/ejb/SimpleConverter");

ConverterHome home =

(ConverterHome)PortableRemoteObject.narrow(objref,

ConverterHome.class);

Converter currencyConverter = home.create();

BigDecimal param = new BigDecimal ("100.00");

BigDecimal amount =

currencyConverter.dollarToYen(param);

System.out.println(amount);

amount = currencyConverter.yenToEuro(param);

System.out.println(amount);

System.exit(0);

} catch (Exception ex) {

System.err.println("Caught an uneXPected exception!");

ex.printStackTrace();

}

}

}

打包客户端

在deploytool选择New Application Client

1 点next

2 选择ConverterApp,点edit,在j2eetutorial/examples/build/ejb/converter目录下选择ConverterClient.class点add,点ok,点next。

3 在Main Class下拉菜单选择,选择ConverterClient,Display Name为ConverterClient,在Callback Handler Class选择container-managed authentication,点next,点finish。

4 在主程序的树选择ConverterClient,选择EJB Refs卡片,在Coded Name column输入ejb/SimpleConverter,在Type column 选择Session,在Interfaces column选择Remote,在Home Interface选择ConverterHome,在Local/Remote Interface column输入Converter。

建立web客户端

web客户端包含在jsp文件中:j2eetutorial/examples/src/ejb/converter/index.jsp。

jsp文件不需要编译。

打包web客户端

在deploytool的主界面下选择FileNewWeb Component

1 next

2 选择Create New WAR File,并选择ConverterApp,点edit,在树形目录上面输入j2eetutorial/examples/build/ejb/converter,选择index.jsp然后点add,点ok,点next。

3 选择jsp

4 在JSP Filename选择index.jsp,点finish

5 在主程序的树选择ConverterWAR,选择EJB Refs卡片,点add,在Coded Name column, 输入ejb/TheConverter,其他和客户端设置相同。

指定JNDI名称:

尽管客户端和web客户端使用相同的bean,但是他们使用不同的名字来使用这个相同的bean,客户端使用ejb/SimpleConverter,而web客户端使用ejb/TheConverter。你必须设置JNDI的名称。

在树形目录下选择ConverterApp,选择JNDI Names卡片,在所有的JNDI栏输入MyConverter。

配置这个J2EE应用程序

1 选择Tools-〉Deploy

2 选择Return Client Jar

3 输入需要生成jar文件的地址

4 点next

5 确认JDNI name正确后点next

6 在WAR Context Root dialog box,输入converter

7 点next

8 finish

运行J2EE客户端

1 在命令行进入j2eetutorial/examples/src/ejb/converter目录

2 保证这个目录含有ConverterApp.ear

3 设置环境变量APPCPATH包含ConverterAppClient.jar

4 输入以下命令 runclient -client ConverterApp.ear -name ConverterClient

-textauth

5 用户名:guest 密码:guest123

6 运行成功显示如下: Binding name:'java:comp/env/ejb/SimpleConverter'

12160.00

0.77

Unbinding name:'java:comp/env/ejb/SimpleConverter'

运行web客户端

在浏览器地址输入http://:8000/converter

即可

host是本机名或者localhost

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有