Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1530179
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:48:26

一起学习
Getting start(为了和tutorial的章节名字相对,以后所有章节采用英文名字) 设置: 在你开始运行所给的应用程序事例前,你应当按照步骤下载和配置服务器。 1.下载示例代码: 本教程的源代码在j2eetutorial/examples/src/ejb/converter文件夹下,当你下载并解压缩tutorial bundle的后,会找到这个目录。 下载地址: 2.下载build工具(ant) 为了运行实例,你必须下载并且安装j2ee sdk和ant。 j2ee sdk下载地址: ant下载地址: 按照提示解压缩或者安装即可。 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 下载本文示例代码


用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)用j2ee实现的一个简单的会话bean(译自j2ee tutorial)
阅读(232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~