e 汽车e是什么意思

Enterprise JaBeans(E)是一个在Ja平台上开发大规模分布式业务应用程序的规范。E 1.0于1998年发布。最新版本的E 3.2.3已经包含在Jakarta EE中,并被重命名为Jakarta Enterprise Beans。

ejb 汽车ejb是什么意思

E架构

E架构由三个主要组件组成:企业Bean(E)、E容器和Ja应用服务器。E运行在E容器中,后者运行在Ja应用服务器中。

有两种类型的E:会话bean和消息驱动bean:

会话Bean由客户端调用,并以编程方式使企业功能(例如事务和资源管理)可供客户端使用。消息驱动的bean也封装并提供企业功能,但是它们是异步的并且是事件驱动的。消息驱动的Bean侦听并响应事件,并且不能由客户端调用。

一旦用于在E系统中提供持久性,Ja持久性API已经取代了实体bean。请继续阅读,了解关于会话bean和消息驱动bean的更多信息。

E和爪哇

Enterprise JaBeans是第一个基于组件的Ja EE开发模型。E与JaBeans的相似之处在于它是基于组件的,但相似之处仅限于此:

JaBean是一个Ja类,它封装了多个对象并符合某些规范。JaBeans主要用于客户端开发。

企业bean(E)是一个注入了特定服务器端功能的Ja类。企业bean用于大型商业应用程序和系统中。

会话bean

会话bean是最常见的企业bean类型,它代表一组业务功能,也可以由客户端调用。在这种情况下,客户机可以是本地JVM中的另一个类或一个远程调用。

E容器管理会话bean的生命周期,这是由bean的状态决定的:

无状态会话Bean与Ja Servlet API中的请求范围相似。无状态会话Bean包含大量可调用功能,但无状态。有状态会话Bean仅与一个客户端相关联,并附加到该客户端的正在进行的会话。有状态会话Bean的功能类似于Servlet API中的会话范围。单例bean与Servlet API中的应用程序范围类似。每个客户一个单例会话bean仅存在一次。

会话bean的线程安全

有状态会话bean一次只能由一个客户端访问,因此在使用这种类型的bean时可以确保线程安全。无状态会话bean和单例bean更加灵活,允许并发连接,这必须由开发人员来管理。当使用这些类型的bean时,您应该对线程安全负责。

消息驱动的bean

消息驱动bean(MDB)是通过JMS(Ja消息服务)消息调用的。JMS的工作方式类似于分布式命令模式,其中消息驱动bean充当命令的监听器。当消息到达一个主题或队列时,会调用一个监听该主题的消息驱动Bean。

【在这个12部分的综合课程中,学习Ja从入门概念到高级设计模式!]

消息驱动bean不像会话bean那样常见,但是它们非常强大。因为它们是异步的和事件驱动的,所以它们对于长时间运行的工作特别有用,在这些工作中节省资源是非常重要的。

最简单的架构将由E应用程序及其容器和服务器组成,它们与处理MDB的消息服务相协调。在生产中,您的体系结构可能包含第三个专用于使用Bean的组件。在开发中,所有这些组件都可以在同一台本地计算机上运行。

图1显示了带有消息驱动bean的典型事件驱动架构。

使用消息驱动bean比使用会话驱动程序涉及更多的工作。在事件驱动的环境中,您通常需要一个像ActiveMQ这样的消息代理。

虽然会话bean更简单,因此在E更常用,但事件驱动架构已经变得非常流行,特别是随着微服务的爆炸式增长。

E批注

在E 3.0之前,定义和使用企业Bean对于许多开发人员来说是一个难题。在E 3.0之前,E 3.0引入了对E规范的注释。注释使得在Ja EE中用各种功能配置企业bean变得非常容易。请继续阅读,开始使用E注释。

@Stateless:定义一个无状态会话bean。

要将一个类指定为无状态会话Bean,可以使用jax.e.Stateless注释,如清单1所示。

清单1。@无状态注释示例

这个无状态Bean包含一个简单的签名,该签名不带参数并返回一个字符串。但是,不要让简单性欺骗了你:这个bean可以做你需要的任何事情,包括与其他bean、服务或应用程序的数据层进行交互。

@E:使用无状态会话Bean

定义会话bean后,使用它非常简单:

清单2。@E标注示例

这里,我们将一个无状态bean注入servlet,然后我们就可以使用它了。注意如何在@E注释下标识Bean。“无状态”标志告诉我们这个bean不会跟踪客户端。因为它是无状态的,我们也知道如果bean在被调用的方法之外做任何工作,它将受到线程的限制。

@Remote:定义一个远程E接口。

在上面的例子中,我假设E和E客户端运行在同一个JVM中。如果企业bean及其客户机在单独的JVM中运行,那么E必须定义一个@Remote接口。在这种情况下,它取决于接口的定义和实现,如清单3所示。

清单3。@远程注释示例

将远程接口发送给客户端进行调用。然后,E的服务器端实现将完成对它的调用。MyStatelesean的清单4中的示例实现了远程接口。

清单4。实现远程接口

远程接口的实现就像实现接口的普通类一样。作为远程E的使用者,客户端应用程序必须能够访问远程接口的类定义。您可以将远程接口的类定义打包成一个依赖JAR。

本地和远程接口

虽然知道如何实现远程接口很重要,但实际上使用本地接口更常见。默认情况下使用本地接口,只要在相同的JVM上下文中调用E,就可以使用本地接口。当应用程序分布在多个JVM中时,将使用远程接口。

有状态会话Bean和Singleton Bean

定义和使用stateful @SessionBean和@SingletonBean的过程与您看到的@Statelesean的过程相同。记住语义:

可以实例化多个会话bean,并将其用于同一客户端。对于整个应用程序,单例bean将仅存在一次。线程安全和单例调度

当使用会话bean时,线程安全是内置的,但是无状态bean和单例bean可以被多个客户端同时访问。当实现这些类型的bean时,开发人员负责线程安全。

singleton bean通过@Lock注释为线程安全提供了一些支持。您可以在单例bean方法上使用@Lock注释来设置每个方法的读/写权限。这两个选项是@Lock(LockType。READ)或@Lock(LockType。WRITE),这是默认选项。

singleton bean的另一个有用的功能是能够使用@Schedule注释以简单的方式调度任务。清单5展示了如何在每天中午调度任务。

清单5。@日程注释示例

CDI与E

CDI或上下文和依赖注入是一个相对较新的企业规范,由一些开发人员提出来取代E。

在更高的层次上,CDI提供了一个通用的组件框架,而E以其功能丰富的独立组件吸引了人们的注意。虽然CDI使用依赖注入来定义和引用任何软件组件,但是E组件的定义更加正式,每个组件都提供一组特定的功能。这两个规范都计划在将来作为Jakarta EE的一部分来开发,这将最终解决CDI是否应该取代E的问题。

结论

Enterprise JaBeans是第一个提供简单方法来封装和重用企业Ja应用程序中的业务逻辑的规范。E远不是一个庞大的庞然大物。它是一个基于注释的简洁框架,允许您立即使用各种企业功能。下一次当你被要求快速启动一个分布式和可伸缩的商业应用时,请考虑E。你可能会惊喜。

最后,我是一个从事开发多年的JA老程序员。我辞掉了工作,目前正在做自己的ja个人定制课程。今年年初,我花了一个月的时间整理了一本最适合2019年学习的ja学习干货,可以送给每一个喜欢ja的伙伴。想要获取,可以关注我的头条号,后台私信我:ja,免费获取。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论