使用 JavaEE 6 WAR 与 EAR 封装 EJB

2024-04-15

开始一个新项目,想了解在 WAR 与 EAR 中打包 EJB 的优缺点。

当 EJB 处于 WAR 状态时,JNDI 是否仍然有效?效率? ETC。?

Thanks.


将 EJB bean 放在单独的 JAR 中的一个重要动机是为了古老的分离商业逻辑 and 查看逻辑.

由于 EJB 应该只关注业务逻辑,因此将它们放入单独的模块中是有意义的。

这正是传统 Java Enterprise Archive 所提供的便利。 EJB bean 进入一个 JAR 文件,该文件代表EJB module,而与 Web 相关的工件(Facelets、支持 Bean、实用程序代码)则进入 Web 存档 (WAR) 文件,该文件代表Web module。请注意,WAR 实际上不一定是文件。在所谓的分解格式中,它们只是目录。

这种分离的一个关键方面是这两个模块是isolated通过类加载器层次结构。这Web module可以访问来自的资源(通常是bean)EJB module,以及EJB module可以引用整个 EAR 保护伞中定义的资源(通常是库)。其他方向是不可能的。具体来说,EJB module无法访问中定义的任何资源Web module.

这种强制执行是经过深思熟虑的。

业务逻辑应该完全独立于任何视图技术。强制执行这种隔离可以防止开发人员意外地或在压力下混合这些问题。这种分离的好处是业务逻辑可以被其他 Java SE 客户端、Web 模块客户端、JAX-RS 客户端等轻松使用。如果业务逻辑意外地具有 JSF 或 Servlet 依赖项,那么将很难使用它来自 Java SE 客户端。

将此与不允许使用 scriptlet 的 Facelets 进行比较。这使 Facelets 保持干净,并让它们专注于组件布局和标记。另一个类比是接口编码,它将契约与实现分开。

因此,拥有一个单独的 EJB 模块实际上是最佳实践。然而...

对于较小的项目,可能没有必要进行这种分离,而对于初学者来说,可能很难理解什么需要放在哪里的结构。因此,取消强制分离可以让没有经验的开发人员更轻松地开始使用 Java EE。它向他们简要介绍了 Java EE,随后他们get分层的想法,然后他们可以选择引入EJB module anyway.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaEE 6 WAR 与 EAR 封装 EJB 的相关文章

  • 在休眠标准中使用总和和算术结果作为顺序键

    我如何在休眠条件中表达这个查询 SELECT anId SUM fieldA AS A SUM fieldB AS B SUM fieldA SUM fieldB AS total FROM tableA GROUP BY anId ORD
  • JPA Criteria查询Path.get left join是否可以

    我对 JPA 标准有疑问 这是我的 JPA 标准查询 CriteriaBuilder criteriaBuilder getEm getCriteriaBuilder CriteriaQuery
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 需要 Spring 3 JSF 2 集成示例

    我想将 Spring 3 Web Flow 2 JSF 2 集成在一起 我需要您向我推荐一个好的教程或示例 提前致谢 UPDATE 我使用了以下示例 它对我来说运行良好 没有任何问题 http www mkyong com jsf2 jsf
  • JSF - 实施受限页面过滤器

    我正在关注 BalusC 的回答JSF 2 0 如何获取在浏览器地址栏中输入的 URL https stackoverflow com questions 4105263 jsf 2 0 how to get the url that is
  • 丰富:数据表行跨度问题

    我需要创建一个 rich dataTable 甚至扩展 具有以下功能 我有一个公司类 其中包含产品对象的集合 我想展示下表 我仍然没有弄清楚如何使用子表执行此操作 在所有示例中 我发现子表具有与主表完全相同的列 据推测 我需要在前两列中使用
  • “纯”MVC 实现有多大用处?

    我在一家提供类似 CRM 的定制软件的公司工作 我们目前正在重新设计 重新开发该软件 希望它看起来更现代 并且更容易为未来的客户开发和定制 目前 定制每个新应用程序都需要很长时间 有一种假设是 花费这么长时间的原因是 视图 层中存在大量业务
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • jsf文件下载不起作用

    当我点击h commandButton它执行myBean dowanlod 方法 但它不下载任何文件 这是我在支持 bean 中的方法 没有例外 光标变得忙碌 似乎在等待响应 对于这种操作是否有任何额外的配置或者这段代码有什么问题吗
  • 如何为用户的活动设置计时器?

    如果用户在 5 小时内停止工作 我需要执行特定的方法 假设用户已登录 但他在 5 小时内没有向数据库的特定表添加任何记录 任何时候用户将记录添加到指定的表中 该特定用户的计时器都应该重置 否则它将继续运行 如果达到 5 小时 应用程序应显示
  • 会话超时(session.setMaxInactiveInterval)在 Google Appengine 中不起作用

    我尝试使用以下命令为特定用户设置会话超时session setMaxInactiveInterval 30 60 30分钟 但默认情况下它被分配为 86400 秒 24 小时 也在 Web xml 中尝试过
  • 在带有 RequestScope 的 ManagedBean 中使用有状态 EJB 时出现问题

    我在 Glassfish v3 应用程序服务器中使用 JSF 2 0 和 EJB 3 1 我实际上面临以下问题 在带有 RequestScope 的 MengedBean 中 我想访问一个会话对象 带有 Stateful 的 EJB 它应该
  • 请求调度概念的包含和转发机制之间的区别?

    Forward 这可以通过 Request 两种方式完成 ServeletContext 将请求从 servlet 转发到另一个资源 servlet JSP 文件或 HTML 文件 在服务器上 转发完成于 服务器端 在客户端不知情的情况下
  • 仅使用 ServletContext 查找应用程序的 URL

    我正在使用 Spring MVC 编写一个 Java Web 应用程序 我有一个后台进程 它会遍历数据库并查找必须通过电子邮件发送给我的用户的通知 这些电子邮件需要包含应用程序的超链接 对于网络应用程序来说 这似乎是相当常见的模式 但我遇到
  • CDI 和 EJB 相比如何?相互影响?

    我很难理解两者如何相互作用以及它们之间的界限在哪里 它们重叠吗 他们之间有裁员吗 我知道两者都有相关的注释 但我无法找到两者的完整列表和简短描述 不确定这是否有助于澄清它们的不同之处或重叠之处 真的只是很困惑 我 认为我 对 EJB 相当了
  • 自定义 JSP 标记 - 检测其他实例的存在

    自定义 JSP 标记是否可以检测页面中是否存在其自身的其他实例 如果是这样 首选的方法是什么 我的标签的输出需要有条件地取决于它是否是唯一的实例 请注意 我的页面出现了三次标签 其中两个具有与第三个不同的属性集 因此我知道从资源池分配了两个
  • Gradle:找不到提供的方法()(组)

    为什么Gradle找不到方法provided当这是语法时指定的 https mvnrepository com artifact javax javaee api 7 0通过马文 thufir doge NetBeansProjects g
  • JPA:如何在不加载延迟加载集的情况下计算子记录数

    我正在编写一个 J2EE JPA Spring 3 应用程序 试图保持纯粹的 JPA 2 0 我想获得子对象的计数而不必加载它们 因为这显然是一个昂贵的操作 例如 这是一个简化的示例 Organisation OrgID OrgName E
  • Spring Security 3.0 中 security-role-ref 和 role-link 的等效项是什么?

    我正在将带有 web xml 安全约束 安全角色和登录配置的标准 Web 应用程序移植到 Spring Security 3 0 我在 web xml 中找到了几乎所有功能的等效映射 security role ref 元素除外 我不想指定
  • Maven 中的 Java EE 7 First Cup 教程错误:找不到工件 org.glassfish.javaeetutorial.firstcup:firstcup:pom:7.0.1-SNAPSHOT

    我正在关注 FirstCup 的 Java EE 7 更新版本 我安装了 glassfish 4 并使用 NetBeans 7 3 我正在研究第一个示例 但遇到了 Maven 问题 我生成了原型并能够创建 dukes age 项目 然而它有

随机推荐