Как включить внешнюю конфигурацию для приложения webstart
-
16-09-2019 - |
Вопрос
У меня есть приложение webstart, которому требуется внешняя настройка.Конфигурация должна быть внешней, поскольку она будет изменена нашим заказчиком вручную.Я подумывал о добавлении еще одного jar с такой конфигурацией.Заявка подписана, и передача наших ключей клиенту не является вариантом.Я склоняюсь к тому, чтобы сделать этот файл доступным с веб-сервера.
Как восстановить URL-адрес кодовой базы из приложения webstart внутри или есть ли способ настроить jnlp-файл webstart для добавления другого файла, кроме jar, в classpath?
Я использую maven для полной сборки, если это подсказка.
Любые другие идеи приемлемы.
Решение
Вы можете получить кодовую базу с помощью BasicService.getCodeBase
.
Другие советы
Вы можете использовать API настроек Java для хранения внешних конфигурационных данных.Это будет локально для компьютера persons.В Windows он использует реестр, в Unix is использует классические файлы ".xyz".
Лучше всего было бы иметь в своем приложении какой-нибудь пользовательский интерфейс для управления этой конфигурацией (отправлять пользователей в RegEdit на самом деле не очень приятно), но это не обязательно должно быть чем-то великолепным.Редактор пары Имя / Значение сделает свое дело.И используйте разумные значения по умолчанию для запуска "неконфигурированного" приложения.
Если вы используете JNLP Загрузить Сервлет вы можете передать макрос codebase $$ в свое приложение в качестве системного свойства, и это предоставит доступ к URL-адресу codebase.
В нашем приложении webstart конфигурация сохраняется на сервере с использованием SQL, но это может быть немного тяжеловесно для ваших нужд.
Ознакомьтесь со ссылкой на синтаксис jnlp здесь:http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html
Важным элементом для вас является тег "Ресурсы":
<resources>
<j2se version="1.4.2+" java-vm-args="-esa -Xnoclassgc"/>
<jar href="lib/SwingSet2.jar"/>
</resources>
В приведенном выше примере SwingSet2.jar добавляется в classpath.Нужно больше банок в classpath?Добавьте еще один ресурс jar
<resources>
<j2se version="1.4.2+" java-vm-args="-esa -Xnoclassgc"/>
<jar href="lib/SwingSet2.jar"/>
<jar href="lib/SwingSetSupplment.jar"/>
</resources>
У меня была точно такая же проблема с codebase.В итоге я использовал JnlpServlet (вам придется погуглить это..Я могу опубликовать только одну гиперссылку : ( ), чтобы автоматически включать правильную кодовую базу при отправке файла jnlp, затем добавить
<property name="app.codebase" value="$$codebase"/>
в раздел ресурсов.