- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
完全不熟悉企业 Java 开发并且在阅读 following 之后教程。我设法开发了我的第一个 session bean。在阅读了一些有关 session bean 的内容后,我确实对它( session bean)有一些疑问,我希望这里的专家可以帮助我。
通常在不使用 EJB 的 servlet 场景中,我们会做类似下面的事情来完成某个任务
StudentList stud = businesslayer.businessMethod_GetStudentsFromDb();
现在业务层将调用服务层,服务层将从数据库获取详细信息并将其返回。
现在我的问题如下:
1-如果我要使用无状态 EJB 实现此机制,我必须将包含域对象 StudentList 的域包复制到我的企业项目的“-ejb”文件夹中(我正在使用 netbeans)。同样,我必须将其他业务方法从我的“-war”文件夹的源文件夹复制到 ejb 文件夹,以便“-ejb”文件夹中的无状态 bean 可以使用这些方法。 “-ejb”文件夹内的类不能使用“-war”文件夹的源文件夹内的类。
2-到目前为止,这是我无法理解的问题。如果我使用 EJB 而不是我当前的机制,我将获得什么优势?
最佳答案
1
如果您正在构建单个应用程序,则无需复制任何内容。如果你想在业务代码和网络/ View 代码之间有一个非常严格的分离,你可以创建一个 ear
,一个 ejb 模块
和一个 web 模块
。 web模块中的所有类都可以访问ejb模块中的所有类,反之则不然。这有效地在您的应用程序中强加了一个分层。
但是您不必为了这次分离。您也可以将您的 EJB bean 与您的 Servlet 以及您拥有的东西放在一起。你把 bean 放在哪里没有限制。它可以位于单独的包中,也可以与您的 Servlet 位于同一包中。
你可能想看看我做的这个例子:http://arjan-tijms.omnifaces.org/2011/08/minimal-3-tier-java-ee-app-without-any.html .在那里,BusinessBean
是一个 EJB,它与单个 war 中的 JSF 支持 bean 位于相同的(默认)包中。
在单一 war 设置中,一切都可以访问一切。请注意,即使在这种情况下,您也可能希望保持您的业务代码“干净”,并将诸如 HttpRequest
之类的内容排除在外。
2
EJB bean,尤其是 EJB light,提供了大多数 Web 应用程序需要的那些东西:事务、池、线程安全、安全和注入(inject)。当与 JPA 结合使用时,您将充分利用 EJB bean。优点是您的代码将更加简洁,同时避免了使用普通 JDBC 时会遇到的竞争条件和不一致问题。
例如
@Stateless
public class CustomerService {
@PersistenceContext
private EntityManager entityManager;
public void addCustomer(Customer customer) {
entityManager.persist(customer);
}
}
如果没有 EJB,您将需要一堆 try/finally block 来打开和关闭连接、启动和提交事务等。如果没有 JPA,您将拥有一大块繁琐的代码,用于插入 Customer
示例中显示的实体放入准备好的语句中。
如果您(稍后)有调用一个或多个其他服务的服务,并且要么所有内容都需要保存到 DB 中,要么什么都不需要(而不是介于两者之间的未定义内容),那么这在普通 JDBC 中完成是一个相当大的挑战.除了可以在中间阶段使用的方法之外,您还必须传递打开的连接并且需要打开/关闭连接和启动/提交事务的每个服务方法的特殊变体。不久之后,这将变得非常复杂并且是一个大泥球。
使用 EJB,您从另一个 EJB bean 中调用的 EJB bean 中的每个方法都会自动加入正在进行的事务,或者如果没有事务在进行中则启动它自己的。仅此一项就大大简化了典型网络应用程序执行的许多常见业务任务。
不要让任何人告诉您只有“企业应用程序”才需要事务,Web 应用程序不需要这个。这是不正确的。事务是做数据库操作时非常基本的东西,与主键或外键的基本要求相同。当执行一个订单的业务逻辑时(在网上商店),您肯定不希望您的库存被减少,但没有实际订单被发送,或者一个订单被发送但没有从您的客户账户中减去钱等等。最简单的业务逻辑通常涉及写入至少两个表,每次发生这种情况时,您最好使用事务。
但请确保您使用的是 EJB 3。远离与 EJB 2 相关的一切。甚至不要接触 home 接口(interface)或 Entity Beans 之类的东西,它们已经被弃用了大约 6 年。 (不要将 EJB 实体 Bean 与 JPA 实体混淆,尽管不幸的是名称相似,但它们是完全不同的。JPA 实体非常理智和有用)
关于java - 关于企业 Java session Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480863/
我一直在积极跟进 Blazor,现在我想从我的工作场所获取一个企业应用程序,并将其转换为 Blazor,并保持在企业的限制范围内。我有很多问题,但我会重点关注:在托管方面我应该从什么模型开始。 ASP
destoon实现首页显示供应、企业、资讯条数有多种方法,这里介绍的是直接调用php程序代码进行查询。destoon的模板里面是支持php的代码的,因此我们可以直接在模板里面查询出来即可。 实现代
我目前的任务是为软件开发创建一个文档化的、一致的架构指南。我们有很多聪明人在做正确的事情,但只是不一致和可重复。 我们使用 Microsoft 的应用程序架构指南 2.0 作为起点。因此,提出一个应用
我们正在使用 Zeek 以“连接日志”的形式从交换机收集网络流量。然后,连接日志通过 filebeat 存储在 Elasticsearch 索引中。每个连接日志都是一个包含以下字段的元组:(sourc
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足 Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以
我只是研究Corda enterprise,我在解压这个文件时下载了文件Corda enterprise3.zip,里面有很多文件jar。谁能帮我解释下corda enterprise的运行和使用方法
我的Apple开发者帐户中有一些有关InHouse App(企业)的预配配置文件。 如果删除那些配置文件,会有什么影响? 会影响已发布的应用程序吗? 删除它安全吗? 最佳答案 您可以删除它们: 已安装
我有一个要分发给公司员工的 iOS 应用程序。我知道为此我们需要考虑企业开发者帐户。我的疑问是我将如何分发构建。苹果是否提供企业商店?如果不是假设我通过 diawi.com 或类似的服务分发构建,将如
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
是否需要注册测试设备(UDID)?在标准程序中,每个用户设备 ID 都必须添加到开发程序中,并且构建必须使用包含 ID 列表的正确配置文件进行签名。它在企业程序中的样子如何。 最佳答案 在企业中,您不
我在 Sphinx 中已有两个数据源: source cities { ... sql_query = SELECT id, city_name, state_name, state_
我们的企业应用程序的生产 APNs 证书即将到期。 是否只是为我们的应用程序 ID 创建新的生产 APNs 证书并用我们的推送通知提供商替换即将过期的证书? 我是否需要重新捆绑和重新分发我们的企业应用
我有一个关于企业 Mac 应用程序分发的问题。我已经使用企业分发证书签署了我的 mac 应用程序,该证书有效期为 future 三年。 现在我的问题是,安装在 Mac 操作系统上的应用程序是否会在三年
我有一个只能在纽约使用的应用程序,它已经在试飞中发布。我可以将其切换到企业版吗? 最佳答案 没有“开关”,它们是两个完全不同的进程。您需要创建一个新的 Enterprise account ,创建企业
对于在供大量人员使用的大型程序中使用缓存,我还比较陌生。我知道什么是缓存以及为什么它总体上是有益的,并且我已经开始将 EHCache 集成到我使用 JSP 和 Spring MVC 的应用程序中。在我
我的应用程序 ID(MDM 应用程序)的企业 APNS 本周过期,不幸的是我没有注意到它。所以我提出了一个新请求,开始在 APP ID 中为 APNS 创建证书,然后完成请求。我可以在我的 App I
我的任务是切换框架并选择 EF 作为 ORM,但我一直在努力弄清楚如何做到这一点。我了解 N 层的基础知识,但在我们公司,我们支持 15 个以上的应用程序,我想了解我们是否应该为每个项目提供单独的 .
我正在设计一个 MySQL 数据库和一个相应的 RoR 应用程序,用于保存各种业务,每个业务都有一个地址。 此应用程序的要求是按城市/国家/地区搜索数据库(这将适用于整个欧洲/英国的企业)。搜索结果将
当使用“企业分发”选项为客户分发 iOS 应用程序时,该应用程序会下载并安装,但很快就会从主屏幕上消失。重新启动 iOS 设备后,它会重新出现。 最佳答案 在我的情况下,如果您在要保存 .ipa 文件
为了让您了解一些背景知识,我们有一个任何人都可以通过网络访问的软件应用程序。它是银行业和零售业的一个非常具体的应用程序。目前,此应用程序可在 Web 和“Windows 平板电脑信息亭”上访问,我们有
我是一名优秀的程序员,十分优秀!