`

EJB3 JNDI与依赖注入

    博客分类:
  • EJB3
阅读更多
JNDI是支撑EJB的核心技术,由于EJB3引入了annotation,所以无需再用XML进行配置。
考虑到不同应用服务器对JNDI的命名有所不同,所以开发时尽量考虑程序的可移植性,现将JNDI几种常见的方式列举出来,程序用到的类:

@Local
public interface IHelloWorld {
	void sayHello(String name);
}



@Stateless(name="HelloWorldBean")
public class HelloWorldBean implements IHelloWorld{
	public void sayHello(String name) {
		System.out.println("welcome to you "+name);
	}
}

name的名字与类名相同时可以省略。

@Remote
public interface IHelloWorldUser {
	public void say(String name);
}



@Stateless
@EJB(name="ejb/HelloWorldImp",beanName="HelloWorldBean",beanInterface=IHelloWorld.class)
public class HelloWorldUser implements IHelloWorldUser{
//通过EJB上下文引用
	@Resource
	private SessionContext sessionContext;
//通过EJB注解引用
	@EJB(name="ejb/HelloWorldImp")
	private IHelloWorld helloWorld0;
	public void say(String name){
		try {
			Context initialContext = new InitialContext();
//
			IHelloWorld helloWorld = (IHelloWorld) initialContext.lookup("java:comp/env/ejb/HelloWorldImp");
			helloWorld.sayHello(name);
			
			IHelloWorld helloWorld2 = (IHelloWorld) sessionContext.lookup("ejb/HelloWorldImp");
			helloWorld2.sayHello(name+"");
			
			helloWorld0.sayHello(name+"");
			
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


如果在JBOSS下,可以通过
IHelloWorld helloWorld3 = (IHelloWorld) sessionContext.lookup("HelloWorldBean/local");
			helloWorld3.sayHello(name+"");

如果这样,上面的@EJB(name="ejb/HelloWorldImp"....)必须去掉,当然此引用只能在JBOSS下进行,故慎用。
这个JNDI的问题原来一直没搞清楚过,查了很多资料都没弄明白,在此要提的是,那个《EJB3入门经典》写得一塌糊涂,很混乱,越看越迷糊。
分享到:
评论

相关推荐

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...

    EJB3.0 实例教程 -- 切片1

    4.7 依赖注入(DEPENDENCY INJECTION).......29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置........

    EJB3.0 实例教程 -- 切片2

    4.7 依赖注入(DEPENDENCY INJECTION).......29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置........

    Java高手真经 高级编程篇part3/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇part2/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 part5/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 part6/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 part7/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 part4/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 part1/7

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Spring in Action(第2版)中文版

    1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 2.1容纳你的bean 2.1.1beanfactory介绍 2.1.2使用应用上下文...

    最新的smm框架所用的包

    pring-expression.RELEASE.jar:Spring表达式语言。 spring-aop.RELEASE.jar : Spring的...spring-beans.RELEASE.jar : SpringIOC(依赖注入)的基础实现。 spring-core.RELEASE.jar : Spring的核心工具包。

    Spring in Action(第二版 中文高清版).part2

    1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 基本Bean装配 2.1 容纳你的Bean 2.1.1 BeanFactory介绍 2.1.2 ...

    Spring in Action(第二版 中文高清版).part1

    1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP 1.4.1 AOP介绍 1.4.2 AOP使用 1.5 小结 第2章 基本Bean装配 2.1 容纳你的Bean 2.1.1 BeanFactory介绍 2.1.2 ...

    EJB3.0实例教程

    4.7 依赖注入(DEPENDENCY INJECTION)..........................................................................................................................29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN)...

    J2EE应用开发详解

    254 15.3 依赖注入 259 15.3.1 Constructor注入 259 15.3.2 Setter注入 261 15.3.3 Method注入 263 15.4 Spring AOP技术 266 15.4.1 装备(advices) 267 15.4.2 Spring AOP的传统用法 275 15.4.3 基于@AspectJ注释...

    Java高手真经 高级编程篇 下载(一)

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 下载(三)

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 下载(二)

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

    Java高手真经 高级编程篇 下载(四)

     Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。  Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...

Global site tag (gtag.js) - Google Analytics