`
leon.s.kennedy
  • 浏览: 110521 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • ejb3
 
阅读更多

如何在一个EJB中去调用另一个EJB?

要得到EJB对象有两种方式:
1.通过JNDI查找
2.通过依赖注入


通过JNDI得到本地接口的代理,通过代理,调用ejb方法:

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

 

新建Other接口:

------------------------------------------

package com.jboss.ejb3;

public interface Other {
 public String sayMe();
}

 

新建Other接口的实现bean(OtherBean):

------------------------------------------

package com.jboss.ejb3.impl;

import javax.ejb.Stateless;

import com.jboss.ejb3.Other;

@Stateless //无状态bean
//如果不指定接口,默认本地接口
public class OtherBean implements Other {

 @Override
 public String sayMe() {
  return "Other";
 }

}

在另一个EJB中想调用刚才EJB的方法时:
如果用private Other other = new OtherBean();

则只是声明了一个普通的java类,而不是EJB类

通过注解方式注入并使用其他EJB或者服务
运行ANT部署后,调用客户端

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

运行结果: 注入者说:你好,Other
--------------------------------------------------

 

通过EJB注解依赖注入:

通过注解方式注入并使用其他EJB或者服务
之后,通过ANT部署,再用客户端调用,也可以输出 注入者说:你好,Other

 

比较:

通过EJB注解注入Other EJB类 比 通过JNDI查找得到Other EJB类

   代码量更少,在使用时比JNDI更优雅


注入原理

当容器解析到 Other other这段代码,前面带有@EJB注解时
就会去查找 实现了Other类型的EJB实现类
当寻找到了实现类,且只寻找到了一个时,它就会把这个EJB类给注入进来


如果寻找到了多个实现类,就会报异常,因为它不知道要用哪个实现类

 

当出现这种情况时,需要指定要注入的是哪个EJB:

 

在@EJB(beanName="") Other other; //beanName属性明确指定要EJB类的名称
通常EJB类名称是简单类名称(不带包名)
可以通过
@Stateless(name="xxx") //无状态bean它的EJB类名称是: xxx
@Stateful(name="xxx") //修改有状态bean的EJB类名称
为EJB类指定名称(通常不这么做)

 

那么此时已经知道OtherBean实现了Other接口,
指定@EJB(beanName="OtherBean") Other other;

@EJB注解只能注入EJB 其他资源类型不能使用@EJB注解注入
好比使用EJB里面的定时服务使用@Resource注解
@Resource TimerService timerService;
定时服务属于EJB3中已知定义好的服务,直接注入进来即可

注入数据源:
@Resource(mappedName="jndiName...") DataSource dataSource;
mappedName属性用来指定数据源的JNDI名称
通常在JBOSS中,JNDI名称都是java:xxx开头

0
0
分享到:
评论

相关推荐

    ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务

    在本篇讲解中,我们将深入探讨Java企业版(Java EE)中的Enterprise JavaBeans(EJB)3技术,特别是如何通过注解方式来注入并使用其他的EJB或服务。EJB 3是Java EE中用于构建可扩展、分布式、事务处理和安全的企业级...

    pafa中使用ejb

    理解EJB的生命周期、注入机制(例如,依赖注入通过@EJB注解)以及事务管理(EJB支持声明式事务管理)也是开发者需要掌握的关键概念。 文件名“pafa中使用ejb.doc”可能包含更详细的步骤、示例代码或案例研究,以...

    EJB 注释精解(pdf版)

    `@EJB`注释用于在Java类中注入EJB组件。这是一个非常常用的注释,它可以帮助开发者在不使用XML配置的情况下进行EJB的依赖注入。 **常用属性:** - `beanName`: 指定EJB的类名(不带包名)。例如: ```java @EJB...

    EJB依赖注入的原理

    开发者可以通过注解(如@EJB、@PersistenceUnit、@PersistenceContext、@Resource等)在bean类中声明依赖,或者在部署描述符文件中配置。 例如,以下代码展示了如何在EJB3.0中使用依赖注入: ```java @Stateless ...

    Ejb3中的注释常用属性

    其中,@EJB注释是用于依赖注入(Dependency Injection)的关键元素,使得开发者能够直接在类中声明并注入EJB组件,而无需手动查找和管理它们。下面我们将详细探讨@EJB注释的常用属性及其用法。 1. **@EJB注释的属性...

    实战角度比较EJB2和EJB3的架构异同

    综上所述,EJB3相对于EJB2的主要改进在于简化了编程模型,通过注解减少了冗余代码,并引入了依赖注入以提高代码的可读性和可维护性。然而,理解EJB3中的JNDI机制仍然是开发过程中不可或缺的一部分,尤其是当需要处理...

    Idea搭建EJB架构Demo项目源代码

    4. **编写bean类**:创建EJB组件,定义接口和实现类,并使用注解如`@Remote`、`@Local`、`@Stateless`、`@Stateful`或`@MessageDriven`。 5. **部署和测试**:将项目打包为`.ear`文件,部署到服务器,然后进行单元...

    EJB使用范例

    这可以通过JNDI(Java Naming and Directory Interface)查找完成,或者在Java EE容器中,可以通过注解`@EJB`注入bean。 6. **事务管理**:EJB支持自动的事务管理。默认情况下,无状态会话bean的方法在一个事务中...

    ejb 学习笔记6

    使用`@EJB`注解可以在类级别或方法级别注入另一个EJB的引用。这种方式更为便捷,当JNDI名字发生变化时,只需修改部署描述文件(`ejb-jar.xml`)即可,无需更改代码。 示例代码如下: ```java @EJB private ...

    spring集成ejb

    4. **EJB的调用**:Spring可以通过JNDI查找机制来调用EJB,也可以使用`@EJB`注解在Spring的bean中直接注入EJB引用。JNDI(Java Naming and Directory Interface)是Java中用于查找和管理网络资源的接口,EJB的实例...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    总结来说,使用Eclipse和JBoss开发EJB 3.x应用是一种高效且灵活的方式,它结合了IDE的强大功能和EJB的高级服务。通过注解驱动的编程模型和强大的依赖注入机制,开发者可以专注于业务逻辑,而不是繁琐的基础设施代码...

    ejb\ejb3.0实例教程

    - **EJB和JPA的注解**:理解并熟练使用相关的注解,如@Entity、@Table、@Id、@Service、@Transactional等。 - **开发和测试**:编写EJB组件,使用JUnit或其他测试框架进行单元测试和集成测试。 本教程将通过一系列...

    EJB3 PPT教程

    通过`@PersistenceContext`注解,可以在bean中注入EntityManager,然后使用它的方法进行数据操作。了解如何正确使用`find()`、`persist()`、`merge()`和`remove()`方法是学习EJB3的重点。 **六、EJB3-QL(Java ...

    EJB3.0容器模型的WEB服务-WebService

    这通常通过JNDI查找实现,Web服务客户端查找并调用EJB服务。 - **服务端点接口(SEI)**:定义Web服务接口,可以是EJB的业务接口,这样客户端可以通过Web服务调用EJB的业务逻辑。 4. **源码分析** - **实体bean的...

    使用eclipse通过weblogic开发简单的ejb应用(weblogic 10.x & ejb3.x)

    EJB 3.0引入了注解,使得组件的声明变得更加简洁,例如使用`@Stateless`、`@Stateful`、`@Entity`和`@MessageDriven`等注解。 对于本例中的"ilucky-ejb-3.0-weblogic-client",这可能是一个包含了EJB接口和实现的...

    EJB3.0完整代码例子

    在实际操作中,你可以看到如何使用注解来定义Bean,如何配置数据源,以及如何通过EJB调用其他服务。这些经验对于进一步深入学习Java EE(Java Platform, Enterprise Edition)的其他组件,如Servlet、JSP、JSF等,都...

    EJB3.0规范-EJB3.0 SPECIFICATION

    7. **依赖注入(Dependency Injection, DI)**:EJB3.0引入了JSR-299(后来成为CDI,Contexts and Dependency Injection)的早期形式,允许通过`@Inject`注解实现依赖的自动装配。 8. **查询语言(JPQL)**:Java ...

    EJB系统开发实战

    - **依赖注入**:通过Java EE的依赖注入机制,Bean可以获取其他服务或组件的引用。 4. **EJB与Web层交互** - **Servlet与JSP**:EJB通常与Servlet结合,处理HTTP请求,并通过JSP进行视图展示。 - **JSF(Java...

    EJB3.0和Spring比较

    - EJB3.0通过注解提供了一种声明式的方式,使得服务的装配更加简单和灵活。例如,@PersistenceContext注解可以轻松地将EntityManager注入到Bean中,无需显式管理依赖。 - Spring虽然也支持依赖注入,但它通常需要...

Global site tag (gtag.js) - Google Analytics