来自Web应用程序的硬件支持

时间:2012-01-17 11:02:00

标签: java javascript refactoring applet

我有一个运行的Web应用程序,支持某些特定的硬件。这可以通过以下步骤实现:

  1. 用户运行一个放置java文件的小安装程序(和一对 其他)在客户端机器上。主要部分是名为“hardwareManager”的jar
  2. 用户访问网络应用。 Web应用程序运行一个java applet,由于 安装期间放置的.java.policy文件具有权限 与浏览器沙箱外的客户端计算机进行交互。
  3. 小程序检查以确保hardwareManager正在运行, 如果没有,则运行命令启动它。
  4. 用户与Web应用程序交互,该应用程序通过命令向applet发送命令 JavaScript的。然后applet将命令写入文本文件 在客户端计算机上。文本文件一直受到监控 hardwareManager,它运行它读入的任何命令。
  5. 这很有效,但看起来很笨重。关于如何改进,我有几点想法,但我不知道哪些,甚至值得尝试。

    将hardwareManager设置为socketServer并让applet直接连接到它而不是通过文本文件会更好吗?这甚至可能吗?

    有没有办法完全消除applet并让javascript直接与hardwareManager对话?也许通过将hardwareManager编写为本地http服务器?它应该运行什么端口?这个地方的javascript xss限制是否合适?

1 个答案:

答案 0 :(得分:2)

使用Java Web Start启动Java应用程序不那么笨拙。这将消除守护或安装Java硬件管理器的需要。

另一种选择是在Java中使用内置浏览器。我认为这不是一个选项,因为你严重依赖Javascript(我想提供丰富的客户端体验)。

如果您必须在客户端计算机上安装某些内容,为什么选择使用Web应用程序?

根据经验谈话:我们有一个Java EE应用程序需要在客户端站点打印到PoS打印机。我们安装了一个小的“同步器”应用程序,它通过SSH连接并同步所有客户端文件。然后,它加载JAR并执行程序。此程序通过RMI与服务器连接,并订阅JMS队列以接收打印分配。

适用于您的案例:为什么不让您的Java应用程序直接连接到服务器?您可以在RMI上使用HTTP,SOAP甚至JMS。然后,您可以从服务器(而不是从有限的JavaScript webbrowser环境)启动硬件命令。通过这种方式,您可以获得大量功能:身份验证,命令缓冲,甚至可以在多个客户端之间共享硬件。

示意图:

                   <----AJAX------> Web browser
ApplicationServer                  
                   <---HTTP/SOAP--> Java hardware manager application

您可以使用Java Web Start启动Java应用程序,它允许您自动更新应用程序(而不是需要为每个客户端传递新的安装程序)。