我正在尝试开发一个 3 层架构的分布式 Java 应用程序。
- 数据库服务器
- 应用服务器
- 瘦客户端 Swing 应用程序
我以前没有开发过这种类型的应用程序。我正在考虑使用 java RMI 在应用程序服务器和瘦客户端应用程序之间进行通信。此外,我将使用 Hibernate 框架作为 ORM 工具。
我的问题是,部署这样一个应用程序需要哪些组件。
- 我是否需要某种服务器,例如 Tomcat 或 Glassfish?
- 如何在此类应用程序中实现 MVC 模型?
最佳答案
相当大的问题,没有真正的唯一答案。您确实需要确定正在构建的应用的需求是什么。
就 RMI 而言,您需要一个提供 RMI 主机的服务器进程。 Glassfish 为您提供了一个。但是,如果您使用的是 glassfish,您可能希望使用 JPA/EJB3 作为持久层。这只是为 OpenSource 世界重新标记了 Oracle 的 TopLink。
我不确定Tomcat是否带有RMI层,虽然我为Tomcat开发已经有点生气了。它首先是一个 servlet 引擎。如果您正在寻找客户端和服务器之间的 REST 接口(interface),那将是一个不错的选择(尽管 Glassfish 也提供了一个 servlet 引擎)。
如果您真的想使用 Hibernate 并且希望 RMI 作为客户端和服务器之间的传输,请不要小看 Spring。它将具有 RMI 服务器引擎,您可以在其中定义调用 Hibernate 的 Spring bean。不需要应用服务器(Spring 提供的除外。
就 MVC 而言,从客户端的角度来看,您有 Swing 处理 View ,而 native Java 实现模型和 Controller 。在这种情况下,模型将是由 RMI 服务器组件公开的服务提供的 DTO。我会认为 Hibernate 会局限于 Server 进程,Services 中几乎没有 View。客户端代码中的模型将是 DTO 和使 RPC 成为服务的周围框架。
希望对你有帮助
关于Java RMI 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575891/