Как получить атрибут jnlp href во время выполнения в приложении Java Web Start (аналогично BasicService.getCodeBase())?

У меня есть одно приложение, которое я развертываю через Java Web Start. У меня есть несколько разных файлов jnlp для разных сценариев запуска. Я использую DownloadService2 для периодической проверки обновлений. Когда доступно обновление, я запрашиваю у пользователя. Если они решат обновиться, я запускаю новый экземпляр javaws с помощью Runtime.getRuntime().exec(), передавая полный URL-адрес jnlp, затем я System.exit(0). По сути, это запускает цикл обновления/перезапуска.

Проблема в том, что, поскольку я мог бы начать с одного из нескольких файлов jnlp, я не могу просто жестко указать URL-адрес. Я знаю, что могу получить часть URL-адреса host:port из BasicService.getCodeBase(), но есть ли способ получить файловую часть URL-адреса? В настоящее время я добавляю аргумент «jnlp» в описание приложения, подобное следующему, чтобы я мог получить его из args:

<application-desc main-class="my.main.class">
<argument>jnlp=myjnlp.jnlp</argument>
<application-desc/>

Я думаю, что это сработает, но мне интересно, делаю ли я это сложнее, чем нужно. Спасибо.


person ajh158    schedule 15.09.2010    source источник


Ответы (2)


Возможно, было бы лучше предоставить эту функциональность с помощью DownloadService.

person Andrew Thompson    schedule 16.09.2010
comment
Мне было известно о классе DownloadService, но я не уверен, как его использовать для получения имени файла jnlp для запущенного в данный момент приложения. Можете ли вы уточнить? - person ajh158; 16.09.2010
comment
Мои извинения. Я неправильно прочитал вопрос, и DS не решит заявленную проблему. :( - person Andrew Thompson; 17.09.2010

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

person ajh158    schedule 25.06.2012