【问题标题】:Java RMI deploymentJava RMI 部署
【发布时间】:2013-01-12 14:37:32
【问题描述】:

我正在尝试开发一个 3 层架构的分布式 Java 应用程序。

  1. 数据库服务器
  2. 应用服务器
  3. 瘦客户端 Swing 应用程序

我以前没有开发过这种类型的应用程序。我正在考虑使用 java RMI 在应用程序服务器和瘦客户端应用程序之间进行通信。另外我会使用 Hibernate 框架作为 ORM 工具。

我的问题是,部署这样的应用程序需要哪些组件。

  1. 我是否需要某种服务器,例如 Tomcat 或 Glassfish?
  2. 如何在此类应用程序中实现 MVC 模型?

【问题讨论】:

    标签: java model-view-controller tomcat glassfish 3-tier


    【解决方案1】:

    相当大的问题,没有一个真正的答案。您确实需要确定正在构建的应用程序的需求是什么。

    就 RMI 而言,您需要一个提供 RMI 主机的服务器进程。 Glassfish 为您提供了一个。但是,如果您使用 glassfish,您可能希望使用 JPA / EJB3 作为持久层。这只是甲骨文为开源世界重新标记的 TopLink。

    我不确定 Tomcat 是否带有 RMI 层,尽管自从我愤怒地为 Tomcat 开发以来已经有一段时间了。它首先是一个 servlet 引擎。如果您正在查看客户端和服务器之间的 REST 接口,那将是一个不错的选择(尽管 Glassfish 也提供了一个 servlet 引擎)。

    如果您真的想使用 Hibernate 并且希望 RMI 作为客户端和服务器之间的传输,请不要低估 Spring。它将具有 RMI 服务器引擎,您可以在其中定义调用 Hibernate 的 Spring bean。不需要应用服务器(除了 Spring 提供的。

    就 MVC 而言,从客户端的角度来看,您让 Swing 处理视图,而本机 Java 实现模型和控制器。在这种情况下,模型将是由 RMI 服务器组件公开的服务提供的 DTO。我认为Hibernate将仅限于Server进程,并且Services中几乎没有View。客户端代码中的模型将是 DTO 和将 RPC 发送到服务的周围框架。

    希望对你有帮助

    【讨论】:

    • 非常感谢您的想法,实际上我正在开发一个非常类似于库存管理应用程序的应用程序,其中库存将被许多具有摆动 UI 的用户访问。而且我了解hibernate和RMI,但不了解Spring,而且我完成该项目的时间非常有限。开发这个应用程序比不使用 Spring 开发更值得学习 Spring 吗?
    • 无论如何,按照你所知道的去做,尤其是在时间有限的情况下。你不需要学习所有的 Spring。我将专注于他们的 RmiServiceExporter (static.springsource.org/spring/docs/2.0.x/reference/…),这只是将 Java 对象绑定到可公开访问的 RMI 服务的一种简单方法。您可以根据需要使用尽可能多或尽可能少的 Spring Bean 功能。也就是说,它很容易上手,一旦你开始使用它,你可能不会回头。
    • 更具体地说,GlassFish Open Source Edition 捆绑了 EclipseLink,而 Oracle GlassFish Server 捆绑了 TopLink。我 100% 同意不使用 Hibernate 除非有特定的理由这样做。所有使用 JPA 的质量测试都使用 EclipseLink 来完成。一种方法是使用 REST API,并在 Apache Jackson 的帮助下传递 JSON 数据。 JSON 解析将在 Java EE 7 中提供,JSON 绑定将在稍后推出,因此您甚至不需要 Jackson。使用 REST 比 RMI 对防火墙更友好。
    • @EdH 感谢您向我介绍 Spring。我现在完全沉迷于春天。 :-D
    • 不用担心。令人印象深刻的是,您需要了解多少 Spring 才能开始。您可以随时构建它,但它是开始使用的绝佳工具。玩得开心。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2017-01-19
    • 2011-07-26
    相关资源
    最近更新 更多