EJB中的2中依赖管理的形式:
1、依赖查找
第一种依赖查找的方式:
package app.xjtu.impl;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.ejb.EJBs;
import javax.ejb.Stateless;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import app.xjtu.DependentJNDI;
import app.xjtu.HelloEJBWorld;
/**
* 该方式的依赖注入,有以下几点疑问:
*
* 1、@EJB有多个时,应使用@EJBs注解
*
* 2、该种方式,似乎对“HelloEJBWorld”(即依赖注入的目标),命名了一个JNDI名称
*
* 3、"java:comp/env" 是服务器端的JNDI命名环境
*
*
*/
@Stateless(mappedName="ejb/DependentJNDI")
@EJBs(
{
@EJB(name="targetOne",beanInterface=HelloEJBWorld.class),
@EJB(name="targetTwo",beanInterface=HelloEJBWorld.class)
}
)
public class DependentJNDIBean implements DependentJNDI {
private HelloEJBWorld hello;
private HelloEJBWorld hello2;
@PostConstruct
public void init(){
try{
Context ctx = new InitialContext();
hello = (HelloEJBWorld)ctx.lookup("java:comp/env/targetOne");
hello2 = (HelloEJBWorld)ctx.lookup("java:comp/env/targetOne");
ctx.close();
}catch(NamingException e){
throw new EJBException("初始化依赖对象时出错!",e);
}
}
@Override
public String getInfo() {
return "这是第一种Dependent Lookup方式: "+hello.sayHello()+"\n hello == hello2 "+(hello == hello2);
}
}
第二种依赖查找的方式:
package app.xjtu.impl;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import app.xjtu.DependentJNDI;
import app.xjtu.HelloEJBWorld;
/**
* 这是第2种dependent lookup,相比第1种:
*
* 1、没有异常的抛出
*
* 2、需要SessionContext对象
*
* 3、查找的JNDI名称简化了
*
*/
@Stateless(mappedName="ejb/DependentJNDITwo")
@EJB(name="targetTwo",beanInterface=HelloEJBWorld.class)
public class DependentJNDIBeanTwo implements DependentJNDI {
@Resource SessionContext context;
HelloEJBWorld hello;
@PostConstruct
public void init(){
hello = (HelloEJBWorld)context.lookup("targetTwo");
}
@Override
public String getInfo() {
return "这是第2中依赖注入:"+hello.sayHello();
}
}
依赖注入
这种方式,可以将Annotations放在Field或者Setter方法上。这两种的区别,暂不清楚。据说JPA的Entity Bean中2者是有区别的。(以后有时间慢慢研究)
package app.xjtu.impl;
import javax.ejb.Stateless;
import app.xjtu.HelloEJBWorld;
@Stateless(mappedName="HelloEJBWorld")
public class HelloEJBWorldBean implements HelloEJBWorld {
@Override
public String sayHello() {
return "GlassFish EJB Client Invoked -- 通过默认的JNDI名称调用";
}
}
package app.xjtu.impl;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import app.xjtu.HelloEJBWorld;
import app.xjtu.Injection;
@Stateless(mappedName = "ejb/Myinjection")
public class InjectionBean implements Injection {
@EJB
private HelloEJBWorld hello;
@Override
public String getInfo() {
return "这是EJB 注入后的输出:"+hello.sayHello();
}
}
这里的@EJB是按类型注入的还是按某种命名规则注入的?
分享到:
相关推荐
不要在EJB的代码中写多线程的代码; 6)集群 7)负载均衡 5, EJB的类型 1) 会话Bean: 实现业务逻辑 有状态的会话Bean: 保存客户状态 无状态的会话Bean: 不会保存的信息的和状态,无状态的SessionBean是可以重用...
这个项目包括5个实体,这5个实体之间具有复杂的关联关系,而且业务逻辑也相对复杂,希望让读者理论联系实际,真正将jsf+ejb 3+jpa整合真正运用到实际开发中。该案例采用目前最流行、最规范的java ee架构,整个应用...
绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现EJB3.0 的开发过程,希望对大家有所帮 助。 EJB3 最激动人心的是POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写EJB ...
2.4 发布在JBOSS集成环境中的WEB应用调用EJB.....10 第三章开发前的准备............10 3.1 熟悉JBOSS的目录结构10 3.2 JBOSS中的部署............. 11 3.3 如何进行EJB打包....... 11 3.4 如何进行WEB应用打包........
2.3 在独立的TOMCAT 中调用EJB.................................................................................................................................9 2.4 发布在JBOSS集成环境中的WEB应用调用EJB...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的...通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中
并且更快流行开来 为了说明这一点 我们注意到 EJB 3 0 规范的方向相对以前出现了一个主要的转变 作为 JSR 220 的一部分 该规范提供了类似 Plain Old Java Object POJO 支持 Dependency Injection(依赖注入)和注释...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...
你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 ◆面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务...
尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制...