EJB30学习笔记.docx

上传人:b****7 文档编号:15280174 上传时间:2023-07-03 格式:DOCX 页数:10 大小:21.19KB
下载 相关 举报
EJB30学习笔记.docx_第1页
第1页 / 共10页
EJB30学习笔记.docx_第2页
第2页 / 共10页
EJB30学习笔记.docx_第3页
第3页 / 共10页
EJB30学习笔记.docx_第4页
第4页 / 共10页
EJB30学习笔记.docx_第5页
第5页 / 共10页
EJB30学习笔记.docx_第6页
第6页 / 共10页
EJB30学习笔记.docx_第7页
第7页 / 共10页
EJB30学习笔记.docx_第8页
第8页 / 共10页
EJB30学习笔记.docx_第9页
第9页 / 共10页
EJB30学习笔记.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

EJB30学习笔记.docx

《EJB30学习笔记.docx》由会员分享,可在线阅读,更多相关《EJB30学习笔记.docx(10页珍藏版)》请在冰点文库上搜索。

EJB30学习笔记.docx

EJB30学习笔记

1,EJB中有三种bean:

1)会话bean(sessionbean):

负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过尸体bean来完成对数据库的操作;

2)实体bean(entitybean):

它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink等ORM框架各自为营的局面;

3)消息驱动(message-drivenbean):

它是专门用于异步处理java消息的组件,具有处理大量并发消息的能力;

2,会话bean分为无状态会话bean和有状态会话bean:

1)无状态会话bean:

平常,我们使用最多的是无状态bean,因为它的bean示例可供多个用户使用,所以它的性能比有状态bean高【正因为一个bean示例被多个用户使用,那么,前一个用户设置的值有可能被后一个用户所修改,所以它无法正确保存某个用户设置的值,因此是无状态的;

2)有状态会话bean:

有状态bean平常使用的并不多,因为它的一个bean实例只供一个用户使用,所以性能开销比较大,正因为它的实例只被一个用户使用,那么用户设置的值是不会被其他用户所修改的,所以可以正确保存用户设置的值,因此是有状态的;

3,开发EJB的工具:

EclipseIDEforJavaEE

开发EJB依赖的jar文件:

可以在jboss安装路径下的client目录下找到,通常会把client目录下的所有jar文件添加到项目的类路径下;

4,EJB的发布过程就是一个拷贝的过程:

将jar文件拷贝到:

jboss安装目录-server-default-deploy下面;就ok了;

第三讲:

开发EJB的客户端

1,因为EJB在软件分层结构上属于业务层,通常它需要被客户端所调用:

常用的客户端有j2se,web应用,j2me;

2,我们可以通过一个属性文件来设置JNDI的上下文信息;在项目的类路径下简历jndi的属性文件,jndi.properties;也可以在src目录下建立,也同样可以编译到类路径下面;

3,jndi文件的内容如下:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

java.naming.provider.url=localhost:

1099

...

4,当写完jndi.properties文件后,客户端下面代码:

InitialContextctx=newInitialContext();构造函数就会在类路径下找相应的属性配置文件;自动加载;

第四讲:

把jboss集成到eclipse中

1,window-showview-other-Server-servers然后再控制台上出现了servers视图,我们点击server,空白处右键new-server-...

第五讲:

通过ANT提高EJB应用的开发效率

1,为了提高开发效率,大部分企业在ejb开发中引入ant,来进行操作;

2,通过ant完成项目的编译,打包,发布,解发布;在eclipse中已经集成了ant工具;

3,在项目根目录底下新建ant的配置文件build.xml;

4,ant配置详解:

//----这句话表示定义一个属性变量;value为属性值

//---这句话的意思是引入系统的环境变量,即系统环境变量-系统变量;

//--这里env指向系统变量,去里面的jboss配置项JBOSS_HOME;

上面和在java中定义变量是一样的;

//----------包含所有的jboss的jar包

//---这项工作的目的是创建路径

//refid表示引用id;

//---卸载EJB就是直接将jar文件给删除就行了;

第六讲:

开发具有本地接口的无状态bean

1,之前,我们介绍过远程接口,在这里,我们需要了解一下通过远程接口调用ejb的过程,首先,客户端与ejb之间建立socket通信,在通信管道上它们之间需要来回发送IIOP协议消息,因为数据要在网络上进行传输,存放数据的java对象必须要进行序列化;

客户端<_socket通信IIOP____>EJB

在这个过程中我们看到,有网络通信协议的开销,协议解析的开销,对象序列化的开销,因为ejb是分布式技术,它允许客户端与ejb应用不在同一台机器上,所以这些性能开销是必然的,但是在实际生产中,我们不可避免这种客户端情况:

客户端和ejb在同一个jboss中;为了解决这个问题,ejb采用如下方案:

当客户端和ejb在同一个JVM内运行的时候,我们调用本地接口,否则只能调用远程接口。

谈到这里,有同学会问什么情况下客户端与EJB应用是在同一个JVM的呢?

我们可以这样简单的理解,只要客户端与ejb发布在同一个jboss内,我们就认为他们在同一个JVM内;

第七讲:

开发有状态bean

1,bean实例的两种管理技术:

1)无状态bean使用实例池技术管理bean;所有用户共用一个bean;如果用户在实例池中取得一个对象的时候,那么这个对象是不能被其他对象所用的,只有等该用户用完了,才可以用;实例池就是里面初始化的几个对象而已;用最小的对象数,来为用户提供服务;

2)有状态bean使用激活(activation)管理bean---当一个bean超过一段时间不用时,系统将这个bean序列化到磁盘上,当在真个会话时间内,用户再次访问该bean,则将该bean加载到内存中,如果超过会话时间,则清楚该序列化bean;其中序列化到磁盘上的过程叫做钝化,从磁盘加载到内存中的过程被称为激活;给每个用户创建一个新的bean;

第八讲:

通过注解方式注入并使用其他EJB或者服务

1,EJB之间的互相调用:

如果要在一个ejb中调用另一个ejb的话,有两种方法:

第一种采用jndi查找法,另一种方法就是依赖注入,即注解;

通过第一种方法例子:

@Stateless

@Remote(HelloWorld.class)

@Local(HelloWorld.class)

publicclassHelloWorldBeanimplementsHelloWorld,HelloWorldLocal{

publicStringsayHello(Stringname){

try{

InitialContextctx=newInitialContext();

Otherother=(Other)ctx.lookup("OtherBean/local");

returnname+"说:

你好,"+other.sayMe();

}catch(NamingExceptione){

e.printStackTrace();

}

returnnull;

}

}

通过第二种方法例子:

publicclassHelloWorldBeanimplementsHelloWorld,HelloWorldLocal{

@EJBOtherother;

publicStringsayHello(Stringname){

returnname+"说:

您好,"+other.sayMe();

}

}

//如果多个EJB实现了同一个接口,那么我们可以采用如下方式制定具体调用哪一个EJB;

@EJB(beanName="OtherBean")Otherother;//beanName为具体的接口实现类名称;

也可以注入数据源:

@Resource(mappedName="java:

xxx")DataSourcedataSource;//mappedName对应于数据源的jndi名称;

第九讲:

配置jboss数据源

1,数据源可以减少数据库连接对象的创建数量;

2,数据源配置文件必须以-ds包含在配置文件名中:

例如:

mysql-ds.xml;-ds时jboss才认为它是一个数据源;jboss的数据源配置模板在jboss安装目录下的sample-jca-找...

第十讲:

开发单表映射的实体bean

1,实体bean--它属于java持久化规范(简称JPA)里的技术,实体bean通过元数据在javabean和数据库表之间建立起映射关系,然后java程序员就可以随心所欲的使用面向对象的编程思想来操纵数据库。

JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,目前实现的JPA规范的主流产品有Hibernate,TopLink和OpenJPA,在jboss中采用了Hibernate作为其持久化实现产品;

2,添加JPA的配置文件persistence.xml--根据JPA规范的要求:

在实体bean应用中,我们需要在应用的类路径下的META-INF目录加入持久化配置文件persistence.xml

xmlversion="1.0"?

>

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

version="1.0">

3,实体bean必须要保留一个无参的构造函数,这是JPA规范所规定的;

publicPerson(){}

publicPerson(Stringname){

this.name=name;

}

4,数据传输过程中,是需要序列化的;

5,实体bean:

......

@Entity

@Table(name="person")

publicclassPersonimplementsSerializable{

privateIntegerid;

privateStringname;

@Id@Column(name="id")@GeneratedValue(strategy=GenerationType.AUTO)

publicIntegergetId(){

returnid;

}

publicvoidsetId(Integerid){

this.id=id;

}

@Column(name="name",length=20,nullable=false)

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

}

第十一讲:

开发消息驱动

1,java中如果一个对象需要通过网络传输,则必须实现序列化接口,否则是错误的;

2,java消息服务(JavaMessageService,简称JMS)是用于访问企业消息系统的开发商中立的API。

企业消息系统可以协助应用软件通过网络进行消息交互;JMS的编程过程很简单,概括为:

应用程序A发送一条消息到消息服务器的某个目的地(Destination),然后消息服务器把消息转发给应用程序B。

因为应用程序A和应用程序B没有直接的代码关联,所以两者实现了解耦;

3,消息传递系统的中心就是消息。

一条消息由三个部分组成:

头(header),属性(property)和主题(body)。

消息有下面几种类型,它们都是派生自Message接口。

StreamMessage:

一种主体中包含Java基元值流的消息。

其填充和读取均按顺序进行;

MapMessage:

一种主体中包含一组名-值对的消息,没有定义条目顺序;

TextMessage:

一种主体中包含Java字符串的消息(例如,XML消息);

ObjectMessage:

一种主体中包含序列化Java对象的消息;

BytesMessage:

一种主体中包含连续字节流的消息;

4,消息的传递模型:

JMS支持两种消息传递模型:

点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub).这两种消息传递模型非常相似,但有以下区别:

PTP消息传递模型规定了一条消息只能传递给一个接收方。

采用javax.jms.Queue表示;

pub/sub消息传递模型允许一条消息传递给多个接收方。

采用javax.jms.Topic表示,这两种模型都通过扩展公共基类来实现。

5,配置目标地址:

开始JMS编程前,我们需要先配置消息到达的目标地址(Destination),因为只有目标地址存在了,我们才能发送消息到这个地址。

由于每个应用服务器关于目标地址的配置方式都有所不同,下面以jboss为例,配置一个queue类型的目标地址。

xmlversion="1.0"encoding="UTF-8"?

>

service=Queue,name="foshanshop"">

queue/foshanshop

jboss.mq.service=DestionManager

jboss使用一个XML文件配置队列地址,文件的取名格式遵守"-service.xml"

属性指定了该目标地址的全局JNDI名称,如果你不指定JNDIName属性,jboss会为你生成一个默认的全局JNDI,其名称由queue+"/"+目标地址名称组成,另外在任何队列或主题被部署之前,应用服务器必须先部署DestinationManagerMbean,所以我们通过节点声明这一依赖;

第十二讲:

开发EJB容器模型的WEB服务

1,Web服务也是一种分布式技术,它与EJB最大的不同是,Web服务属于行业规范,可以跨平台及语言,而EJB属于Java平台的规范尽管理论上可以跨平台,但实现起来还是比较复杂的,所以其应用范围局限于java平台,看上去两者好像是互相竞争的关系,其实不是,它们两者的偏重点不一样,Web服务偏重的是这个系统对外能提供什么功能,这是web服务的关注点,对于怎样组装这个硬盘,怎样构造这些小零件,web服务并不关心但这些却是EJB所关注的。

JavaEE为Webservice提供了两种不同的编程模型;EJB容器模型及Web容器模型,这里将以最新的JAX-WS2.X规范(JavaAPIforXML-basedWebService)介绍webservice的开发;

@WebService(targetNamespace="",

name="HelloWorld",

serviceName="HelloWorldService")

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2