`
8366
  • 浏览: 809217 次
  • 性别: 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提供了声明式事务管理,...

    Apress.Begining EJB3 Java EE 7 Edition.2013

    第8章:EJB中的事务支持 - **主要内容:** - 事务的基本概念。 - EJB中的事务管理模型。 - 事务传播行为(Transaction Propagation)。 - 事务的隔离级别(Isolation Level)。 - 事务的回滚和补偿机制。 - **...

    ejb3_structs

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

    ejb3.0非常实用教程

    - 通过`@EJB`注解注入本地和远程Session Bean。 8. **定时服务** - 创建和管理定时任务。 - 示例:定期执行数据同步、发送邮件等。 9. **安全服务** - 理解EJB的安全模型。 - 自定义安全领域,实现细粒度权限...

    ejb3 定时器开发

    定时器服务是EJB 3中一个重要的新特性,允许开发者在容器中定义定时任务,无需手动管理线程或者使用第三方库。 2. **EJB定时器服务基础** EJB定时器服务提供了一种在容器级别创建和管理定时任务的方法。它通过`@...

    第一个EJB简单例子

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

    EJB3使用说明中文版

    - **简化部署**:EJB3 允许开发者通过注解来声明 Bean 的行为,大大减少了 XML 配置的使用。 - **POJOs**:EJB3 支持纯 Java 对象 (POJOs),使得 EJBs 更加轻量级和易于开发。 - **生命周期管理**:EJB 容器负责管理...

    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 ...

    Jboss EJB3.0教程

    - 创建一个简单的EJB3项目,并通过JBoss服务器运行。 - 示例代码通常包含基本的Session Bean实现。 - **在Tomcat中调用EJB**: - 解释如何在独立的Tomcat服务器中集成并调用JBoss上的EJB服务。 - **Web应用调用...

    企业级EJB3高级培训PPT3

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

    ejb3的一些摘记

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

    EJB3开发第一个无状态会话bean

    在 EJB3 中,也可以使用 `@EJB` 注解直接注入 Bean。 6. **源码分析** 在提供的 `HelloWorld` 示例中,我们可以看到 Bean 类实现了简单的业务逻辑,例如返回一条问候语。这展示了如何在无状态会话 Bean 中编写业务...

    EJB3.0第五版

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

Global site tag (gtag.js) - Google Analytics