如何使我的Java Swing应用程序成为客户端 - 服务器应用程序?

时间:2010-05-06 19:19:43

标签: java swing networking client-server distributed-system

我制作了一个Java Swing应用程序。现在我想把它变成一个Client-Server应用程序。当服务器上的数据发生变化时,应通知所有客户端,因此我不会寻找Web服务。 Client-Server应用程序将在单个LAN上运行,它是一个业务应用程序。服务器将包含一个数据库JavaDB。

哪种技术和库最容易入手?我应该使用套接字从头开始实现它,还是应该使用Java RMI,或者JMS?或者还有其他更容易入手的替代方案吗?

我应该使用任何服务器库吗? Jetty是替代品吗?

5 个答案:

答案 0 :(得分:3)

鉴于您已经拥有该应用程序,或许最简单的方法是确定客户端和服务器之间所需的接口,并首先重构您的应用程序以使用该接口在后端之间进行通信/ front-end 在同一进程中

然后你就可以把它分开了。一个简单的解决方案是使用RMI将它拆分(因为你正在谈论Java对象并且有Java方法调用)。 Spring包含有用的工具来简化/自动化接口的RMI暴露。

对于通知要求,简单的UDP多播(或广播)就足够了。

请注意,只要您将应用程序拆分,就会出现问题。维护一致的数据视图,管理及时更新,处理服务器停机时的情况,当您获得大量客户端时可能出现加载问题等等。从某种意义上说,将应用程序拆分为客户端和服务器只是新架构的开始过程

答案 1 :(得分:2)

这是J2EE所做的大部分工作,但它是一个全新的学习曲线,因为它们已经预先解决了许多你将遇到的问题,而且许多你可能没有,因此增加了许多新技术。

但在最基本的情况下,J2EE只回答了这个问题。

答案 2 :(得分:2)

Mina 是用于构建简单服务器的网络应用程序框架的理想选择 - 它比使用原始套接字更好。

http://mina.apache.org/

如果你真的需要一个应用服务器,那么你可以看看 JBoss 。它还提供了远程组件(作为Mina之类的替代品):

http://www.jboss.org/jbossremoting

尽管如此,您可能不需要 Enterprise Java Beans 。在大多数情况下,基于 POJO 的简单框架绰绰有余 - 您可以将其与依赖注入框架(例如 Guice )完全联系起来:

http://code.google.com/p/google-guice/

春天。保持简单,除非确实需要,否则不要使用J2EE服务器。希望有所帮助。

答案 3 :(得分:1)

我在这样的项目中工作过。我们使用J2EE实现了客户端Swing和服务器端。我们使用了EJB,无状态bean和Message Driven Beans。我也一直在设备跟踪,管理项目中。我们的客户是卡车+ Swing用户,我们使用了Servets + TCP / UDP,Apache Mina框架来处理和保持连接。

答案 4 :(得分:0)

我已经在Java Swing客户端/服务器应用程序中工作了近3年。我建议你去寻找RMI / EJB。我们开发的初始应用程序使用RMI / EJB进行客户端 - 服务器通信,WebLogic作为服务器。

但我们后来发现应用程序中包含了许多类似浏览器的功能,例如会话超时等。所以,我们使用BrightSide框架来包装RMI调用HTTP。我们提出的另一个改进是我们用开源JBoss服务器取代了Weblogic。

使用HTTP包装调用将变得非常方便,您可以使您的挥杆应用程序真正丰富。之后,当情况要求您严格使用网站时,您可以使用jnlp部署您的挥杆。

希望这会有所帮助。