`
8366
  • 浏览: 802219 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

    博客分类:
  • ejb
阅读更多

 

情景:有两个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

分享到:
评论
2 楼 danni505 2009-07-10  
EJB3的这个
引用

@EJB(name="OtherBean") Other other;

真的很强大!
1 楼 danni505 2009-07-10  
这个是EJB3.0的写法,有兴趣可以看看我的这篇文章(EJB2.1)
http://danni505.blog.51cto.com/15547/172297

相关推荐

    大量EJB3文档(基本包含EJB所有技术资料)

    5. **依赖注入(Dependency Injection, DI)**:EJB3引入了JSR-250规范,通过@EJB、@Inject和@Resource等注解,实现了组件间的依赖关系管理,无需手动管理对象实例。 6. **事务管理**:EJB3提供了声明式事务管理,...

    ejb3_structs

    4. **依赖注入**:使用`@EJB`注解可以实现依赖注入,无需手动查找或创建bean实例。 **Struts** 是一个开源的MVC(Model-View-Controller)框架,用于构建基于Java Servlet的Web应用程序。它的主要功能包括: 1. **...

    第一个EJB简单例子

    在这个“第一个EJB简单例子”中,我们将深入探讨如何创建和理解基本的EJB组件。 1. **EJB组件类型**: - **会话Bean(Session Beans)**:代表客户端的一次交互或会话。它们可以是状态ful(维护会话状态)或状态...

    ejb-3_0最新规范

    @EJB注解用于注入其他Bean,而@PersistenceContext和@PersistenceUnit则用于注入JPA实体管理和持久化单元。 3. **Java Persistence API(JPA)集成** EJB 3.0与JPA的整合使得对象/关系映射(ORM)变得更加直观。...

    ejb3超详细教程ejb3超详细教程

    EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。EJB3是其第三个主要版本...通过阅读EJB3.doc文档,你可以深入了解EJB3的每个方面,并逐步成长为一名熟练的Java EE开发者。

    EJB3入门经典配套源码2.rar

    EJB3是其第三个主要版本,引入了大量的改进,极大地简化了开发过程,降低了对XML配置的依赖,并引入了注解驱动的开发模式。 在EJB3中,有三种主要类型的Bean:Session Beans、Message Driven Beans(MDB)和Entity ...

    企业级EJB3高级培训PPT3

    EJB3引入了依赖注入的概念,通过`@EJB`、`@Inject`和`@Resource`注解,可以方便地注入其他Bean、资源或服务,实现了松耦合的设计,提高了代码的可测试性和可维护性。 5. **事务管理** EJB3提供了强大的事务管理...

    ejb3的一些摘记

    总的来说,EJB 3通过注解、依赖注入、简化ORM和事务管理等方式,极大地提升了开发效率和代码的可读性,减少了错误的可能性,使得EJB更适合现代企业应用的开发需求。如果你正在探索或使用EJB 3,这些摘记和文档将是你...

    EJB3.0第五版

    EJB 3.0通过CDI(Contexts and Dependency Injection)提供依赖注入功能,允许bean自动获得它们需要的其他bean和服务,而无需手动创建和管理依赖关系。`@Inject` 注解用于声明依赖。 ### 6. 事务管理 EJB容器自动...

    精通EJB 3.0第四版

    8. **JNDI查找**:虽然EJB 3.0鼓励使用依赖注入,但仍然支持传统的JNDI(Java Naming and Directory Interface)查找,以便于与其他系统集成。 9. **测试**:EJB 3.0引入了单元测试支持,使得开发者可以更容易地对...

    精通EJB第三版源码

    **精通EJB第三版源码解析** EJB(Enterprise JavaBeans)是Java平台企业版(Java EE)的核心组件之一,用于构建可复用、模块化的分布式企业级应用程序。EJB 3.0是EJB规范的一个重要里程碑,它极大地简化了开发过程...

    EJB3.0入门图文教程

    通过这个“EJB3.0入门图文教程”,初学者可以系统学习EJB3.0的核心概念和用法,包括如何创建和使用Bean,如何进行持久化操作,以及如何利用依赖注入和事务管理来构建健壮的Java EE应用程序。教程可能包含详细的步骤...

    ejb3.0实例教程

    2. **创建第一个EJB**:通过一个简单的例子,展示如何使用注解创建一个无状态Session Bean,并进行调用。 3. **实体Bean与JPA**:讲解如何定义实体类,配置JPA,以及如何进行CRUD(创建、读取、更新、删除)操作。 ...

    精通EJB源代码 第二版

    EJB 3.x引入了更简洁的API,减少了XML配置,并支持注解驱动的开发,使得EJB更容易学习和使用。 本书可能涉及的知识点包括: 1. **EJB组件模型**:讲解实体Bean(Entity Bean)、会话Bean(Session Bean)和消息...

    ejb2创建工程文档

    别忘了添加必要的注解,如`@EJB`,用于注入其他Bean或资源。 ### 8. 测试和部署 - 使用开发工具提供的测试工具进行单元测试,确保Bean的业务逻辑正确。 - 将EJB项目打包成`ejb-jar`文件,然后将其与你的应用服务器...

    EJB3.0入门与进阶

    1. **实体Bean(Entity Beans)**:在EJB3.0中,实体Bean不再需要接口,它们可以基于Java POJOs(Plain Old Java Objects),并使用注解来定义其行为。`@Entity`注解标记一个类为实体,而`@Id`注解用于指定主键字段...

    学习EJB3.0(不是扫描版的,很清晰的,值得学习)

    会话Bean在EJB3.0中也得到了简化,通过`@Stateless`和`@Stateful`注解,可以轻松创建无状态和有状态的会话Bean,用于提供服务或者存储用户会话数据。 **7. 集成JAX-RS(Java API for RESTful Web Services)** EJB...

    ejb资料 javadb资料

    4. **依赖注入(Dependency Injection)**:EJB 3.0引入了JSR-250规范,允许通过注解如@EJB、@Inject等实现组件之间的依赖关系自动装配。 5. **持久性API(JPA,Java Persistence API)**:提供了统一的ORM(Object...

    《EJB 3.0 实例教程》 下载

    2. **实体Bean的简化**:之前的EJB实体Bean需要实现复杂的接口,但在EJB 3.0中,实体Bean可以通过继承`javax.persistence.Entity`并使用注解来定义,大大降低了复杂性。 3. **无容器依赖的持久化(JPA)**:EJB 3.0...

Global site tag (gtag.js) - Google Analytics