- 浏览: 214811 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
a66756675:
...
tomcat:tomcat的OutOfMemoryError解决 -
ooo456mmm:
说的对,如果用Mina框架来处理,要简单很多了
NIO socket服务器注意的几点. -
long_ltoy:
这样的话,看上去是代替了session,但这不和session ...
在JSP中使用JAVABEAN代替Session -
linzx0212:
关注下,不错……
tomcat:tomcat的OutOfMemoryError解决 -
liudeh_009:
总结得很好
NIO socket服务器注意的几点.
本例以我所学的内容为例:
Earnest bank 要求开发一个美元和卢比转换的计算器构件。 说明使用EJB来创建此构件是有道理的并说明必须写的代码。
一. 识别机制
二. 确定企业 bean 的类型
三. 编写远程接口代码
四. 编写本地接口代码
五. 编写企业 bean 类代码
六. 编译源文件
一. 识别机制
EJB 是合适的技术,因为:
EJB 构件自动处理系统级服务
企业 bean 只实现业务逻辑
二. 确定企业 bean 的类型
银行应用的计算器构件不要求持久的存储机制
货币的等值转换,这种值不在其他地方使用
因此,最适合于创建无状态的会话 bean
三. 编写远程接口代码
远程接口定义企业bean的所有业务方法,不包括系统级的操作方法。 这些业务方法在EJB类中实现。
写远程接口的步骤:
需要 javax.ejb.EJBObject 和 java.rmi.RemoteException 接口
建立由扩展EJBObject 接口的远程接口
在 EJB 类中实现所有在远程接口定义的业务方法。
根据本问题的陈述,可写出如下远程接口程序:
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Calculator extends EJBObject
{ public double dollarToRs(double dollars)
throws RemoteException;
}
四. 编写本地接口代码
本地接口代码定义了允许EJB 客户建立且查找EJB构件的方法。 编写本地接口的步骤如下:
需要java.io.Serializable、java.rmi.RemoteException、 javax.ejb.CreateException、javax.ejb.EJBHome 接口
建立由扩展EJBHome 接口的本地接口
定义 create() 方法去建立特定的 EJB 类的一个实例,该方法的返回类型必须是EJB的远程接口对象。
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface CalculatorHome extends EJBHome
{ Calculator create() throws RemoteException, CreateException; }
五. 编写企业 bean 类代码
实现所有在远程接口中说明的业务方法。编写EJB类的步骤:
需要java.rmi.RemoteException、javax.ejb.SessionBean、javax.ejb.SessionContext 接口
建立 EJB 类实现 SessionBean 接口
实现在远程接口中定义的业务方法。
编写 ejbCreate()、 ejbRemove()、 ejbActivate()、 ejbPassivate()、 setSessionContext()和对缺省的构造器方法的实现。
注意:EJB类中实现的方法名及其特征必须和远程方法中声明的相一致。
根据问题的陈述和前边的描述,可创建以下EJB代码程序。
EJB代码
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class CalculatorEJB implements SessionBean
{ public double dollarToRs(double dollars)
{ return dollars * 47.20; }
public CalculatorEJB() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
六. 编译源文件
以下为原代码
远程接口程序:
/*
@InberGong
Date 2004/9/8
File name:Calculator.java
*/
import javax.ejb.EJBObject;
import java.rmi.RemoteException;
public interface Calculator extends EJBObject
{
public double dollarToRs(double dollars)throws RemoteException;
public double rsToDollar(double rs)throws RemoteException;
public double rmbToDollar(double rmb)throws RemoteException;
public double dollarToRMB(double dollars)throws RemoteException;
}
本地接口程序如下:
/*
@InberGong
Date 2004/9/8
File name:CalculatorHome.java
*/
import java.io.*;
import java.rmi.*;
import javax.ejb.*;
public interface CalculatorHome extends EJBHome
{
Calculator create()throws CreateException,RemoteException;
}
企业 bean 类代码
/*
@InberGong
Date 2004/9/8
File name:CalculatorEJB.java
*/
import java.rmi.*;
import javax.ejb.*;
public class CalculatorEJB implements SessionBean
{
public double dollarToRs(double dollars)throws RemoteException
{
return dollars*47.20;
}
public double rsToDollar(double rs)throws RemoteException
{
return rs/47.20;
}
public double rmbToDollar(double rmb)throws RemoteException {
return rmb/9;
}
public double dollarToRMB(double dollars)throws RemoteException
{
return dollars*9;
}
public void ejbCreate()throws CreateException,RemoteException
{
System.out.println("ejbCreate()");
}
public CalculatorEJB()
{
System.out.println("CalculatorEJB()");
}
public void setSessionContext(SessionContext sc)
{
System.out.println("setSessionContext()");
}
public void ejbRemove()
{
System.out.println("ejbRemove()");
}
public void ejbActivate(){}
public void ejbPassivate(){}
}
最后是客户端程序
/*
@InberGong
Date 2004/9/8
File name:CalculatorClient.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.naming.*;
import javax.rmi.*;
public class CalculatorClient extends JFrame
{
public static int w=500;
public static int h=95;
public static String str="Earnest Bank Welcomes You";
Container c;
JLabel l,result;
JTextField t;
JButton b;
public static String value;
public static double dbl;
public static double amt;
public CalculatorClient()
{
super(str);
c = getContentPane();
c.setLayout(new GridLayout(2,2,2,2));
l = new JLabel("Enter the amount in Dollars($)");
c.add(l);
t = new JTextField(10);
c.add(t);
b = new JButton("Calculate");
c.add(b);
result = new JLabel();
c.add(result);
b.addActionListener(new addEvent());
setSize(w,h);
show();
}
class addEvent implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
value = t.getText();
dbl = Double.parseDouble(value);
try{
Context ic = new InitialContext();
Object obj = ic.lookup("CalculatorJNDI");//JNDI name
CalculatorHome home = (CalculatorHome)PortableRemoteObject.narrow(obj,CalculatorHome.class);
Calculator calc = home.create();
amt = calc.dollarToRs(dbl);
calc.remove();
Calculator calc2=home.create();
if(calc2.isIdentical(calc))
{
System.out.println("两个桩实例指向同一个远程HOME实例!");
}
else
{ System.out.println("没有指向同一个远程HOME实例!");
}
result.setText("Result(RS.)" + String.valueOf(amt));
}
catch(Exception t)
{
System.out.println(t);
}
}
}
public static void main(String args[])
{
new CalculatorClient();
}
}
开始配置
这里用的是j2ee1.3
运行j2ee
start j2ee -verbose
deploytool
new->application
applicaton file name: E:\public_html\public_java\ap2\ap2.ear
applicaton disply name: ap2.ear
new->Eterprise Bean
Contents 里面加入
Calculator.class CalculatorHome.class CalculatorEJB.class 三个文件
->NEXT
出现下对话框:New Enterprise Bean Wizard -General
在Bean Type中选择Session ->Stateless
在Enterprise Bean Calss中选择CalculatorEJB
在本地接口中选择CalculatorHome 在Remote Interface中选择Calculator
->NEXT->NEXT->NEXT->NEXT->NEXT->NEXT->NEXT->Finish
点左视窗中的应用ap2后 ->Tools->Deploy..->选中复框Return Client Jar
->NEXT
出现 Deploy ap2 -JNDI Names对话框
在Application 的JNDI Name中输入客户端程序中要查找的JNDI名:CalculatorJNDI
->NEXT->Finished........->ok
在 dos窗口中进入到程序的根目录加入jar 包
set classpath=%classpath%;ap2Client.jar
java CalculatorClient
发表评论
-
Java字典:如何从程序员升级到架构师.
2012-03-24 23:32 0最近好多同学问学习java ... -
一个Java程序员应该掌握的10项技能
2011-12-08 12:56 9061、语法:必须比较熟 ... -
自定义log4j中的DailyRollingFileAppender
2011-03-11 22:47 4059需求: 日志内容是自定义的。例如,登录信息记录到一个日志文 ... -
google 测试
2010-05-11 16:32 781在Google,测试有一个721的原则:70%的测试工作在底层 ... -
项目测试风险总结
2009-12-01 11:38 993随着项目规模的扩大,项目的复杂性也逐渐增加,在项目中做好风险控 ... -
性能测试总结之性能监控篇
2009-12-01 11:35 1587在性能测试的整个流程当中,监控起着至关重要的作用。因为在性 ... -
如何编写高质量的Java代码
2009-10-14 09:17 1174如何编写高质量的Java代码: 1、 养成良好的习惯及 ... -
一直在用的类注释
2009-10-10 09:17 697/** * @Filename: ${file_na ... -
rapid-framework 连接 oracle时的一个bug
2009-04-28 17:40 2181在连接oracle数据库时报错: Exception ... -
xapool的框架配置
2008-12-17 10:31 2728package juan.orm.datasource.imp ... -
NIO socket服务器注意的几点.
2008-12-06 17:36 4357当你看到这篇文 ... -
jsp分页
2004-06-23 04:26 890******************************* ... -
解决jsp中乱码问题
2004-06-23 04:28 732数据库存储最好用8859_1的格式,所以存入数据库的时候进行一 ... -
使用类文件的数据库连接方法
2004-06-23 04:34 630******************************* ... -
jsp中文显示问题
2004-06-23 04:40 54510:30 2003-11-29 InberGong整理&l ... -
不用数据源直接连sqlserver数据库(jsp,中文)
2004-06-23 04:43 852//////////////整理InberGong10:22 ... -
WINDOWS 2000 环境下JAVA环境配置
2004-06-23 04:44 946//////////////整理InberGong10:22 ... -
Java 学习方法浅谈(http://www.javaeye.com站长Robbin著)
2004-07-01 02:51 678Java本身是一种设计的非 ... -
解决java中文问题的一些资源
2004-07-01 02:54 756解决java中文问题的一些资源 我收集了一些这方面的文章, 希 ... -
JAVA程序桥联数据库
2004-07-02 12:11 804/****************************** ...
相关推荐
本文将围绕“Jboss下开发ejb应用之一会话bean的应用”这一主题,深入探讨如何在Jboss应用服务器上开发和部署会话Bean,以及涉及到的相关工具和源码。 会话Bean是EJB的一种类型,它代表了业务逻辑组件,为客户端提供...
这个简单的示例展示了如何创建一个无状态会话Bean并从`Test.jsp`页面中调用它的方法。在实际项目中,`Test.jsp`可能会包含更复杂的逻辑来测试bean的各种功能。 总之,EJB3的有状态和无状态会话Bean提供了灵活的业务...
实战EJB之三开发会话Bean(有状态会话Bean) 本文主要讲解了有状态会话Bean(Stateful Session Bean)的概念、特点、生命周期和开发过程。下面是相关知识点的总结: 1. 什么是有状态会话Bean? 有状态会话Bean...
环境:Window XP profession, JDK 1.6, MySQL 5.0, JBoss...该示例使用EJB 3.0的无状态会话Bean呼叫JPA持久层完成数据库的操作,推荐广大企业级Java程序员项目中使用。 注意:连接池的配置参见上一个资源readme.txt文档
该示例使用Eclipse 3.3 Europa IDE、JDK 6.0、GlassFish 2.0翻写的第一个EJB 3.0会话bean应用。注意:必须首先安装GlassFish服务器,可以通过安装NetBean 6.0(M9)来完成安装该服务器,或能单独安装也行,然后在...
在EJB中,会话Bean分为两种类型:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。无状态会话Bean不保留任何客户端特定的信息,每次调用都是独立的。而有状态会话Bean则可以...
**EJB3 开发第一个无状态会话 Bean ...以上就是关于“EJB3 开发第一个无状态会话 Bean”的详细解析,希望对您理解和实践 EJB3 技术有所帮助。如果您想了解更多有关 EJB3 的知识,可以参考给定的博文链接进行深入学习。
【无状态会话Bean实验指导】的文档主要涵盖了如何开发和测试无状态Session Bean的步骤,这是企业级JavaBeans(EJB)技术的一部分,属于...这有助于理解和验证无状态会话Bean的功能,并为以后的EJB学习和应用打下基础。
在本实验中,我们将学习如何安装和配置 JBoss 服务器,配置 MyEclipse 环境,创建及测试 EJB3 无状态会话 Bean。本实验将帮助我们掌握 JBoss 的安装与配置,掌握在 MyEclipse 中配置 JBoss 容器,掌握使用 MyEclipse...
EJB的无状态会话Bean和有状态会话Bean分别针对不同的应用场景设计,开发者应根据实际需求选择合适的Bean类型。无状态Bean适用于简单、无状态的服务,而有状态Bean适用于需要保持客户端状态的复杂业务。理解并熟练...
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
**EJB3.0无状态SessionBean例子** Enterprise JavaBeans(EJB)是Java平台上的一个核心组件,用于构建企业级分布式应用。EJB3.0是EJB规范的一个重大改进,它引入了诸多简化开发的新特性,使得EJB更加轻量级且易于...
会话Bean是EJB中处理客户端交互的组件,根据其状态,会话Bean分为有状态会话Bean(Stateful Session Beans)和无状态会话Bean(Stateless Session Beans)。 1. **无状态会话Bean**:无状态会话Bean不会持久保存...
本篇文章将深入探讨有状态(Stateful)和无状态(Stateless)会话Bean的区别,以及如何在实际应用中选择合适的类型。 首先,我们要理解会话Bean的基本概念。会话Bean是一种服务器端对象,它作为客户端应用程序与...
【实验6-无状态会话bean】是关于Java企业级应用开发的一个实践环节,主要涉及的是EJB(Enterprise JavaBeans)中的无状态会话bean。无状态会话bean是一种服务器端组件,它不保存任何会话状态信息,每次调用都是独立...
【实验6-无状态会话bean】主要涉及的是Java企业级应用开发中的核心概念——无状态会话Bean(Stateless Session Bean),这是Java EE(Java Platform, Enterprise Edition)规范中的重要组成部分,主要用于处理业务...
- **无状态会话Bean (Stateless Session Beans)**: 提供无持久性状态的业务逻辑服务。它们不维护与客户端的会话,每次调用都是独立的,适合处理大量并发请求。 - **有状态会话Bean (Stateful Session Beans)**: ...