【问题标题】:Java Swing - Single user application to a Multi user applicationJava Swing - 单用户应用程序到多用户应用程序
【发布时间】:2013-02-08 19:49:10
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 数据库是唯一的共享资源吗?如果是这样,我认为允许每个用户拥有自己的 Java 进程会更简单。
  • @Michael....是的,数据库是唯一的共享资源。什么是java进程?

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


【解决方案1】:

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

它的工作原理如下:

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

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

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

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

【讨论】:

  • @mikera...1) 所以如果我使用客户端-服务器模型,它基本上是在服务器中运行 2 个 java 程序,然后运行尽可能多的客户端? 2)我将如何保持我的服务器端程序运行?我需要将其作为服务运行吗? 3)我不知道我的客户将如何呼叫/与服务器交谈。能否给我一个客户端要求的代码示例,以指定服务器 URL,然后提交请求的信息?
  • 1) 它是服务器的一个正在运行的程序,每个客户端都有一个额外的程序 2) 您可以将其设为服务,或者只是编写脚本以在服务器启动时启动 3) 超出问题范围...也许看看 Netty 和/或 kryonet 的库和示例
猜你喜欢
  • 2012-03-21
  • 1970-01-01
  • 2018-04-23
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多