当前位置: 首页 > news >正文

ii6创建网站贵阳网站开发制作公司

ii6创建网站,贵阳网站开发制作公司,宸建设计网站,公司一般都用什么邮箱ejb生命周期这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 我将在本文中介绍Singleton EJB 。 Singleton模式可以说是最常用#xff08;有时被滥用#xff01;#xff09;的模式。 单吨又爱它#xff01; Java EE使我们无需编写显… ejb生命周期 这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 我将在本文中介绍Singleton EJB 。 Singleton模式可以说是最常用有时被滥用的模式。 单吨又爱它 Java EE使我们无需编写显式代码如上图所示即可实现Singleton模式。 EJB 3.1本身就是Java EE 6的一部分因此引入了Singleton EJB。 所需要的只是在一个豆类上提供一个 javax.ejb.Singleton 类级别注释如果需要完善其他方面还可以添加更多注释以将其指定为Singleton会话bean。 JVM中只有一个实例和一个Singleton EJB实例 –无论有多少客户端访问它。 它不像有状态SB一个在整个生命周期内附加到单个客户端的bean实例也不像无状态SB每个状态的请求一个新实例。 Singleton Session Bean的生命周期中有哪些不同的状态 Singleton Bean的生命周期与无状态会话Bean相同-实际上这是此Bean类型的简单方面之一 不存在 准备 状态如何变化 是什么触发了他们 这是一个快速的表格快照和一个高级图表。 。 。 单例豆–状态转换 国家过渡 扳机 回呼 DNE转R 首次通过JNDI / DI访问实例或由容器使用Startup或DependsOn自动实例化实例时 PostConstruct R到DNE 容器关闭–销毁bean实例或者PostConstruct注释方法中发生异常 PreDestroy 注意 DNE –不存在 R –就绪 如前所述生命周期是Singleton bean的较简单功能之一。 了解它们的并发方面至关重要。 Singleton Session Bean并发管理 如前所述– Singleton在JVM中只有一个实例。 在Java EE环境中并发访问是不可避免的–这就是为什么我们首先使用Java EE之类的技术的原因 需要确保根据用例和需求仔细考虑Singleton bean的并发 锁定 策略。 Singleton –小心消费 Singleton bean并发可以分为2个主要类别 容器托管默认 Bean托管 容器管理并发 顾名思义容器对Bean应用了明智的默认配置 可以使用注释和XML部署描述符进行控制 在bean类本身上使用 javax.ejb.ConcurrencyManagement注释明确声明 默认值为javax.ejb.ConcurrencyManagementType.CONTAINER 容器提供了两种可能的锁定策略 –适用于bean类或其单个方法 javax.ejb.Lock 其值为javax.ejb.LockType.READ –在没有写锁的情况下允许并发访问 可以在Bean类或方法上指定 javax.ejb.AccessTimeout以确保线程在不确定的时间段内不会阻塞或持有锁 Bean托管并发 该名称清楚地表明– Bean的并发方面留给开发人员。 与容器通过上述构造提供的并发控制相比在需要更好的并发控制时有意义 需要使用适当的Java并发构造例如同步易失等 很难正确 代码示例 让我们看一个简单的代码片段以便更好地理解上述事实 方案一 –容器管理的并发默认未明确指定锁定类型 package com.abhirockzz.wordpress.ejb.lifecycle.singleton;import com.abhirockzz.wordpress.ejb.lifecycle.stateful.MyStatefulBean; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.Singleton; import javax.ejb.Startup;Singleton Startup public class MySingletonBean {public void act() {System.out.println(Entered MySingletonBean/act() on new Date().toString() . Singleton instance this.hashCode() Thread : Thread.currentThread().getName());try {Thread.sleep(2000);} catch (InterruptedException ex) {Logger.getLogger(MyStatefulBean.class.getName()).log(Level.SEVERE, null, ex);}System.out.println(Exit MySingletonBean/act() on new Date().toString() . Singleton instance this.hashCode() Thread : Thread.currentThread().getName());} }package com.abhirockzz.wordpress.ejb.lifecycle.singleton;import java.io.IOException; import java.util.Date; import javax.inject.Inject; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;WebServlet(name SingletonTestServlet, urlPatterns {/SingletonTestServlet}) public class SingletonTestServlet extends HttpServlet {public SingletonTestServlet() {}InjectMySingletonBean mySingleton;Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {System.out.println(Entered SingletonTestServlet/doGet() on new Date().toString() . Servlet instance this.hashCode() Thread : Thread.currentThread().getName());mySingleton.act();}} 使用Apache JMeter –我在SingletonTestServlet触发了2个并发线程是的只有两个。这更多是演示而不是负载测试竞赛 观察结果 查看日志可以轻松得出以下几点 Servlet当然不是线程安全的因此有两个线程同时进入 其中一个线程在Singleton bean类中输入方法标记为红色由于容器强制使用默认的WRITE锁定类型 因此禁止进一步访问 第一个线程完成执行后最初被阻塞的第二个线程标记为绿色就有机会执行Singleton bean方法 很简单 方案二 –坚持使用容器管理的并发性。 将显式锁定类型从WRITE更改为READ import com.abhirockzz.wordpress.ejb.lifecycle.stateful.MyStatefulBean; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.ejb.ConcurrencyManagement; import javax.ejb.ConcurrencyManagementType; import javax.ejb.Lock; import javax.ejb.LockType; import javax.ejb.Singleton; import javax.ejb.Startup;Singleton Startup ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) public class MySingletonBean {Lock(LockType.READ)public void act() {System.out.println(Entered MySingletonBean/act() on new Date().toString() . Singleton instance this.hashCode() Thread : Thread.currentThread().getName());try {Thread.sleep(2000);} catch (InterruptedException ex) {Logger.getLogger(MyStatefulBean.class.getName()).log(Level.SEVERE, null, ex);}System.out.println(Exit MySingletonBean/act() on new Date().toString() . Singleton instance this.hashCode() Thread : Thread.currentThread().getName());} } 当应用程序被2个并发线程轰炸双关时会发生什么情况。 。 。 如预期的那样两个线程同时进入Servlet 线程之一进入Singleton bean类中的方法标记为红色 第二个线程标记为绿色也设法同时进入Singleton bean方法检查时间戳记 再次-非常简单 我现在所描述的不是Bean管理并发。 如上所述将BMC用于Singleton会将责任转移给开发人员并且他可以自由地将并发功能编码到Bean中这可以简单地在每种方法或其他机制例如从java.util.concurrent API上使用同步来完成。 建议阅读 EJB3.2规范 干杯 翻译自: https://www.javacodegeeks.com/2014/09/ejb-3-x-lifecycle-and-concurrency-models-part-2.htmlejb生命周期
http://www.sadfv.cn/news/22368/

相关文章:

  • 西部数码网站管理助手 2008企业网站优化问题
  • 密云上海网站建设ui设计的细分研究方向包含哪几项
  • 重庆 网站设计中国建设银行网站进不去
  • 小程序做网站上海大型网站制作公
  • 英国做电商网站有哪些方面dedecms迁移wordpress
  • 哪些网站设计的比较好google搜索下载
  • 我要做一个网站 需要营业范围吗网站设计市场价
  • 网站建设制作培训辽宁省城乡和住房建设厅网站
  • 新钥匙建站做php网站方向要会什么
  • 前端 模板 网站建设银行安徽分行招聘网站
  • 大华天途建设集团网站北京百度推广电话
  • 网站视频上传怎么做网站设计建设介绍
  • 网站的策划做推广wordpress 全景图插件
  • 网站的销售怎么做深圳网页制作培训班
  • 比较好的摄影网站景德镇做网站的公司
  • 淘宝关键词排名怎么查百度seo手机
  • 网站建设哪家更专业长沙县星沙人才招聘网
  • 电子商务网站建设与规划总结wordpress临时关闭
  • 可以建网站网站开发资料
  • vs2010网站开发教程wordpress 支付宝
  • 弄个做网站公司a站下载
  • 网站换空间怎么换pdf怎么做电子书下载网站
  • 企业邮箱多少钱一年网站建设 seo模块
  • 毕节城乡建设厅网站国外外贸平台有哪些
  • 网站内容与功能设计与实现的网站开发代做
  • 做网站有哪些项目竞价排名软件
  • 网站极简设计二次元风格wordpress模板
  • 网站怎样做优化推广网站广告有哪些
  • 通州手机网站建设广网站建设
  • 中英文双语的网站怎么建设vs做的网站源代码