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

标签 java swing layer multi-user code-separation

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

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

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

  2. 我可以考虑将我的用户界面与逻辑层分开......但我不知道该怎么做。当然我遵循MVC模型。我的问题是在每次访问应用程序时创建多个 gui 实例。

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

有人可以“指出”我正确的方向吗?我并不是在寻找具体的想法,而只是在寻找有关如何创建此多用户应用程序的想法。

最佳答案

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

其工作原理如下:

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

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

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

鉴于您已经有一个可用的应用程序,第二个选项可能更容易迁移到您。请注意其缺点:第一个选项总体上是一个更好的架构。

关于Java Swing - 单用户应用程序到多用户应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15036969/

相关文章:

java - 合并特定结构中的两个 JSON 文件

java - 如何在 Spring MVC 中正确使用多个 Controller

java - Apache CLI 参数和选项设置了吗?

java - 停止 JTable 仅在获得焦点并按下按键时才可编辑

java - 触发另一个类的方法

带 z-index 的 CSS 图层

java - 如何在 Java 中更改 XML 属性的一部分?

iphone - 为什么我不能访问此UITextView实例的.layer.borderWidth? (附加代码)

python - Keras 中二元分类的输出层

java - 更改 JTable 的背景颜色