Создание JNLP файла, описывающего ваше клиентское приложение, его библиотеки и другие параметры




 

Для того, чтобы Java Web Start мог знать какие именно файлы необходимы для запуска и работы вашего клиентского приложения, необходимо создать специальный JNLP файл, имеющий XML формат. Данный файл будет помещен на сервере JBoss в Web-приложение, предназначенное для выполнения деплоймента GUI.

Далее приведен краткий и простейший пример JNLP файла, использованного для деплоймента с небольшими пояснения о тегах файла и их значениях. Для более детального описания всех параметров и всех возможностей данной технологии, рекомендую вам обратиться к документации разработчика на сайте Sun Microsystems.

 

<?xml version="1.0" encoding="Windows-1251"?>

...............<jnlp spec="1.0+" <!-- Номер JNLP спецификации -->

codebase="https://localhost:8080/application"

<!--URL по которому находиться JNLP файл, можно написать в виде

codebase="$$codebase" -->

href="application.jnlp" >

<!--название JNLP файла-дескриптора нашего приложения

можно написать в виде href="$$name" -->

<information>

<title>Corporate GUI client</title> <vendor>Company ZZZ</vendor> <description>Company's corporate client</description> </information> <resources> <j2se version="1.3+"/> <!--Указание необходимой версии JDK приложения-->

<jar href="main_gui.jar" main="true"/><!--Файлы нашего клиентского приложения--> <jar href="main_gui_lib.jar" />

<jar href="jboss-client.jar"/>

<jar href="jboss-common-client.jar"/> <!--Перечисление всех файлов сторонних--> <jar href="jboss-j2ee.jar"/> <!--библиотек, необходимых для запуска--> <jar href="jbossmq.jar"/> <!--нашего приложения -->

<jar href="jbosssx-client.jar"/> <jar href="jnp-client.jar"/> <jar href="xercesImpl.jar"/>

<jar href="xmlParserAPIs.jar"/>

<property name="java.naming.provider.url" value="localhost:1099"/>

<!-- Указание свойства, которое используется нашим приложением --> </resources>

<application-desc main-class="com.my_company_name.client.Application" />

<-- Название класса с main() точкой запуска --></jnlp>

 

codebase="https://localhost:8080/application" - указывает на параметр "базы кода" по которому мы будем хранить все необходимые библиотеки, как JAR файлы нашего приложения, так и JAR файлы "сторонних библиотек". Данный параметр можно заменить "специальной переменной", фактическое значение которой jnlp-сервлет поставит самостоятельно при обработке запроса. codebase="$$codebase"

href="application.jnlp" - название JNLP файла-дескриптора, который описывает наше приложение. Данный параметр также можно заменить "специальной переменой", фактическое значение которой jnlp-сервлет поставит при обработке запроса. href="$$name"

В разделе ресурсов, есть указание использования JRE версии 1.3 и более новых - <j2se version="1.3+"/>. Элемент <resources> может содержать 6 различных подэлементов, таких как: jar, nativelib, j2se, property, package и extension. Подробности и правила можно найти в документации.

<jar href="main_gui.jar" main="true"/> - Указание библиотеки, в которой находятся классы нашего приложения, при этом параметр main="true", указывает, что данный JAR архив содержит запускаемый класс GUI приложения.

<jar href="jboss-client.jar"/> - далее перечислены все необходимые библиотеки, которые будут получены с сервера и кэшированы на клиенте

<property name="java.naming.provider.url" value="localhost:1099"/> - так мы можем перечислить все, передаваемые в качестве параметров запуска приложению свойства, которые получаются вызовом System.getProperty(....)

<application-desc main-class="com.my_company_name.client.Application" /> - указание полного запускаемого класса. JWS также поддерживает запуск Applet-ов. В этом случае вместо тэга <application-desc> используется тэг <applet-desc>. Принцип написания и параметры - смотрите в документации.

Что касается элемента <information> JNLP файла. В данном тэге значения подэлементов <title> и другие, наверное, пока что лучше указывать на английском языке. В последней версии Java Web Start (1.2) из версии JDK 1.4.2_04-b05 название на русском языке в JNLP файле, вызвали ошибку при конвертировании русских букв. Ошибка наблюдалась в логе JBoss (server.log):

 

ERROR [org.jboss.web.localhost.Engine] Internal error:sun.io.MalformedInputException

at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:90)

at java.io.InputStreamReader.convertInto(InputStreamReader.java:137)

at java.io.InputStreamReader.fill(InputStreamReader.java:186)

.................

at com.sun.javaws.servlet.JnlpDownloadServlet.doGet(JnlpDownloadServlet.java:79)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

...................................

 

JNLP файл имеет также дополнительные параметры и позволяет указывать разные ресурсы приложения в зависимости от: версии самого приложения, версии операционной системы, платформы, "локали" - т.е. поддерживает "версионность" приложений по разным критериям. В качестве ресурсов можно также указывать "native" библиотеки (например, DLL, SO), используемые вашим приложением. Если вашему приложению требуется доступ к локальным файлам или другие права на локальном ПК, то для этого существует раздел <security>, который необходимо также описать. При необходимости доступа к локальным ресурсам на ПК, например файлов, все библиотеки вашего приложения должны быть подписаны сертификатом, который можно сгенерировать самостоятельно. Все подробности и правила описания можно найти в документации.

Для создания JNLP деплоймент файлов можно использовать свободно распространяемый "DeployDirector" от Sitraka Software, подробности можно узнать на сайте производителя.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-28 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: