Java

         

Создание 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="http://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="http://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):


Содержание раздела