2016-06-09 5 views
0

Я работаю над заменой апплета приложением, запущенным с Java Web Start. До сих пор в моей демо-версии, разработанной в Netbeans, я в состоянии генерировать launch.jnlp с аргументами, установленными на нужные значения:Передача аргументов JNLP из JSP

<application-desc main-class="myPkg.MyClass"> 
    <argument>action=someAction</argument> 
    <argument>objId=1234abc</argument> 
    <argument>userName=user1</argument>  
</application-desc> 

Но что это JWS-запущенное приложение должно делать в реальной жизни, чтобы установить аргументы в JNLP на основе значений, выбранных и связанных с пользователем веб-приложения, которое запустило бы его.

Я понимаю, что этот вопрос задан раньше, но в большинстве случаев прошло несколько лет с тех пор, как на эти вопросы был дан ответ, и я не уверен, что ответы по-прежнему применимы, учитывая блокировку безопасности, которую Java пропустила через браузер поставщики. Способ для этого в эти дни отправить значения аргументов через параметры запроса HTTP, то есть

[codebase]/launch.jnlp?action=someAction&objId=1234abc&userName=user1?

ответ

0

Вы можете передать параметры апплету, запущенному через JWS так же, как вы можете, при запуске апплета в браузере, например. в JNLP. Однако вы должны создать JNLP, содержащий эти серверные AFAIK; передавая их, поскольку URL-Args непосредственно к javaws невозможен (URL-адрес только делает браузер загружать jnlp и бросать его на ноги javaws, и это снова забирает его с сервера, возможно, снова, поэтому обязательно создайте

<jnlp codebase="http://@[email protected]"HREF = «/launch.jnlp?action=someAction&objId=1234abc&userName=user1»

так, чтобы он соответствовал параметрам, с которым вы вызываете JNLP „CGI“

так что вам нужно CGI с именем launch.jnlp ввода параметров в шаблон jnlp

1) в HREF как параметры URL

2) в апплет-убыв

<applet-desc main-class="com.xyz.class" 
    width="850" height="650" name="Applet Name"> 
    <param name="action" value="someAction"/> 
    <param name="objId" value="1234abc"/> 
    <param name="userName" value="user1"/> 
</applet-desc> 

По крайней мере, это возможность я знаю и это работает для меня.

Редактировать

То же самое относится, если вы используете application-desc вместо этого, то вместо <param s вы должны заполнить <argument s соответственно, кроме HREF ...

+0

Я пытаюсь не используйте тег 'applet', так как я слышу, что я t не будет поддерживаться в Java 1.9, который должен выйти в сентябре. Есть ли способ построить 'launch.jnlp' динамически, чтобы значения аргументов можно было указывать во время выполнения? –

+0

Кто говорит об апплет-теге? Вы читали мой ответ или только пытались понять как можно меньше слов? –

+0

Я имел в виду использование тега 'applet-desc ', поскольку я использовал' application-desc'. Может быть, это не имеет никакого значения, но, в любом случае, есть ли у вас какая-то причина быть таким саркастичным в вашем ответе? Ясно, что я новичок в использовании JNLP, так как я задаю вопросы об этом, поэтому я не понимаю, почему вы чувствовали необходимость идти по этому маршруту ... –

0

Хотя моя реализация все еще работа в процессе, я хотел сказать, что то, что работает для меня до сих пор, заключается в том, чтобы динамически создавать JNLP внутри сервлета, записывая его в поток, связанный с объектом HTTPResponse ...

Смежные вопросы