网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java远程方法调用(二).
.播放不同的Alert声音.
.J2ee程序中的面向对象设计.
.使用JSR-238更快地全球化您的应用.
.关于管理蓝牙SDP记录和游戏服务器.
.jboss配置系列第二天.
.MIDlet应用程序模型基础.
.J2ME程序开发初学者快速入门的九.
.Spring中的持久性.
.sqlserver2000h和jdbc的融合问题.
.JBPM数据库中取得这个流程实例,.
.使用Netbeans IDE集成Motorola J.
.XML——连接SQL和Web程序的桥梁.
.介绍J2ME可选包的概念.
.一个2D图形绘画的案例.
.J2ME再现华容道1.
.jboss3.2.1+Tomcat4.1.24的整合版.
..NET vs J2EE——面对SOA的荒谬与.
.在J2EE上部署Web服务(Web Servi.
.J2EE中用EntityBean和JDO的优缺点.

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

发表日期:2007-12-23



  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

(出处:)


上一篇:应用农历 人气:616
下一篇:在J2EE上部署Web服务(Web Services)(1) 人气:718
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐