上面,你学到了如何开发藕合松散的服务组件.但是,为了存取那些服务对象,你需要通过服务器的JNDI来查找存根对象(session bean)或消息队列(MDB).JNDI查找是把客户端与实际的服务端实现解藕的关键步骤.但是,直接使用一个字符串来进行JNDI查找并不优雅.有这样几个原因:
・客户端与服务端必须有一致的基于字符串的名字.它没有在编译时得到认证或在布署时得到检查.
・从JNDI返回的服务对象的类型没有在编译时进行检查,有可能在运行时出现转换(casting)错误.
・冗长的查找代码,有着自己的try-catch代码块,在应用之间是重复的和杂乱的
EJB 3.0,对任何POJO,提供了一个简单的和优雅的方法来解藕服务对象和资源.使用@EJB注释,你可以将EJB存根对象注入到任何EJB 3.0容器管理的POJO中.如果注释用在一个属性变量上,容器将会在它被第一次访问之前赋值给它.在Jboss下一版本中@EJB注释从javax.annotation包移到了javax.ejb .
下面的例子演示了怎样把HelloWorldBean无状态session bean的存根注入到InjectionBean类中.
java 代码
- InjectionBean.java
- package com.foshanshop.ejb3.impl;
- import com.foshanshop.ejb3.HelloWorld;
- import com.foshanshop.ejb3.Injection;
- import javax.annotation.EJB;
- import javax.ejb.Remote;
- import javax.ejb.Stateless;
- @Stateless
- @Remote ({Injection.class})
- public class InjectionBean implements Injection {
- @EJB (beanName="HelloWorldBean")
- HelloWorld helloworld;
- public String SayHello() {
- return helloworld.SayHello("注入者");
- }
- }
@EJB注释的beanName属性指定EJB的类名(不带包名),他的另一个属性mappedName指定Bean实例的JNDI名.
下面的片断演示了如何使用beanName或mappedName属性查找HelloWorldBean 会话bean
java 代码
- public class InjectionBean implements Injection {
- @EJB (beanName="HelloWorldBean")
-
- HelloWorld helloworld;
- ..
@EJB注释如果被用在JavaBean风格的setter方法上时,容器会在属性第一次使用之前,自动地用正确的参数调
用bean的setter方法.下面的片断演示了这是如何做的
java 代码
- public class InjectionBean implements Injection {
- HelloWorld helloworld;
- @EJB (beanName="HelloWorldBean")
- public void setHelloworld(HelloWorld helloworld) {
- this.helloworld = helloworld;
- }
- ..
分享到:
相关推荐
**EJB3.0 学习笔记** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的分布式应用程序。EJB3.0是EJB的一个重大更新,引入了许多改进,使得开发过程更为简化,降低了...
4. **依赖注入**:EJB3.0支持依赖注入(Dependency Injection,DI),通过`@Inject`或`@EJB`注解,可以方便地实现服务的查找和注入,减少了手动管理对象间依赖的复杂性。 5. **会话Bean的简化**:EJB3.0提供了无...
4. **依赖注入(Dependency Injection)**:EJB 3.0引入了JSR 250规范,提供了依赖注入功能,允许容器自动管理Bean的生命周期和依赖关系。通过`@Inject`和`@EJB`注解,可以方便地注入其他Bean或资源,减少了代码的...
4. **依赖注入(Dependency Injection)**:EJB 3.0引入了依赖注入,通过`@EJB`注解,容器会自动将依赖的bean注入到需要它们的地方,无需手动查找和管理bean实例。 5. **简化会话bean(Session Beans)**:EJB 3.0...
- **依赖注入(Dependency Injection)**:通过注解如`@EJB`,容器自动将依赖关系注入bean,提高了代码的可读性和可维护性。 - **无接口bean**:允许开发人员创建不依赖于特定接口的bean,简化了设计。 - **轻量...
### EJB学习笔记第六部分详解 #### 一、EJB之间的调用 EJB (Enterprise JavaBeans) 是Java EE平台中用于开发分布式企业应用程序的重要组件。在实际开发过程中,经常需要一个EJB调用另一个EJB来实现更复杂的业务...
6. **资源注入**:通过依赖注入(Dependency Injection,DI)机制,EJB可以从容器中自动获取所需的资源,如数据源、JMS队列等。 7. **接口规范**:EJB组件通过定义特定的接口来暴露其服务,这些接口定义了客户端...
5. **依赖注入(Dependency Injection, DI)**: EJB3支持JSR 330规范的依赖注入,通过`@Inject`或`@EJB`注解,可以在Bean之间实现组件间的依赖管理,无需手动创建对象。 6. **事务管理**: EJB容器自动管理事务...
这份名为“软件工程师学习笔记大全(C++,JAVA)4.rar”的压缩文件包含了软件工程师在学习C++和Java编程语言时的重要参考资料。这些文档详细涵盖了从基础到高级的各种主题,对于提升技能和准备面试非常有帮助。以下...
- **CDI(Contexts and Dependency Injection)**:提供依赖注入和上下文管理,是Java EE 6及更高版本中的重要组成部分。 - **RESTful Web Services**:基于HTTP协议,提供了一种轻量级的交互模式,用于构建Web服务...
- CDI提供依赖注入和上下文管理,帮助开发者解耦代码,使组件更加可测试和可重用。 9. **WS(Web Services)** - JavaEE支持创建和消费Web服务,如JAX-WS(SOAP服务)和JAX-RS(RESTful服务)。 10. **JPA与...
- **CDI(Contexts and Dependency Injection)**:依赖注入框架,简化对象的创建和管理。 **6. 学习路径** - **基础篇**:掌握Java基础、Servlet、JSP和JDBC。 - **进阶篇**:学习EJB、JMS、JTA、JNDI等高级技术...
- **CDI (Contexts and Dependency Injection)**:提供了依赖注入和服务上下文管理功能。 - **RESTful Web Services**:基于HTTP协议的Web服务规范。 #### 三、JavaEE 开发模式 - **MVC (Model-View-Controller)**...
7. **CDI (Contexts and Dependency Injection)**:CDI是JavaEE中的依赖注入框架,简化了组件的管理和依赖关系的注入,提高代码的可测试性和可维护性。 8. **WebSocket**:JavaEE7引入了WebSocket协议,允许双向...
《软件工程师学习笔记J2EE》是一份针对Java企业级应用开发(J2EE)的详尽学习资源,对于想要深入理解和掌握J2EE技术体系的软件工程师来说,具有极高的参考价值。这份笔记不仅全面覆盖了J2EE的基础概念,还深入探讨了...
在IT行业中,Spring是一个广泛使用的Java企业级应用开发框架,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)为核心特性,极大地简化了Java应用程序的构建和维护。...
9. **CDI(Contexts and Dependency Injection)**:提供依赖注入和上下文管理,使得组件间的依赖关系更加灵活和解耦。 10. **WS(Web Services)**:J2EE支持SOAP和RESTful两种类型的Web服务,允许不同系统之间的...
6. **EJB 3.0+的改进**:介绍从EJB 2.x到EJB 3.x的转变,如何通过注解简化bean的配置,以及CDI(Contexts and Dependency Injection)的引入。 7. **部署与测试**:包括EJB的部署描述符,以及如何进行单元测试和...
首先,Spring框架的核心特性之一是依赖注入(Dependency Injection,DI),它使得组件之间的耦合度大大降低,增强了代码的可测试性和可维护性。在笔记中,我们可能会看到如何通过@Autowired注解实现自动装配,以及...
它通过提供一系列的模块化组件,支持包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)、事务管理、数据访问、Web开发等多个关键领域。Spring框架的核心价值在于其灵活...