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

义乌网站建设公司书生商友海外一套crm国内一套crm

义乌网站建设公司书生商友,海外一套crm国内一套crm,宝应吧百度贴吧,查做外贸客户的网站这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 在这篇文章中#xff0c;我将介绍Singleton EJB 。 Singleton模式可以说是最常用#xff08;有时被滥用#xff01;#xff09;的模式。 单吨又爱它#xff01; Java EE使我们无需编… 这是两部分系列的第二篇。 第一部分介绍了有状态和无状态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.html
http://www.zqtcl.cn/news/623077/

相关文章:

  • 外贸网站租用外国服务器好还是自己装一个服务器好高质量外链网站
  • 珠海专门做网站成都到西安
  • 网站做1920px好吗长沙seo优化排名
  • 哈尔滨微信网站开发wordpress 视
  • wordpress 分享封面图片尺寸重庆官网优化乐育公司
  • dede手机网站更新受欢迎的昆明网站建设
  • 网站设计外包合同专做自驾游的网站
  • 网站建设服务预算游戏网站怎么赚钱
  • 怎么做网站关键词视频手机网页前端开发
  • 好网站具备条件网站建设外链
  • 青岛如何建立企业网站企业中国数据域名注册
  • 怎么看网站做的好不好南京h5 网站建设
  • 贵阳微信网站制作下列哪一项不属于电子商务网站建设
  • 有没有做电子名片的网站网络广告怎么投放
  • 网站开发要用cms教育网站制作价格
  • 深圳华鑫峰网站建设wordpress 关闭新闻
  • 韩国网站加速器南宁做网站seo
  • 义乌网站建设公司书生商友小程序自己制作流程
  • 株洲企业网站建设费用python mysql开发网站开发
  • 东航集团客户网站是哪家公司建设网站开发软件开发
  • 淮安企业网站制作科技公司办公室设计
  • 东莞企石网站设计手机能制作网站吗
  • 大连网站建设选高合科技广州开发区人才工作集团有限公司
  • 四川建设招标网站首页价格低廉怎么换个说法
  • 南昌企业制作网站龙华区深圳北站
  • 北京网站设计案例郑州网站设计培训
  • wordpress在lnmp部署百度搜索引擎优化案例
  • asp网站建设 文献综述评价一个网站设计的好坏
  • 做网站虚拟主机配置网站是怎样制作的
  • 网站建设方案 文库新乡网站seo优化