Проблемы с развертыванием, совет, необходимый для веб-приложения Java - PullRequest
0 голосов
/ 11 мая 2011

Я разработал Java-приложение для командной строки (читай: без графического интерфейса), которое обрабатывает числа на основе заданного набора данных и ряда параметров;и выкладывает ряд HTML-файлов в качестве итоговых отчетов.Эти отчеты содержат большой объем данных в таблицах, поэтому, чтобы дать пользователям простой и быстрый обзор результатов, я использовал библиотеку JUNG2 и создал хороший график.

Вот где это становится интересным;поскольку я хотел бы, чтобы график был интерактивным, его следует развернуть после запуска приложения и создания файлов всякий раз, когда пользователь хочет просмотреть отчеты.Я решил пойти с развертыванием на основе апплета, но меня не устраивает текущая настройка по следующим причинам:

  1. Я хочу сделать программное обеспечение максимально простым в использовании(мои пользователи не будут разбираться в технологиях, и даже в большинстве случаев не будут запуганы).Я действительно хотел бы распространять только один JAR, что заставило меня поместить апплет со всем остальным, что ему нужно, в пакет в тот же JAR, что и основное приложение.

  2. Апплет иОсновное приложение должно сообщать результаты, поэтому я создаю отчет на основе xML, который используется для хранения информации.Пока файлы находятся на локальной машине и не перемещаются, все работает нормально.К сожалению, мне также нужно перемещать файлы.Пользователь должен иметь возможность перенести папку «результатов» на USB-накопитель, пойти куда угодно, подключить накопитель к другому компьютеру и использовать отчет по своему усмотрению.

В настоящее время апплеты реализованы с использованием следующего HTML-кода:

<applet code="package.myapp.visualization.GraphApplet.class" 
        codebase="file:/home/user/myApp" 
        archive="myApp-0.2.6-r28.jar" 
        width="750" height="750">
    <param name=input value="results/test_name/results.fxml">
</applet>

Как вы можете видеть, этот апплет не будет работать, если родительская папка перемещена в другое место.


Насколько я знаю, у меня есть пара альтернатив:

a) Измените кодовую базу, чтобы она указывала на URL нашего веб-сервера, где я мог бы разместить файл jar.Это, однако, создает проблему с разрешениями, так как апплет не сможет прочитать файл результатов.Альтернативой является загрузка файла результатов на сервер, когда пользователь хочет визуализировать график, хотя я не уверен, является ли это хорошим вариантом из-за безопасности сервера, а также если это можно сделать так, чтобы загрузка происходила автоматически, не мешая пользователю.

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

c) изменить метод развертывания (хотел бы избежать этой альтернативы, чтобы не тратить больше времени на этапе разработки)

Есть идеи?Я что-то пропустил?Как я могу решить эту проблему?Спасибо,

1 Ответ

1 голос
/ 11 мая 2011

Я не уверен, что полностью понимаю ваш вариант использования, но из того, что я понимаю, я бы предложил следующее:

Дамп апплета для приложения, запущенного с использованием Java Web Start .Пусть файл JNLP объявит файловую ассоциацию для типа файла fxml.Когда пользователь дважды щелкает файл fxml, он будет передан в качестве аргумента main(String[]) приложения JWS.

Приложение JWS в песочнице может получить доступ к ресурсам в локальной файловой системе, используяJNLP API.Вот мое демо.файловых служб API JNLP .

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