java - 部署多层应用程序

标签 java deployment jakarta-ee glassfish multi-tier

我想构建和部署我的第一个 Java EE 6 多层应用程序,其中 Web 层和业务层在 Glassfish 3.1 上的单独物理服务器上运行。

我认为我从理论的高层次角度理解需要什么,但不清楚具体细节和小细节。

我目前的计划如下:

  • 在 NetBeans 7 中创建 Maven 企业应用程序。
  • 通过远程接口(interface)公开 session 外观 EJB。
  • 让 JSF Backing Bean 通过 JNDI 查找利用 session Facade EJB。
  • 将 EJB JAR 部署到一台服务器,将 Web WAR 部署到另一台服务器。

我真的很感激一些关于以下方面的指示:

  • 应用结构。
  • 使用单独的服务器更正 JNDI 查找。可以注入(inject)吗?
  • 建立适当的文件。
  • 允许各层进行通信的部署配置。

最佳答案

除非您知道每秒将处理许多请求,或者拥有大量数据和/或 CPU 密集型业务逻辑,否则您应该完全可以通过在同一应用程序服务器上部署两层来开始。首先使用本地接口(interface)部署到单个 Glassfish 应用程序服务器,这样您就可以跳过运行时环境中的许多复杂性。

这反过来将允许您在 Web 层中使用最简单形式的 @EJB 注入(inject)来访问业务层中的 session 外观。本地接口(interface)速度更快,因为应用程序服务器可以在层之间传递引用而不是 RMI 代理,并且它允许您跳过 JNDI 查找。您可以随时更改注释,或者如果您后来发现其他原因需要在单独的服务器上部署层,则可以引入远程接口(interface)。

Glassfish 支持集群,因此您可能永远不需要显式分离这两层 - 这完全取决于实际的使用模式,因此性能监控是关键。

将 Web 层部署为 WAR,将业务逻辑部署为 EJB jar 是正确的做法。根据应用程序的大小和逻辑结构,您可能希望将其分解为多个模块。

Maven 负责构建文件。确保为每个 war 和 jar 存档定义一个子项目,以及一个用于组装 EAR 文件的子项目。后一个项目将引入其他子项目生成的 war 和 jar 文件。将所有项目与主 Maven 项目串在一起,瞧,您可以灵活地单独构建每个组件、构建整个项目或两者之间的任何组合。

关于java - 部署多层应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153273/

相关文章:

java - 类不是使用 maven-jaxb2-plugin 从 xsd 生成的吗?

java - ListView Viewholder 复选框状态

immutability - 不可变 JDK 类的完整列表?

sql-server - 如何从 VS 2012 数据库项目创建部署脚本?

java - 为什么依赖注入(inject)仅适用于 Jersey 的资源类

Java Socks5 外部应用程序

database-design - 实现大型系统更改

java - 如何在 Spring Boot 上部署时读取静态文件

java - Spring 4 和 Java 8 无效字节标记异常

java - 这些库中哪些是标准 J2EE