情景:有两个bean,一个是HelloWorldBean,一个是OtherBean,我们需要在HelloWorldBean的业务方法中调用OtherBean的业务方法,如何实现呢?
other接口
package cn.com.xinli.ejb3;
public interface Other
{
public String sayMe(String name);
}
接口实现
package cn.com.xinli.ejb3.impl;
import javax.ejb.Stateless;
import cn.com.xinli.ejb3.Other;
/*不写接口的类型则默认是本地接口*/
@Stateless
public class OtherBean implements Other
{
public String sayMe(String name)
{
return name+"也是一个bean";
}
}
在一个bean中引用其他bean 的服务,有两种实现方式:
一.使用jndi查找
二.使用注解
注意:
1.Ejb注解只能注入ejb,数据源呀,定时器呀需要Resources注解
2.如果有两个以上的ejb实现了一个接口,需要显示的写name 属性
package cn.com.xinli.ejb3.impl;
import javax.activation.DataSource;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.ejb.TimerService;
import cn.com.xinli.ejb3.HelloWorld;
import cn.com.xinli.ejb3.HelloWorldLocal;
import cn.com.xinli.ejb3.Other;
/*表明这个ejb是有状态的会话bean*/
@Stateful
/*声明这个ejb的远程接口是HelloWorld,必须要写这个注解,否则调用的时候会报错*/
/*声明这个ejb的本地接口是HelloWorldLocal,必须要写这个注解,否则调用的时候会报错*/
@Local(HelloWorldLocal.class)
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld,HelloWorldLocal
{
/*如果other接口被两个以上的ejb实现了,那么我们就必须使用@EJB的 name
* 属性,不然ejb容器不知道我们到底需要注入哪个ejb,则会抛一个例外
* 注入bean的名称为bean的简单名称,也就是不包含包名的简单类名
* */
@EJB(name="OtherBean") Other other;
//@EJB Other other;
/*注入定时器*/
//@Resource TimerService timerService;
/*注入数据源*/
//@Resource (mappedName="java:xxx") DataSource dataSource;
public String sayHello(String name)
{
//方式一
/*
try
{
InitialContext ctx=new InitialContext();
Other other=(Other)ctx.lookup("OtherBean/local");
return name+",你好,世界!我的ejb3的第一个例子!"+other.sayMe("ryp");
} catch (NamingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
//方式二
return name+",你好,世界!我的ejb3的第一个例子!"+other.sayMe("ryp");
}
}
编译->打包->部署->运行->ok
分享到:
相关推荐
5. **依赖注入(Dependency Injection, DI)**:EJB3引入了JSR-250规范,通过@EJB、@Inject和@Resource等注解,实现了组件间的依赖关系管理,无需手动管理对象实例。 6. **事务管理**:EJB3提供了声明式事务管理,...
4. **依赖注入**:使用`@EJB`注解可以实现依赖注入,无需手动查找或创建bean实例。 **Struts** 是一个开源的MVC(Model-View-Controller)框架,用于构建基于Java Servlet的Web应用程序。它的主要功能包括: 1. **...
在这个“第一个EJB简单例子”中,我们将深入探讨如何创建和理解基本的EJB组件。 1. **EJB组件类型**: - **会话Bean(Session Beans)**:代表客户端的一次交互或会话。它们可以是状态ful(维护会话状态)或状态...
@EJB注解用于注入其他Bean,而@PersistenceContext和@PersistenceUnit则用于注入JPA实体管理和持久化单元。 3. **Java Persistence API(JPA)集成** EJB 3.0与JPA的整合使得对象/关系映射(ORM)变得更加直观。...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。EJB3是其第三个主要版本...通过阅读EJB3.doc文档,你可以深入了解EJB3的每个方面,并逐步成长为一名熟练的Java EE开发者。
EJB3是其第三个主要版本,引入了大量的改进,极大地简化了开发过程,降低了对XML配置的依赖,并引入了注解驱动的开发模式。 在EJB3中,有三种主要类型的Bean:Session Beans、Message Driven Beans(MDB)和Entity ...
EJB3引入了依赖注入的概念,通过`@EJB`、`@Inject`和`@Resource`注解,可以方便地注入其他Bean、资源或服务,实现了松耦合的设计,提高了代码的可测试性和可维护性。 5. **事务管理** EJB3提供了强大的事务管理...
总的来说,EJB 3通过注解、依赖注入、简化ORM和事务管理等方式,极大地提升了开发效率和代码的可读性,减少了错误的可能性,使得EJB更适合现代企业应用的开发需求。如果你正在探索或使用EJB 3,这些摘记和文档将是你...
EJB 3.0通过CDI(Contexts and Dependency Injection)提供依赖注入功能,允许bean自动获得它们需要的其他bean和服务,而无需手动创建和管理依赖关系。`@Inject` 注解用于声明依赖。 ### 6. 事务管理 EJB容器自动...
8. **JNDI查找**:虽然EJB 3.0鼓励使用依赖注入,但仍然支持传统的JNDI(Java Naming and Directory Interface)查找,以便于与其他系统集成。 9. **测试**:EJB 3.0引入了单元测试支持,使得开发者可以更容易地对...
**精通EJB第三版源码解析** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的核心组件之一,用于构建可复用、模块化的分布式企业级应用程序。EJB 3.0是EJB规范的一个重要里程碑,它极大地简化了开发过程...
通过这个“EJB3.0入门图文教程”,初学者可以系统学习EJB3.0的核心概念和用法,包括如何创建和使用Bean,如何进行持久化操作,以及如何利用依赖注入和事务管理来构建健壮的Java EE应用程序。教程可能包含详细的步骤...
2. **创建第一个EJB**:通过一个简单的例子,展示如何使用注解创建一个无状态Session Bean,并进行调用。 3. **实体Bean与JPA**:讲解如何定义实体类,配置JPA,以及如何进行CRUD(创建、读取、更新、删除)操作。 ...
EJB 3.x引入了更简洁的API,减少了XML配置,并支持注解驱动的开发,使得EJB更容易学习和使用。 本书可能涉及的知识点包括: 1. **EJB组件模型**:讲解实体Bean(Entity Bean)、会话Bean(Session Bean)和消息...
别忘了添加必要的注解,如`@EJB`,用于注入其他Bean或资源。 ### 8. 测试和部署 - 使用开发工具提供的测试工具进行单元测试,确保Bean的业务逻辑正确。 - 将EJB项目打包成`ejb-jar`文件,然后将其与你的应用服务器...
1. **实体Bean(Entity Beans)**:在EJB3.0中,实体Bean不再需要接口,它们可以基于Java POJOs(Plain Old Java Objects),并使用注解来定义其行为。`@Entity`注解标记一个类为实体,而`@Id`注解用于指定主键字段...
会话Bean在EJB3.0中也得到了简化,通过`@Stateless`和`@Stateful`注解,可以轻松创建无状态和有状态的会话Bean,用于提供服务或者存储用户会话数据。 **7. 集成JAX-RS(Java API for RESTful Web Services)** EJB...
4. **依赖注入(Dependency Injection)**:EJB 3.0引入了JSR-250规范,允许通过注解如@EJB、@Inject等实现组件之间的依赖关系自动装配。 5. **持久性API(JPA,Java Persistence API)**:提供了统一的ORM(Object...
2. **实体Bean的简化**:之前的EJB实体Bean需要实现复杂的接口,但在EJB 3.0中,实体Bean可以通过继承`javax.persistence.Entity`并使用注解来定义,大大降低了复杂性。 3. **无容器依赖的持久化(JPA)**:EJB 3.0...