EJB知识点

最近没事干看了一些关于EJB的资料,现将自己的理解记录于此,以便查阅理解:
   一:整体印象:EJB主要是处理业务逻辑的,他的业务逻辑就通过一个一个的bean发布到EJB的容器里,比如Jboss,由于一个一个的bean需要发布到Jboss容器,所以我们一般用ant来管理项目,应为我们的业务bean可以放在同一台或者远程的机器上,所以可以实现分布式的功能,而我们的客户端在调用我们的业务bean的时候都是通过JNDI查找的方式在EJB容器中找到相应的业务bean。而我们的jndi的连接信息一般是通过配置文件的形式(jndi.xml),这样灵活,容易修改。
   二:bean机制,提到EJB首先会想到他的三种bean机制,应为EJB的应用无不时时刻刻建立在bean的基础上的。这里主要讲的是面向EJB的编程。
1:会话bean,一般就是我们处理业务逻辑的,他包括有状态和无状态两种,有状态可以用在购物车的设计上。业务bean不是单一的和客户端通信,如果EJB和EJB通信的时候我们如何通信,这里我们可以用注解和jndi两种方式进行通信。
2:实体bean,主要是实现持久层的操作,EJB主要结成了Spring等O-R mapping框架,但是这里的实体bean和对象关系映射中的实体bean不是一个概念,这里的实体bean其实实现了业务逻辑的(我是这样认为的,应为他会被调用),在这里我们一般没有写入映射文件,而是在实体类(真正的持久对象)上通过注解的方式实现对象关系的映射。
3:消息驱动bean
a)JMS 消息驱动bean主要是实现JMS消息机制的,消息驱动有分为点对点和广播式的通信,点对点的通信时通过消息队列的方式,实现发送和接受的不同时性和一对一,广播式则是发送和接受同时性,及你发送我接收,你发送完了我就接受不到了,而且是一对多的。在开发此类bean的时候一般先配置目标地址,然后开发消息的发送方(通过jndi对目标地址发送消息),最后开发消息的接收方,接收方也是监听目标地址,并对发送的消息包装成了Message类,我们只要对Message类做处理就好了,我们的消息发送方和接收方可以再不同的机器,而我们面向目标地址的可以说只是jboss服务器。这里可以用到订单生成并发邮件的模型。
二:jndi通信的分类:分为远程和本地,远程(remote)的通信一般涉及到socket通信,TCP协议和对象流的开销,而本地(local)通信主要是在内存中进行,所以我们在设计的时候一般兼顾两种情况,我们的本地通信可以遮掩理解就是在同一个jvm中的通信,在通俗点就是曾对部署在同一台服务器下的项目相互间可以说是本地通信。
三:面向web编程,主要有webservice的编程,业务方法通过注解设置为webservice服务类和服务方法,并发布,然后客服端通过从一个配置文件生成相应的客服端类(必需加入jboss中的包),我们自己写方法(需要引入Jax-ws相应的包)调生成的服务类和服务方法就可以了。由于我们的服务类是通过jboss服务器提供的连接返回的一个通用的类似xml的记录了相应的业务类的,所以我们客户端可以采用不同的语言来调用并处理,所以实现了不同的机器,不同的语言之间的通信,所以真正的实现了分布式和跨平台。

猜你喜欢

转载自wujianjun12315.iteye.com/blog/1075166