一、EJB中的bean
1.1 EJB中bean分类
会话bean(session bean)
负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作。
实体bean(entity bean)
它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。
消息驱动bean(message-driven bean)
它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力。
1.2会话bean
无状态会话bean
平常,我们使用最多的是无状态bean,因为它的bean实例可供多个用户使用,所以它的性能比有状态bean高。正因为一个bean实例被多个用户使用,那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的。
有状态会话bean
有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用,用户为它设置的值是不会被其他用户修改,所以可以正确保存用户设置的值,因此是有状态的。
二、开发无状态会话bean
2.1 开发工具
IDE工具:Eclipse Java EE IDE for Web Developers Version: Indigo Service Release 2
JBoss服务器:jboss-4.2.3.GA
JDK:JDK-1.6
打包工具:Ant
EJB依赖jar包:jboss安装路径的client目录下所有Jar文件以及javaee.jar
2.2 开发无状态会话bean
在开发前,先熟悉一下无状态会话bean的调用流程图,如下图所示。
01. 浏览器请求Test.jsp文件。
02. 应用服务器的JSP引掣编译Test.jsp。
03. Tast.jsp通过JNDI查找获得HelIoWorld EJB的存根对象,然后调用SayHello{)方法,EJB容器截获到方法调用。
04. EJB容器调用HeIIoWorld实例的SayHello()方法 。
05. 返回客户端浏览器。
2.3 开发步骤
无状态会话bean的开发步骤如下:
(1) 定义一个包含业务方法的接口
这个接口不需要包含任何注释,它是一个普通的Java接口。调用EJB的客户端,使用这个接口引用从EJB容器返回的存根( stub)。代码如下:
package ejb3Hello;
public interface HelloWorld {
public String SayHello(String name);
}
(2) 编写Bean class
HeIIoWorldBean.java。Bean类推荐的命名方式是"接口+Bean",如HeIIoWorldBean。代码如下:
package ejb3Hello.impl;
import ejb3Hello.HelloWorld;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless
@Remote({HelloWorld.class})
public class HelloWorldBean implements HelloWorld{
@Override
public String SayHello(String name) {
return name+"say:hello,this is my first EJB3.0.";
}
}
在Bean类上面有两个注释@Stateless和@Remote,@Stateless注释指明这是一个无状态会话Bean。@Stateless注释的定义如下:
Package javax.ejb;
@Target(TYPE) @Retention(RUNTIME)
public @interface Stateless {
String name() default "";
String mappedName() default "";
}
name()属性用于指定Session Bean的EJB名称。该名称在EJB Jar包中必须是全局唯一的,而在EAR中却可以重复,因为EAR可以包含多个EJB JAR,而每个JAR可以存在一个同名的EJB。在EAR中要定位某个EJB,可以这样使用:xxx.jar#HeIloWorldBean。如果不指定该属性,默认就是Bean class的非限定名称。对本例而言,EJB名称默认为HeIIoWorldBean。
mappedName()属性指定Bean的全局JNDI名称,这个属性在WebLogic、Sun应用服务器和glassfish起作用。
@Remote注释指定这个无状态Bean的remote接口。Bean类可以具有多个remote接口,每个接口之间用逗号分隔,如:@Remote({HeIIoWorld.class,Hello.class,World.class})。
如果只有一个接口,则可以省略大括号,对于本例而言,可以写成这样:@Remote(HeIloWorld.class)。
经过上面两步,一个HeIloWorld EJB就开发完了。现在将它发布到JBoss中。在发布前需要把它打成JAR色。打包JAR的方法有很多,如使用jar命令、集成开发工具或者Ant。下面介绍两种常用的打包方式:Eclipse打包向导和Ant打包。
三、EJB任务打包
3.1 Jar命令打包
jar命令打包比较简单,进入要被打包的文件根目录中,比如被打包程序的目录结构如下:
|---D:\webapp
|---Test.jsp
|--- WEB-INF
|---web.xml
可以进入到D:\webapp目录下,执行如下命令:
jar cvf EJBTest.jar war *
此命令将把Web应用的根目录下的所有文件打包成EJBTest.war文件,参数一:表示打包方式,参数二:表示打包后的文件名,参数三:表示文件类型。打包后的文件内容如下:
3.2 Eclipse打包
步骤一:选择打包程序右键或单击Flile菜单,如下图所示。
步骤二:选择Export选项,如下图所示,同时选择打包的类型:jar文件,填写文件路径及文件名。
http://www.nanpinjie.com/activity/detail/105133
http://www.nanpinjie.com/activity/detail/105111
http://www.nanpinjie.com/activity/detail/105089
http://www.nanpinjie.com/activity/detail/105069
http://www.nanpinjie.com/activity/detail/105047
http://www.nanpinjie.com/activity/detail/105029
http://www.nanpinjie.com/activity/detail/105009
http://www.nanpinjie.com/activity/detail/104988
http://www.nanpinjie.com/activity/detail/104969
http://www.nanpinjie.com/activity/detail/104950
http://www.nanpinjie.com/activity/detail/104931
http://www.nanpinjie.com/activity/detail/104901
http://www.nanpinjie.com/activity/detail/104883
http://www.nanpinjie.com/activity/detail/104858
http://www.nanpinjie.com/activity/detail/104835
http://www.nanpinjie.com/activity/detail/104800
http://www.nanpinjie.com/activity/detail/104783
http://www.nanpinjie.com/activity/detail/104763
http://www.nanpinjie.com/activity/detail/104742
http://www.nanpinjie.com/activity/detail/104727
http://www.nanpinjie.com/activity/detail/104723
http://www.nanpinjie.com/activity/detail/104700
http://www.nanpinjie.com/activity/detail/104686
http://www.nanpinjie.com/activity/detail/104661
http://www.nanpinjie.com/activity/detail/104639
http://www.nanpinjie.com/activity/detail/104621
http://www.nanpinjie.com/activity/detail/104606
http://www.nanpinjie.com/activity/detail/104585
http://www.nanpinjie.com/activity/detail/104566
http://www.nanpinjie.com/activity/detail/104549
http://www.nanpinjie.com/activity/detail/104491
http://www.nanpinjie.com/activity/detail/104472
http://www.nanpinjie.com/activity/detail/104453
http://www.nanpinjie.com/activity/detail/104428
http://www.nanpinjie.com/activity/detail/104409
http://www.nanpinjie.com/activity/detail/104391
http://www.nanpinjie.com/activity/detail/104323
http://www.nanpinjie.com/activity/detail/104317
http://www.nanpinjie.com/activity/detail/104283
http://www.nanpinjie.com/activity/detail/104264
http://www.nanpinjie.com/activity/detail/104245
http://www.nanpinjie.com/activity/detail/104222
http://www.nanpinjie.com/activity/detail/104201
http://www.nanpinjie.com/activity/detail/104182
http://www.nanpinjie.com/activity/detail/104160
http://www.nanpinjie.com/activity/detail/104140
http://www.nanpinjie.com/activity/detail/104121
http://www.nanpinjie.com/activity/detail/104099
http://www.nanpinjie.com/activity/detail/104079
http://www.nanpinjie.com/activity/detail/104051
http://www.nanpinjie.com/activity/detail/104030
http://www.nanpinjie.com/activity/detail/104011
http://www.nanpinjie.com/activity/detail/103989
http://www.nanpinjie.com/activity/detail/103972
http://www.nanpinjie.com/activity/detail/103949
http://www.nanpinjie.com/activity/detail/103928
http://www.nanpinjie.com/activity/detail/103910
http://www.nanpinjie.com/activity/detail/103884
http://www.nanpinjie.com/activity/detail/103870
http://www.nanpinjie.com/activity/detail/103849
http://www.nanpinjie.com/activity/detail/103827
http://www.nanpinjie.com/activity/detail/103811
http://www.nanpinjie.com/activity/detail/103790
http://www.nanpinjie.com/activity/detail/103766
http://www.nanpinjie.com/activity/detail/103748
http://www.nanpinjie.com/activity/detail/103727
http://www.nanpinjie.com/activity/detail/103707
http://www.nanpinjie.com/activity/detail/103687
http://www.nanpinjie.com/activity/detail/103666
http://www.nanpinjie.com/activity/detail/103647
http://www.nanpinjie.com/activity/detail/103628
http://www.nanpinjie.com/activity/detail/103607
http://www.nanpinjie.com/activity/detail/103532
http://www.nanpinjie.com/activity/detail/103510
http://www.nanpinjie.com/activity/detail/103487
http://www.nanpinjie.com/activity/detail/103469
http://www.nanpinjie.com/activity/detail/103382
http://www.nanpinjie.com/activity/detail/103355
http://www.nanpinjie.com/activity/detail/103317
http://www.nanpinjie.com/activity/detail/103301
http://www.nanpinjie.com/activity/detail/103280
http://www.nanpinjie.com/activity/detail/103253
http://www.nanpinjie.com/activity/detail/103228
http://www.nanpinjie.com/activity/detail/103205
http://www.nanpinjie.com/activity/detail/103142
http://www.nanpinjie.com/activity/detail/103121
http://www.nanpinjie.com/activity/detail/103074
http://www.nanpinjie.com/activity/detail/103049
http://www.nanpinjie.com/activity/detail/103019
http://www.nanpinjie.com/activity/detail/102999
http://www.nanpinjie.com/activity/detail/102974
http://www.nanpinjie.com/activity/detail/102950
http://www.nanpinjie.com/activity/detail/102931
http://www.nanpinjie.com/activity/detail/102914
http://www.nanpinjie.com/activity/detail/102889
http://www.nanpinjie.com/activity/detail/102864
http://www.nanpinjie.com/activity/detail/102335
http://www.nanpinjie.com/activity/detail/102312
http://www.nanpinjie.com/activity/detail/102254
http://www.nanpinjie.com/activity/detail/102232
http://www.nanpinjie.com/activity/detail/102205
http://www.nanpinjie.com/activity/detail/102076
http://www.nanpinjie.com/activity/detail/101972