`

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的源码-EJB中JNDI的使用源码例子.zip

    - CDI(Contexts and Dependency Injection)与JNDI:在更现代的Java EE应用中,CDI提供了更灵活的依赖注入机制,但仍然可以通过JNDI查找来访问EJB。 5. 注意事项: - JNDI查找的异常处理:在实际开发中,需要...

    2022年EJB 3.0开发指南之依赖注入Java教程.docx

    依赖注入(Dependency Injection,简称DI)是Java编程中一种重要的设计模式,特别是在企业级Java应用(Enterprise JavaBeans,EJB)3.0版本中得到了广泛的应用。依赖注入的核心思想是解耦,它允许开发者在不修改代码...

    实战角度比较EJB2和EJB3的架构异同

    EJB2和EJB3是EJB技术的两个主要版本,它们在架构上存在显著差异,尤其是在编程模型的简化、依赖注入(DI)和对象创建方式等方面。 EJB2的编程模型相对复杂,一个EJB通常需要两个接口(业务接口和远程接口)以及一个...

    ejb3_structs

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

    Ejb3中的注释常用属性

    总结,EJB3中的注解大大简化了Java EE应用的开发,@EJB和@Resource注释提供了方便的依赖注入机制,而实体Bean结合persistence.xml文件则实现了ORM(对象关系映射),使得数据库操作更加便捷。理解并熟练运用这些注解...

    struts2-ejb3配置

    - 配置Struts2的ObjectFactory,使其能够通过JNDI查找并注入EJB远程业务对象。 - 在Struts2的配置文件(struts.xml)中,正确地指定EJB的引用。 - 确保EJB3的接口和实现类遵循JSR-250规范,以便于管理和注入。 - ...

    jboss7ejb配置文件

    在`ejb-jar.xml`中,还可以定义安全性、依赖注入、定时器服务等高级特性。 `jboss-ejb3.xml`是JBoss AS 7特有的配置文件,用于扩展或覆盖`ejb-jar.xml`中的配置。这个文件允许开发者针对特定的JBoss实现进行更细致...

    EJB3与Struts与Spring整合开发(SSE)

    在"EJB3与Struts与Spring整合开发(SSE)"的场景中,开发者可能将EJB3作为业务逻辑层,处理复杂的业务操作;Struts作为前端控制器,负责用户交互和请求转发;而Spring则作为整个应用的“胶水”,实现各层间的协调和...

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

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

    EJB3.0与EJB2.0的区别

    其次,EJB3.0引入了依赖注入(Dependency Injection,DI)和Inversion of Control(IoC)模式,替代了EJB2.0中的简单工厂模式。在EJB2.0中,调用EJB对象需要通过JNDI查找和Home接口创建。而在EJB3.0中,通过@EJB注解...

    EJB3+JPA开发总结

    依赖注入是EJB3中的一个重要特性,它允许将EJB存根对象自动注入到任何由容器管理的POJO中。使用`@EJB`注解即可实现。 **示例代码**: ```java @Stateless @Remote(Injection.class) public class InjectionBean ...

    struts2+spring+ejb3源代码(完整版)

    Struts2、Spring和EJB3是Java Web开发中的三个重要框架,它们分别在MVC模式、依赖注入和企业级服务方面发挥着关键作用。这个压缩包提供的源代码是一个完整的项目示例,展示了如何将这三个框架集成到一个应用程序中。...

    EJB2和EJB3 消息驱动bean

    - **灵活性与扩展性**:EJB3提供了更为灵活的配置选项和更好的扩展性,支持更多的依赖注入策略和事件监听器,使得集成外部服务和资源变得更加容易。 - **性能与可维护性**:尽管EJB3在编译时会产生更多的元数据,但...

    Weblogic11g+EJB3的小例子

    - `@EJB`:注入其他Bean,替代传统的JNDI查找。 - `@Stateless` 和 `@Stateful`:声明无状态和有状态会话Bean。 - `@Local` 和 `@Remote`:定义Bean接口,区分本地和远程调用。 3. **Weblogic 11g集成EJB3**: ...

    EJB3.pdf EJB3 文档 资料

    理解两者之间的区别,并掌握如何改变会话Bean的JNDI名称、如何管理会话Bean的生命周期,以及如何使用拦截器和依赖注入等高级特性,对于开发高效、可扩展的企业级应用至关重要。 #### 五、JMS(Java Message Service...

    ejb3 第5讲--通过ANT提高EJB应用的开发效率

    这个例子通常会演示如何声明bean,如何注入依赖(如`@PersistenceContext`),以及如何通过JNDI查找并调用bean的方法。 ### 实战步骤 1. **设置ANT环境**:确保已安装ANT,并在系统路径中配置好。 2. **创建build...

    一个EJB项目入门例程

    EJB 3.x版本大大简化了API,引入了依赖注入(DI)和企业bean的注解,降低了学习和使用的门槛。此外,EJB 3.1引入了轻量级Local Bean,无需JNDI查找即可本地调用。 **7. 开发流程** 一个EJB项目通常涉及以下步骤: ...

    struts2 + ejb3 + spring 整合了

    使用Spring的`<jee:jndi-lookup>`标签来查找和注入EJB3的会话bean。 最后,我们要整合Struts2。为此,添加Struts2的库到项目的类路径,并创建`struts.xml`配置文件。在该文件中,定义Action类、结果和拦截器栈。...

    ejb 学习笔记6

    ### EJB学习笔记第六部分详解...总之,掌握EJB之间的调用、依赖注入、EJB-jar文件的结构与配置等内容对于开发健壮的Java EE应用程序至关重要。通过理解并应用这些知识点,开发者能够构建出更为灵活、高效的企业级应用。

Global site tag (gtag.js) - Google Analytics