EJB3.0基本概念

 

一.会话BeanSession Bean 用于实现业务逻辑,它分为有状态bean 和无状态bean。每当客户端请求时,容器就会选择一个Session Bean 来为客户端服务。Session Bean 可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

1.无状态会话Bean 主要用来实现单次使用的服务,该服务能被启用许多次,但是由于无状态会话Bean 并不保留任何有关状态的信息,其效果是每次调用提供单独的使用。在很多情况下,无状态会话Bean 提供可重用的单次使用服务。其原理:当一个无状态会话Bean 发布到EJB 容器时,容器就会为她创建一个对象stub并把她注册进容器的JNDI 目录,客户端代码使用她的JNDI名从容器获得他的stub。通过这个stub,客户端可以调用她的业务方法

2.有状态会话Bean 是一个可以维持自身状态的会话Bean。每个用户都有自己的一个实例,在用户的生存期内,StatefulSession Bean 保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),Stateful Session Bean 的生命期也告结束。即每个用户最初都会得到一个初始的Stateful Session Bean

3.本地接口与远程接口的区别:

@Local @Remote 注释都不存在时,会话Bean 实现的接口默认为Local 接口。如果在本机调用EJB确保客户端与EJB 容器运行在同一个JVM,否则会出错误),这时Local 接口访问EJB 优于Remote 接口,因为Remote接口访问EJB需要经过远程方法调用(RPCs)环节,而Local 接口访问EJB 直接从JVM 中返回EJB 的引用。应用情况:当会话Bean 的某些方法只EJB容器内部调用而不对外暴露时,可以把他定义在Local 接口. Remote Local 接口可以指向同一个业务接口,这样客户端就不会因调用接口的不同而来回切换业务接口类。当然这种使用场合是在Remote Local 的接口方法相同的情况下。

二.消息驱动Bean(MDB):是设计用来专门处理基于消息请求的组件。它能够收发异步JMS 消息,并能够轻易地与其他EJB 交互。它特别适合用于当一个业务执行的时间很长,而执行结果无需实时向用户反馈的这样一个场合。

 

 

三.问题解决:

1. Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/jboss/invocation/Invoker;

      at java.lang.Class.getDeclaredFields0(Native Method)

解决:加入jbossall-client.jar

2. javax.naming.NamingException: Could not dereference object [Root exception is java.lang.reflect.UndeclaredThrowableException]

    at ………….

Caused by: java.lang.ClassNotFoundException: [Lorg.jboss.aop.advice.Interceptor;

 

解决:将jdk1.6改为jdk1.5,jdk1.6存在问题

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值