2012-11-20 42 views
3

我工作的一个Swing GUI应用程序的远程数据库服务器的客户端应用程序通信是除其他事项外,作为一个数据库客户端读取和写入到MySQL数据库。 目前我使用JDBC实现了与数据库的交互(按照此处的指示:http://www.kitebird.com/articles/jdbc.html),它通过指定显式数据库主机名(IP地址)直接连接到数据库。与Java在互联网上

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

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

我能想到的两种方法是:

  1. 配置数据库服务器是通过互联网使用MySQL的默认端口(3306)上,然后我就可以继续连接到通过指定数据库服务器的IP地址,从GUI客户端应用程序获取数据库。

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

我怀疑正确的做法是第二个选项,使用web服务,但我没有在执行任何的经验。

所以我的底线的问题是:

什么是实现与数据库在互联网通信的正确方法,如果涉及到使用Web服务,我应该在哪里开始呢?什么是用于实现这些事情的通用库或框架?

非常感谢的人谁有耐心看完这一切。

+1

最好的办法是在数据库所在的同一本地网络上运行REST服务。 –

+0

[here](http://stackoverflow.com/questions/9065125/how-to-access-a-remote-mysql-database-using-java)你会找到一些关于哪一个最好的答案。 – Vinay

+0

谢谢你俩的评论。维尼感谢您的链接,我会从那里学习材料。 – Rony

回答

0

听起来像是一个很大的任务,我不确定是否有任何简单的答案。你当然应该而不是暴露连接到您的数据库到互联网,因为这将是潜在的攻击者的强大载体。

Web服务将是一个非常好的解决方案。 RESTful web服务的Java标准是 JCR(JSR-170),其参考实现是Apache Jackrabbit(http://jackrabbit.apache.org/)。它非常容易设置,并有各种选项来保证这种服务。

编辑:没问题!我的意思是JAX-RS和Jersey(http://jersey.java.net/)。抱歉!

+0

非常感谢您的回答。我会考虑泽西岛。 – Rony

0

最简单的解决办法是建立一个VPN允许远程客户端连接到同一个数据库。这需要考虑安全性和基础设施方面的考虑因素,并且不需要更改应用程序。

的基于服务的方法是第二喜欢的 - 它是应用程序的一个根本上重新建造,通常带来了很多棘手的性能和可扩展性的问题。我建议阅读Martin Fowler的企业集成模式以获得推荐 - 这是一个更为复杂的问题,您可以期望回答这个问题。

不要打开你的MySQL数据库到更广泛的互联网 - 安全风险太大了。

+0

非常感谢您的回答。直到现在我还没有想到VPN。肯定会研究这个选项。 – Rony