Oracle рекомендует использовать JnlpDownloadServlet
sample для запуска JNLP из веб-приложения.Запуск JNLP без использования класса JnlpDownloadServlet
По каким-либо причинам я не могу использовать его и должен сам код запускать JNLP.
Это то, что я придумал (сервлет, который запускает его):
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
performTask(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
performTask(request, response);
}
private void performTask(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("application/x-java-jnlp-file");
byte [] b = getJNLP(..some params..).getBytes();
response.setContentLength((int) b.length);
OutputStream responseOutputStream = response.getOutputStream();
responseOutputStream.write(b);
}
getJNLP
является методом, который возвращает весь файл JNLP как String
.
Это, кажется, работает нормально. Но я ничего не пропускаю. Существуют ли какие-либо дополнительные заголовки и т. Д.?
UPDATE: Причина, по которой я не использую JnlpDownloadServlet, заключается в том, что я должен запустить этот JNLP из двух разных webapps - Java один & DOTNET один. Я, очевидно, не могу использовать JnlpDownloadServlet из DOTNET webapp. Я написал аналогичный код (как указано выше) в приложении DOTNET, чтобы запустить JNLP. Поэтому я просто сохраняю это в приложении Java.
Этот вопрос является широким. Это не проверка кода. У вас есть ошибки? – xenteros
Задача состоит в том, чтобы дать клиенту действительный файл jnlp, поэтому я думаю, что статическая ссылка на сгенерированный файл jnlp тоже должна работать. Поскольку вы ничего не добавили в генерацию файла jnlp-файла или версии.xml, сложно сказать, что вы ничего не забыли. – Turo
@Turo Файл jnlp не является статичным - он создается во время выполнения методом 'getJNLP'. – user93353