使用远程Origin从网络驱动器启动JAR文件



我在Javafx中实现了一个应用程序,它将迁移到Web平台,但要花一些时间。

同时,我在用途方面遇到一些问题。一些用户需要从网络驱动器启动JAR,因为他们的计算机无法访问数据库。只有jar所在的驱动器才能访问数据库。

我的疑问是从允许的网络驱动器运行罐子是否会解决此问题。另外,JNLP可以成为解决方案吗?

我会感谢任何帮助。

有些用户需要从网络驱动器启动JAR,因为他们的计算机无法访问数据库。只有JAR所在的驱动器才能访问数据库。我的疑问是,从允许的网络驱动器中运行罐子是否会解决此问题。

它不会直接工作。

Javafx是一种客户端技术,它在客户端PC上运行。如果客户端PC无法直接访问数据库,则在该客户端PC上运行的Javafx应用程序也不会。

此外,JNLP可以成为解决方案吗?

no,如果不允许在网络体系结构中允许使用该数据库,则不要直接访问数据库,除了基于JNLP的客户端以外,您还需要一个中间层。


讨论此问题的某些解决方案

通常,您所描述的内容将被构建为多层应用程序。

  1. 客户端层,即在客户端计算机上运行的JAVAFX应用程序或HTML JavaScript应用程序。
  2. 处理服务器逻辑的应用程序服务器层。
  3. 托管DBM的数据库层。

这里有合理的高级概述。

通常,如今,应用程序服务器将提供JSON数据的REST API,基于HTML的JavaScript Web应用程序可以轻松消耗它们。使用嵌入REST客户端的JAVAFX应用程序也很容易消耗此类API。应用程序服务器服务REST API并符合JPA或JDBC的数据库进行通信。但是,与客户/服务器通信的许多替代技术相比,您可以选择自己认为适合您的应用程序,开发风格和组织的任何东西。

春季产品特定讨论

当您陈述使用Spring的偏爱时,请考虑Javafx Springboot应用程序。

Spring还包括一项称为Spring远程的技术,用于促进客户端/服务器访问。春季远程提供了多种通信技术。我建议坚持基于HTTP REST的直接技术,而不是其他技术,例如RMI或AMQP作为基于HTTP REST的后端,也可以作为标准HTML/JavaScript Web应用的后端您的应用程序的目标客户端。

如果在客户端和服务器上使用Spring,请签出Spring的AsyncrestTemplate,并在REST模板的成功和失败回调中调用Javafx的平台。或者,通过Javafx并发机制使用Spring Resttemplate并控制服务器。不确定哪个最适合您,可能是包裹在Javafx任务中的标准resttemplate。

以正确的方式执行此操作将允许您的应用程序在执行网络活动时保持响应速度(而不是阻止UI线程),并且还确保您不违反Javafx线程规则(不要访问控制或修改数据绑定到Javafx场景控制Javafx应用程序线程)。

最新更新