【问题标题】:Java client application communication with a remote database server over the internetJava 客户端应用程序通过 Internet 与远程数据库服务器通信
【发布时间】:2012-11-08 08:43:28
【问题描述】:

我正在开发一个 Swing GUI 应用程序,除其他外,它充当数据库客户端,可读取和写入 MySQL 数据库。 目前我使用JDBC实现了与数据库的交互(如下所示:http://www.kitebird.com/articles/jdbc.html),它通过指定显式数据库主机名(IP地址)直接连接到数据库。

只要我在作为组织本地网络的一部分的 PC 上运行 GUI 客户端应用程序就可以正常工作,因此我可以通过指定部署它的机器的 IP 地址来访问 MySQL 数据库。

但我想知道如果 GUI 客户端应用程序要在组织网络之外的计算机上运行(通过 Internet 通信),那么实现与数据库交互的正确方法是什么?

我能想到的两种方法是:

  1. 将数据库服务器计算机配置为可通过 Internet 在 MySQL 的默认端口 (3306) 上使用,然后我将能够通过指定数据库服务器的 IP 地址继续从 GUI 客户端应用程序连接到数据库。

  2. 创建一个 Web 服务(可能基于 REST API),它将在数据库服务器计算机上运行,​​并充当 GUI 客户端和 MySQL 数据库之间的中间人。

我怀疑正确的方法是第二种选择,使用网络服务,但我没有任何实施经验。

所以我的底线问题是:

通过 Internet 与数据库进行通信的正确方法是什么?如果涉及使用 Web 服务,我应该从哪里开始?用于实现此类事情的常用库或框架有哪些?

非常感谢有耐心阅读所有内容的人。

【问题讨论】:

  • 最好的办法是在与 DB 相同的本地网络上运行 REST 服务。
  • here 你会找到一些关于哪个最好的答案。

标签: java mysql database web-services client-server


【解决方案1】:

最简单的解决方案是设置一个 VPN,允许您的远程客户端连接到同一个数据库。这会考虑到安全性和基础架构方面的考虑,并且不需要对您的应用程序进行任何更改。

基于服务的方法是第二受欢迎的方法 - 它是对应用程序的基本重新构建,通常会带来许多棘手的性能和可扩展性问题。我建议阅读 Martin Fowler 的企业集成模式以获取建议 - 这是一个更复杂的问题,您可以期望在 SO 上回答。

不要向更广泛的互联网开放您的 MySQL 数据库 - 安全风险太大了。

【讨论】:

    【解决方案2】:

    听起来是一项艰巨的任务,我不确定是否有任何简单的答案。您当然应该将与您的数据库的连接暴露到 Internet,因为这将成为潜在攻击者的强大媒介。

    Web 服务将是一个很好的解决方案。 RESTful Web 服务的 Java 标准是 JCR (JSR-170),其参考实现是 Apache Jackrabbit (http://jackrabbit.apache.org/)。它很容易设置,并且有多种选项可以保护此类服务。

    编辑:没有错!我的意思是 JAX-RS 和 Jersey (http://jersey.java.net/)。对不起!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多