`
你是救世主
  • 浏览: 121449 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在WEB容器中获取持久化上下文

阅读更多

http://java.chinaitlab.com/advance/756728_3.html

 

 

 

 

   这样注入进来的EntityManager完全由容器管理,不要做任何EntityManager相关的工作.但是一切就这样完美了吗? 当然不是,和EJB容器不同的是,相当于有状态会话BEAN的Servlet是多线程服务的,一个实例变量的EntityManager 完全可能会被多个线程同时访问而出现极大的安全性隐患.那么这样的注入是否有意义呢?  当然有意义,一种情况是你可以在ServletContextListener这样的线程安全模块中注入,另一种情况只要你能控制不让多个线程同时访问一个实例变量的EntityManager,那么你就可以享受容器管理带来的方便性.

     但是任何事物都有两面性,如果你要获取方便,就要牺牲应用范围的控制和性能,要让多个线程不同时访问一个实例变量EntityManager,最终还是要进行同步或互斥.即一个线程使用变量EntityManager时其它线程都要等待.如果能在线程的local方法中(doXXX或父类的service方法中)获取由容器管理的EntityManager, 那将会大大提高程序的性能.  "容器管理"的意思,其实就是容器产生了一些对象,你只需要拿来使用,不需要负责它的产生和销毁,关键是容器产生了这样的对象后你如何"拿到".通过注入只能注入成实例字段,那么在线程方法中,可能通过JNDI 来即时获取"容器中的EntityManager".(实事上,只要改一下容器实现的源码,还可以通过在service方法中获取ServletContext对象来动态即时注入,但这对于普通程序员是做不到的).

分享到:
评论

相关推荐

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    barkeep:用于自制应用商店存储库的Web存储库管理GUI

    docker-compose start这应该调出两个容器,一个用于持久化mysql数据库,另一个用于运行服务器。 有关首次设置信息,请参见下文。首次安装在第一次运行之前,您需要构建和barkeep容器并设置mysql数据库表。 创建...

    Java_EE_6规范中文版

    5.13 引用持久化单元 5.14 持久化上下文的引用 5.15 应用程序名称和模块名称 5.16 检验器和检验器工厂的引用 5.17 数据源资源定义 5.18 引用受管理的Bean 5.19 Bean管理器的引用 5.20 支持依赖注入(JSR-330) ...

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

    第9章 在Spring中建立契约优先Web服务 9.1 介绍Spring-WS 9.2 定义契约(首先!) 9.3 使用服务端点处理消息 9.3.1 建立基于JDOM消息的端点 9.3.2 序列化消息载荷 9.4 合并在一起 9.4.1 Spring-WS:全景视图 ...

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

    第9章 在Spring中建立契约优先Web服务 9.1 介绍Spring-WS 9.2 定义契约(首先!) 9.3 使用服务端点处理消息 9.3.1 建立基于JDOM消息的端点 9.3.2 序列化消息载荷 9.4 合并在一起 9.4.1 Spring-WS:全景视图 ...

    spring-framework-3.1.0.RELEASE.zip

    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。... 1、核心容器 2、Spring 上下文 3、Spring AOP 4、Spring DAO 5、Spring ORM 6、Spring Web 模块 7、Spring MVC 框架

    领域驱动设计与模式实战

    7.3.1 上下文,上下文,还是上下文 7.3.2 数据库约束 7.3.3 将规则绑定到与领域有关的转换,还是绑定到与基础架构有关的转换 7.3.4 精化原则:所有状态,即使是错误状态,都应该是可保存的 7.4 与持久化有关的基本的...

    Spring面试题

    ☆ Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域...

    Spring in Action(第2版)中文版

    第9章在spring中建立契约优先web服务 9.1介绍spring-ws 9.2定义契约(首先!) 9.3使用服务端点处理消息 9.3.1建立基于jdom消息的端点 9.3.2序列化消息载荷 9.4合并在一起 9.4.1spring-ws:全景视图 9.4.2将...

    spring in action英文版

     2.1.2 使用应用上下文  2.1.3 Bean的生命  2.2 基本装配  2.2.1 使用XML装配  2.2.2 添加一个Bean  2.2.3 通过Set方法注入依赖  2.2.4 通过构造函数注入依赖  2.3 自动装配  2.3.1 处理...

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

    10.3.1 持久化上下文和持久化单元 382 10.3.2 实体类的要求 382 10.3.3 实体的状态 383 10.3.4 管理实体的方法 384 10.4 实体的基本映射387 10.4.1 映射实体类的属性 387 10.4.2 将实体映射到多个表 394 10.4.3 映射...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    3.4.7 访问其他类中的HTTP上下文 3.5 总结 第4章 服务器控件 4.1 服务器控件的类型 4.2 HTML服务器控件 4.2.1 HtmlControl类 4.2.2 HtmlContainerControl类 4.2.3 HtmlInputControl类 4.2.4 HTML...

    ASP.NET4高级程序设计(第4版) 3/3

    3.4.7 访问其他类中的HTTP上下文 96 3.5 总结 96 第4章 服务器控件 97 4.1 服务器控件的类型 97 4.2 HTML服务器控件 99 4.2.1 HtmlControl类 100 4.2.2 HtmlContainerControl类 100 4.2.3 ...

    java 面试题 总结

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    java面试题

    5:Spring WEB:为基于WEB服务的应用程序提供上下文服务 6:Spring Context:向Spring框架提供上下文信息 7:Spring MVC:分离模型、视图、控制器、以便更容易定制 折构函数和虚函数? 答:折构函数式销毁一个类...

    J2EE应用开发详解

    294 16.3.5 数据库连接池中使用JDBC 297 16.4 小结 302 第17章 ORM与Java持久化机制 303 17.1 ORM概述 303 17.2 域模型 304 17.3 实体域对象的持久化模式 304 17.4 JPA 305 17.4.1 实体 306 17.4.2 EntityManager ...

Global site tag (gtag.js) - Google Analytics