将桌面应用程序连接到应用程序服务器

时间:2013-05-14 10:06:26

标签: java web-applications desktop-application

关于如何连接需要从数据库读写的Desktop Java应用程序,我遇到了设计问题。两种方法中哪一种更好?

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

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

  3. 你能告诉我还有其他解决方案吗?

6 个答案:

答案 0 :(得分:3)

最好的选择是使用EJB Server。

使用所有crud方法创建EJB Inteface(保存,删除,更新等)。

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

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

〜我希望有所帮助。

答案 1 :(得分:2)

有很多方法可以解决这个问题。如果不了解您的应用程序及其要求,就不可能推荐其中一个。

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

答案 2 :(得分:1)

另一个选择是在应用程序服务器上托管具有所有CRUD操作的Web服务。这使得它在客户端实现方面更具可移植性。

答案 3 :(得分:1)

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

我已经做了与我描述的相同的事情,工作非常精细,并且非常简单,因为我使用反射与泛型一起执行正确的查询。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

执行SQL查询的责任应仅提供给应用程序服务器。应将所有智能传输到应用程序服务器。

如前面的答案中所述,这可以通过使用EJBweb services来完成(性能应该稍微低一点,但这样你就可以与任何其他系统进行交互,即使是使用网络客户端) RMI

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