1

我有一个要求,当用户单击网页上的链接 [这是一个内部网页] 时,需要执行部署到客户端的 jar。详细地说,我有一个提供有关多个产品的详细信息的网页,现在当个别产品所有者单击他们的产品时,需要执行产品特定的 jar 来打开 Swing UI。

我已经对此进行了分析,由于从客户端运行 EXE 的安全原因,没有一个库框架允许这样做。

我建议使用小程序执行此操作,但人们并不热衷于此。

编辑:排除小程序的原因是人们不热衷于在服务器上部署 jar。他们想在客户端部署 jar 然后执行它。

编辑:不热衷于下载 jar 的原因是:

  1. Jar 很大,在某些情况下大约 100 mb。
  2. 如果必须将 jar 部署到 Web 服务器上,则会添加一个依赖项,该依赖项是产品想要避免的,因为它们不想与 Web 应用程序的发布周期同步。

是否有任何选项可以在某些检查下执行客户端代码?例如:将特定 IP 地址设置为安全的,以便通过安全检查。

4

2 回答 2

2

Java Web Start可能是这种部署的方式。

人们不想下载 jar 的问题,他们希望执行预安装的 jar

关键是“用户”不会下载 Jar,而是由运行用户单击的启动文件的 JWS 客户端以不可见的方式完成的。试试我的JWS 版本的 GIFanim作为体验示例。

请注意,即使该应用程序。是沙盒的,到屏幕前还有提示。从版本 1.7.0_21 开始,这些提示适用于小程序和 JWS 应用程序。


最终,没有办法运行基于 Swing 的应用程序。在下载 Jar 之前。例如:-

  1. 用户下载可执行 Jar 并运行它。他们需要在很明显正在下载 Jar 的情况下下载 Jar。
  2. 小程序。applet当元素(或等价物)出现在网页中时,将调用 JVM 。JVM 将下载并缓存 Jar - 对用户来说相对不可见,除了小程序中的“正在加载..”进度条。
  3. Java 网络启动。当用户单击 JNLP 文件的链接时,将调用 JWS 客户端。该 JNLP 将在本地缓存,然后资源(Jars 等)将在本地缓存,然后是应用程序。将运行。同样,对于用户来说相对不可见,除非下载时间和任何相关的进度指示器(JWS 默认情况下会这样做)。

..当个别产品所有者单击他们的产品时,需要执行产品特定的 jar 来打开 Swing UI。

每个“更具体”的应用程序都有一个 JNLP。同样,您可以使用BasicServiceJNLP API 调用相关应用程序。通过打开该应用程序的 JNLP。 这是一个演示。的BasicService

于 2013-05-05T09:03:46.637 回答
0

使用网络启动

看到这个链接

http://www.oracle.com/technetwork/java/javase/overview-137531.html

web start 允许客户端运行 jar 驻留在 web 上的 java 应用程序

于 2013-05-05T08:50:36.173 回答