【问题标题】:Connect desktop application with application server and Database将桌面应用程序与应用程序服务器和数据库连接起来
【发布时间】:2013-05-08 13:37:29
【问题描述】:

我有一个关于如何连接需要从数据库读取和写入的桌面 Java 应用程序的设计问题。这两种方法哪一种更好?

  1. 使用 JDBC 驱动程序通过网络将桌面 Java 应用程序直接连接到数据库。这是一个非常糟糕的主意,因为如果安全但很容易直接编写 SQL 查询并执行它们。

  2. 将 Java 桌面应用程序连接到将连接到数据库的应用程序服务器。在这种情况下,我将如何进行 SQL 查询?我需要某种隧道来传输查询并返回输出。这种方法非常安全,但响应时间会很长。

您能告诉我还有其他解决方案吗?

【问题讨论】:

    标签: java web-applications desktop-application


    【解决方案1】:

    最好的选择是使用 EJB 服务器。

    使用所有 crud 方法(保存、删除、更新等)创建一个 EJB 接口。

    在服务器上创建一个 EJB 实现(Jboss/GlassFish)。

    服务器启动并运行后,只需将 Interface Jar 文件复制到您的应用程序(java Swing App)并使用 JNDI,您就可以调用所有的 crud 操作。

    ~希望对你有帮助。

    【讨论】:

    • 我同意。在某些情况下,这可能有点过大,但通常这也是一个不错的选择。
    • 是的,我同意你的观点@desperateCoder,但它的解决方案非常强大。
    • 嗨 Makky,我也对这个话题很感兴趣。我看到您说的是:“服务器启动并运行后,只需将 Interface Jar 文件复制到您的应用程序(java Swing App)并使用 JNDI,您就可以调用所有的 crud 操作。”但我也有点困惑,例如,如果我的应用程序客户端运行在另一台机器上,而我的应用程序服务器运行 EJB 实现,它们如何通信?如果它们在同一个项目结构中,那么我们可以轻松地复制接口 jar 文件,但是如果它们在不同的环境中呢?
    【解决方案2】:

    有很多方法可以解决这个问题。在不了解您的应用程序及其要求的情况下,无法推荐其中一种。

    想到的方法是例如EJB、SOAP、REST、JDBC/JPA/Hibernate、RMI。

    【讨论】:

      【解决方案3】:

      另一种选择是在应用服务器上托管一个包含所有 CRUD 操作的 web 服务。这使其在客户端实现方面更具可移植性。

      【讨论】:

        【解决方案4】:

        我完全同意,一个公共数据库被黑客入侵了!但为什么它必须是应用程序服务器?您的应用程序的轻量级服务器组件也可以解决问题吗?你甚至可以通过网络发送对象 (ObjectOutputStream)

        我已经按照我的描述做了同样的事情,工作得非常好,而且超级简单,因为我结合使用反射和泛型来执行正确的查询。

        【讨论】:

          【解决方案5】:

          您的应用程序服务器正在公开可以为您提供连接对象的数据源(更多信息:http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html)。您的应用和数据库之间的连接将是直接的,因此不会影响性能。

          【讨论】:

          • 能否请您给我一些更多信息,我如何使用准备好的语句来做到这一点?
          【解决方案6】:

          执行 SQL 查询的责任应该只交给应用程序服务器。所有的情报都应该转移到应用服务器上。

          如前面的答案中所述,这可以通过使用EJBweb services(性能应该稍低,但这样您可以与任何其他系统交互,甚至使用 Web 客户端)和RMI 来完成。

          还请考虑Spring给出的解决方案。

          【讨论】:

            猜你喜欢
            • 2011-10-10
            • 2016-06-22
            • 2019-03-10
            • 2013-08-03
            • 1970-01-01
            • 1970-01-01
            • 2022-06-14
            • 2017-09-14
            • 1970-01-01
            相关资源
            最近更新 更多