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入门经典》写得一塌糊涂,很混乱,越看越迷糊。
分享到:
相关推荐
第二部分详细讲解了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工具...
4.7 依赖注入(DEPENDENCY INJECTION).......29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置........
4.7 依赖注入(DEPENDENCY INJECTION).......29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN) .....33 第六章 实体 BEAN(ENTITY BEAN) .36 6.1 实体 BEAN的组成文件PERSISTENCE.XML配置.36 6.2 JBOSS数据源的配置........
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
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使用应用上下文...
pring-expression.RELEASE.jar:Spring表达式语言。 spring-aop.RELEASE.jar : Spring的...spring-beans.RELEASE.jar : SpringIOC(依赖注入)的基础实现。 spring-core.RELEASE.jar : Spring的核心工具包。
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 ...
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 ...
4.7 依赖注入(DEPENDENCY INJECTION)..........................................................................................................................29 第五章消息驱动 BEAN (MESSAGE DRIVEN BEAN)...
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 Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...
Java Web企业级开发技术EJB:包括会话Bean、消息驱动Bean、实体Bean、拦截器、依赖注入、定时器、JPA持久化、JPQL查询语言。 Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务...