随着Spring的兴起,EJB2.0被彻底击败,但是EJB3.0却痛定思痛,总结经验教训以一个崭新的面貌问世,而他究竟怎么,能否以流行的敏捷性开发框架抗衡,这里我们可以先了解一下他,然后再来下定论,下面就开始吧:
软件环境:
IDE:Eclipse 3.2
jdk1.5.0
Application Server:jboss-4.2.0.CR1
JBoss Eclipse IDE: JBossIDE-2.0.0.Beta2-ALL.zip
EJB3.0
后三项都可以在 http://www.jboss.com/downloads/index 中下载。下载完成后,下面就开始吧:
(一)环境设置
1. 将jboss-4.2.0.CR1解压释放,我的目录是D:\Java\jboss-4.2.0.CR1
2. 环境变量添加 JBOSS_HOME,指向该目录
3. 解压释放JBossIDE-2.0.0.Beta2-ALL.zip,将plugins和features目录下的文件拷贝到eclipse的
目录下,删除原始eclipse\configuration的文件全部删除(除了config.ini文件),重新启动eclipse,
点击Window-->Preferences,如果能够看到图一,和图二中的东东,那么JBoss Eclipse IDE,就安装成
功了。图二蓝色标注的部分是JBoss Rule的东西,不是本文讨论的内容,所以不用管他。
4. 点击图二红色标注的部分,New-->New Server-->JBoss Inc-->JBoss AS 4.0, 点击Next, 点击Home按钮指向JBoss的安装目录,这里我的是D:\Java\jboss-4.2.0.CR1,然后为这个server取一个名字
jboss-4.2.0.CR1,Configuration选择default,点击default,名字还是叫做jboss-4.2.0.CR1,然后点击finish。到此为止全部环境已经设置好了。
(二)建立工程
1. File-->New-->Other-->EJB3.0-->EJB3.0 Project,取一个名字Ejb3Tutorial,点击Next按钮,选择刚才安装JBoss AS jboss-4.2.0.CR1,点击Finish。这时一个EJB3.0的工程就建好了。但是发现有一个错误,打开Window-->Show view-->Problems,打开透视图以后发现这个错误
Project Ejb3Tutorial is missing required library: 'D:\Java\jboss-4.2.0.CR1\server\default\deploy\ejb3.deployer\jboss-ejb3x.jar'
这时右键打开工程属性,Properties-->Java Build Path-->Libraries,打开JBoss EJB3 Libraries[default],
发现确实有一个librariy有警告,错误信息很明显,就是missing 。这时在%JBOSS_HOME%\client可以找到这个librariy,把他拷贝到D:\Java\jboss-4.2.0.CR1\server\default\deploy目录下,然后refresh一下,此时错误信息就没有了,一切准备就绪。
2. 我们的这一个例子以JBoss提供的教程来实现,一共3个接口,一个实现类,还有一个cilent。代码如下:
public interface Calculator {
int add(int x, int y);
int subtract(int x, int y);
}
@Local
public interface CalculatorLocal extends Calculator
{
}
@Remote
public interface CalculatorRemote extends Calculator
{
}
@Stateless
public class CalculatorBean implements CalculatorRemote, CalculatorLocal {
public int add(int x, int y) {
return x + y;
}
public int subtract(int x, int y) {
return x - y;
}
}
public class Client {
public static void main(String[] args) throws Exception {
InitialContext ctx = new InitialContext();
Calculator calculator = (Calculator) ctx.lookup("CalculatorBean/remote");
System.out.println("1 + 1 = " + calculator.add(1, 1));
System.out.println("1 - 1 = " + calculator.subtract(1, 1));
}
}
很简单是吧?哦,也许吧。
第一种方式:也就是上述代码那样,CalculatorLocal被@Local标注,以说明他是一个本地接口而CalculatorRemote被@Remote标注,说明他是一个远程接口。而CalculatorBean被@Stateless标注,并实现了上述接口,说明他是实现了上述接口的无状态会话bean。这种做法是JBoss推荐的,也是我个人比较喜欢的,从接口一眼就可以看出这个接口是为本地还是远程所提供服务的。
第二种方式:分别删除这两个接口的@Local和@Remote标注,然后在CalculatorBean加注@Local
({CalculatorLocal.class})和@Remote ({CalculatorRemote.class})。
第三种方式:和以前的EJB,删除全部标注,写部署文件ejb-jar.xml。
哈哈,真是萝卜白菜各有所爱嘛。
这里顺便提及一下JNDI绑定的问题:
The Calculator bean will have two JNDI bindings for the remote and Local interface. By default, JBoss will use ejbName/local and ejbName/remote for the local and remote interfaces, respectively.
从Client的代码可以看出,Client就正是采用了JBoss这种默认的绑定方法,而我们也可以实现自己的绑定,这也很简单,用@LocalBinding和@RemoteBinding这两个标注就可以了。如上,如果我们在Calculator bean上标注@LocalBinding(jndiBinding="myFirst/Local")和@RemoteBinding(jndiBinding="myFirst/Remote")的话,那么客户端调用就应该相应的改为ctx.lookup("myFirst/Local")和ctx.lookup("myFirst/Remote")了。
(三). 编译,运行
好了,到此所有工作都已经完成了,编译运行吧。这里由于JBoss 可以热部署EJB3.0,所以先启动服务。这里可以到%JBOSS_HOME%\bin 下执行run命令,也可以在eclipse中,Window-->Show view-->Servers, 选中我们建立的jboss-4.2.0.CR1,然后右键start启动JBoss AS.
在这个例子中,有一个build.xml文件,我们进入这个项目的文件路径下,我的是D:\workspace\Ejb3Tutorial,然后执行ant run命令,可以成功看到:
run:
[java] 1 + 1 = 2
[java] 1 - 1 = 0
这就算成功了,因为ant run命令首先将我们的代码编译并打包到%JBOSS_HOME%\server\default\deploy目录下,然后执行Client的调用。当然我们也可以在eclipse中执行,右键选中build.xml,Run As --> External Tools,选中targets这里构上run,ejbjar,后者是打包的deploy目录,而前者是执行Client,但是依赖后者,所以之间选择run就可以了。然后点击run按钮,可以在Console透视图可以看到:
Buildfile: D:\workspace\Ejb3Tutorial\build.xml
prepare:
compile:
ejbjar:
run:
[java] 1 + 1 = 2
[java] 1 - 1 = 0
BUILD SUCCESSFUL
Total time: 2 seconds
好了,到这里我们的第一个无状态会话bean就开发完成,别且看到了正确的结果。可以看到EJB3.0消除了home接口,和一些其他的东东,而采用Annotation来设计实现,这样的无侵入架构真的让人对他很有期待,等着看吧。^_^
- 大小: 111.5 KB
- 大小: 48.7 KB
分享到:
相关推荐
例如,`@Stateless` 注解用于声明一个类为无状态SessionBean。 - **依赖注入**:通过`@EJB`注解,可以实现Bean之间的依赖关系,简化了代码的结构和管理。 - **简化接口**:EJB3.0支持本地接口(Local Interface)...
**企业级JavaBeans (EJB) 3.0:核心概念与Session Bean详解** 企业级JavaBeans(Enterprise JavaBeans,...在深入学习EJB 3.0之前,建议阅读"**EJB3.0开发Session Bean.pdf**"这个文档,它将提供更详细的指导和实例。
**EJB3.0开发Session Bean** Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组件之一,...通过学习《EJB3.0开发Session Bean》文档,开发者可以深入了解并实践这些概念,为自己的职业生涯添砖加瓦。
EJB 3.0是EJB规范的一个重要版本,它在EJB 2.x的基础上进行了大幅度的简化,提升了开发效率,降低了学习曲线,使得Java EE应用程序的开发变得更加直观和高效。 **EJB 3.0 的核心特性** 1. **注解驱动**:EJB 3.0...
EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要标准,它定义了如何在Java EE(Java Platform, Enterprise Edition)环境中构建可复用的、组件化的服务器端应用程序。EJB 3.0的发布极大地简化了EJB的...
EJB3.0是EJB规范的一个重要版本,它在EJB2.x的基础上进行了大量简化,提高了开发效率,并引入了注解驱动的开发方式,使得EJB更易于理解和使用。 在EJB3.0中,主要包含以下关键知识点: 1. **实体Bean(Entity ...
为了更好地理解EJB 2.0和EJB 3.0的不同之处,以下是一些具体的示例: 1. **实体Bean示例** - **EJB 2.0**: ```java public interface CustomerHome extends EJBHome { Customer create(String name, String ...
1. **注解驱动(Annotation-Based)**:在EJB 3.0中,开发者可以通过注解在类和方法级别声明bean的属性,如实体(Entity)、会话(Session)和消息驱动(Message Driven)bean,以及事务、安全性和持久化等。...
1. **实体Bean(EJB Entity)**:在EJB 3.0中,实体Bean的实现变得更加简单,引入了Java Persistence API (JPA)。开发者可以通过注解(如`@Entity`)直接在Java类上声明实体,并使用`@Id`指定主键。此外,还支持实体...
EJB3.0是EJB规范的一个重大改革版本,它极大地简化了开发流程,降低了对开发者的要求,使得更多的Java开发者能够轻松地利用EJB技术。 ### Entity Bean Entity Bean是EJB中的持久化组件,负责存储和检索业务数据。在...
EJB3.0规范是Java EE 5中的一个重要组成部分,它对之前的EJB版本进行了重大改进,极大地简化了开发流程,降低了EJB的使用门槛。 EJB3.0规范引入了许多关键特性,使得企业级开发变得更加高效和直观: 1. **注解驱动...
5. **会话Bean的简化**:会话Bean(Session Beans)在EJB3.0中也得到了简化,可以声明为无状态(@Stateless)或有状态(@Stateful)。无状态Bean适用于处理不需保持上下文的请求,而有状态Bean则可以记住客户端的...
EJB 3.0的会话Bean可以分为无状态会话Bean(@Stateless)和有状态会话Bean(@Stateful),前者不维护客户端会话状态,后者则能保存。 3. **消息驱动Bean(Message-Driven Bean)**:处理JMS(Java Message Service...
EJB3.0是EJB规范的一个重要版本,它引入了许多简化开发的特性,使得EJB更加易用。 EJB3.0的核心概念包括: 1. **Session Bean**: - **有状态Session Bean(Stateful Session Bean)**:每个客户端会话对应一个...
一个基于Struts+EJB3.0的应用通常具有三层架构:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer,由EJB3.0的会话Bean构成)和数据访问层(Data Access Layer,由实体Bean组成)。这种结构确保了...
1. **无状态会话Bean(Stateless Session Bean)**: - 无状态会话Bean是最简单的EJB类型,它不维护任何会话状态,每个请求都独立于其他请求。在EJB3.0中,只需通过`@Stateless`注解标记类即可创建无状态会话Bean。...
EJB 3.0是EJB规范的一个重大革新,它极大地简化了开发过程,并引入了许多现代编程实践,使其更接近Java Servlet和JPA(Java Persistence API)等轻量级技术。 **1. 容器管理的持久性(CMP)与实体Bean** EJB 3.0中...
EJB 3.0是EJB规范的一个重要版本,它引入了许多改进,使得企业级开发变得更加简洁和高效。下面将详细讨论EJB 3.0规范中的关键知识点。 一、EJB 3.0配置简化 在EJB 3.0之前,EJB的配置主要通过XML文件完成,这使得...
EJB 3.0引入了大量的注解,如`@Entity`、`@Table`、`@Column`用于定义实体Bean,`@Stateless`、`@Stateful`、`@Singleton`用于声明不同类型的会话Bean,`@MessageDriven`用于声明消息驱动Bean。这些注解使得开发者...