@EJB注释的总结

来源:互联网 发布:数控车床编程软件下载 编辑:程序博客网 时间:2024/05/29 03:20

SB InjectionBean

G:/dev/ws/SB/src/com/foshanshop/ejb3/Hello.java

G:/dev/ws/SB/src/com/foshanshop/ejb3/Injection.java

G:/dev/ws/SB/src/com/foshanshop/ejb3/impl/HelloBean.java

G:/dev/ws/SB/src/com/foshanshop/ejb3/impl/InjectionBean.java

 

InjectionBean.java

 

package com.foshanshop.ejb3.impl;

import com.foshanshop.ejb3.Injection;
import com.foshanshop.ejb3.Hello;
import javax.ejb.Stateless;
import javax.ejb.Remote;
import javax.ejb.EJB;

 

@Stateless
@Remote (Injection.class)
public class InjectionBean implements Injection{

 @EJB (beanName="HelloBean")Hello hello;
 public String SayHello()
 {
  return hello.SayHello("注入者");
 }
}

@EJB注释的name(), beanName(), mappedName()属性

1.不带任何属性使用

如:@EJB Hello hello;

当Hello接口在EJB-JAR文件内只被一个Bean class使用时,可以这样引用,那么

容器是如何解析这一引用的呢?以下JBOSS的解析引用

 

・对于@EJB Hello hello而言,唯一的标识符是Hello接口,JBOSS应用服务器首

先在注入的EJB-JAR中查找使用Hello作为其本地或远程接口的EJB.如果有多个

EJB使用Hello业务接口,则容器会抛出一个部署异常。

 

・如果EJB-JAR作为EAR的一个模块被部署,那么容器就会在其EAR中包含的

EJB-JAR中查找使用Hello作为本地或远程接口的EJB。同样,如果有多个EJB使用

Hello业务接口,则容器会抛出一个部署异常。

 

・如果容器没有在EAR中找到该EJB引用,则它会在其他的全局EJB-JAR中继续查找。

 

・如果指定了beanName()属性,JBOSS同样的查找过程,但是它所使用的唯一标

符识将是beanName()的值,如果指定了mappedName()属性,则JBOSS将不会

进行任何搜索,他根据mappedName()的值在全局JNDI中获取EJB引用。

 

待续中...

原创粉丝点击