Аппаратная поддержка из веб-приложения - PullRequest
6 голосов
/ 17 января 2012

У меня есть веб-приложение, работающее с поддержкой некоторых конкретных аппаратных компонентов.Это достигается с помощью следующих шагов:

  1. Пользователь запускает небольшой установщик, который помещает файлы Java (и несколько других) на клиентский компьютер.Основным компонентом является баночка с именем «hardwareManager»
  2. Пользователь посещает веб-приложение.Веб-приложение запускает Java-апплет, который из-за файла .java.policy, размещенного во время установки, имеет разрешение на взаимодействие с клиентским компьютером вне изолированной программной среды браузера.
  3. Апплет проверяет, чтовыполняется, а если нет, запускает команду для его запуска.
  4. Пользователь взаимодействует с веб-приложением, которое отправляет команды апплету через javascript.Затем апплет записывает команды в текстовый файл на клиентском компьютере.Текстовый файл постоянно контролируется HardwareManager, который выполняет любые команды, которые он читает.

Это работает, но кажется неуклюжим.У меня есть пара идей о том, как его улучшить, но я не знаю, какие из них, если таковые имеются, даже стоит попробовать.

Было бы лучше настроить hardwareManager в качестве socketServer и подключить апплетнепосредственно к нему, а не через текстовые файлы?Это вообще возможно?

Есть ли способ полностью исключить апплет и напрямую связать javascript с HardwareManager?Может быть, написав HardwareManager в качестве локального http-сервера?На каком порту он должен работать?Подходят ли здесь где-нибудь ограничения javascript xss?

1 Ответ

2 голосов
/ 25 января 2012

Было бы менее неудобно запускать приложение Java с помощью Java Web Start. Это избавит от необходимости демонизировать или устанавливать аппаратный менеджер Java.

Другая альтернатива - использовать встроенный браузер в Java. Я полагаю, что это не вариант, так как вы сильно зависите от Javascript (я предполагаю, чтобы обеспечить богатый опыт клиента).

Если вам уже нужно что-то установить на клиентском компьютере, почему вы решили использовать веб-приложение?

Из опыта: У нас было приложение Java EE, которое нужно было печатать на принтерах PoS на сайте клиента. Мы установили небольшое приложение «синхронизатор», которое подключается через SSH и синхронизирует все файлы клиентов. После этого он загружает JAR и выполняет программу. Эта программа соединяется через RMI с сервером и подписывается на очередь JMS для получения заданий на печать.

Применительно к вашему делу: Почему бы не позволить вашему приложению Java напрямую подключиться к серверу? Вы можете использовать HTTP, SOAP или даже JMS через RMI. Затем вы можете запустить аппаратную команду с сервера (а не из ограниченной среды веб-браузера JavaScript). Таким образом, вы получаете множество функций: аутентификацию, буферизацию команд и даже можете совместно использовать оборудование для нескольких клиентов.

Схема:

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

Вы можете запустить приложение Java с помощью Java Web Start, что позволяет автоматически обновлять приложение (вместо того, чтобы передавать каждому клиенту новый установщик).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...