Java Swing - 单用户应用程序到多用户应用程序

时间:2013-02-23 04:10:09

标签: java swing layer multi-user code-separation

我是新手......我有一个Java Swing应用程序,它在我的机器上运行良好。我想通过Citrix从服务器访问此应用程序。因此,当我单击已发布的图标时,它将在jar文件中运行main方法,并使我能够访问该应用程序。此应用程序将能够访问数据库服务器中的数据库。

但我希望mutliple用户同时访问该应用程序,这就是我的问题所在:

  1. 我想为n个用户创建n个可用的线程(即)我可以设置并发访问的限制。但是什么是切入点.....我的意思是当我点击发布的图标时,它意味着每次调用主方法。

  2. 我可以想到从逻辑层分离我的用户界面....但我不知道该怎么做。当然我正在关注MVC模型。我的问题是每次访问应用程序时创建gui的多个实例。

  3. 最后我想使用数据库连接池。那么,这是否意味着我必须创建一个单独的java程序来创建这个池,我的应用程序将使用它的数据源?

  4. 任何人都可以'指出'我正确的方向吗?我不是在寻找具体的想法,而只是关于如何创建这个多用户应用程序的想法。

1 个答案:

答案 0 :(得分:5)

通常,对于多用户Swing应用程序,您需要将应用程序的“客户端”部分与“服务器”应用程序分开。

其工作原理如下:

  • 每个用户都将获得自己的客户端应用程序运行实例。这可以在他们自己的机器上。
  • 服务器应用程序是一个单个实例(或者可能是一个集群),它接受来自多个客户端的连接并与数据库进行通信
  • 客户端应用程序在需要访问或更改数据时与服务器应用程序通信。您可以使用各种不同的通信方法。
  • 可选地,服务器应用程序可以向客户端发送通知(例如,在数据由另一个客户端更新的情况下)

如果您乐意让客户端连接到同一个数据库,则可以不使用服务器应用程序。这样设置起来比较简单,但有一些缺点:

  • 您需要更加小心地尝试同时访问数据库/来自尝试同时更改相同数据的不同客户端的潜在损坏。
  • 您需要允许从可能不受信任的客户端连接到您的数据库。这是一种安全风险。

鉴于您已经拥有一个正在运行的应用程序,第二个选项可能更容易移动到。请注意缺点:第一种选择通常是更好的架构。