Динамическая JNLP с использованием JSP - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть файл JSP, который возвращает файл JNLP при вызове по гиперссылке. Но он загружается как файл jsp (xxx.jsp вместо xxx.jnlp), хотя содержимое является ожидаемым jnlp.

Вот мой JSP

    <%    
      response.setHeader("Pragma", "no-cache");
      response.setHeader("Expires", "0");
      response.setContentType("application/x-java-jnlp-file");                            
      response.setHeader("Cache-Control", null);
      response.setHeader("Set-Cookie", null);
      response.setHeader("Vary", null);

      // An installer must reply with the version number for a given install
      if (response.containsHeader("x-java-jnlp-version-id"))
        response.setHeader("x-java-jnlp-version-id", "WASClient6.1.0");               
      else
        response.addHeader("x-java-jnlp-version-id", "WASClient6.1.0");
      String codeBase = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/";
%>

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="<%=codeBase %>">
        <information>
                <title>XXX</title>
        </information>
        <security>
                <all-permissions/>
        </security>
        <resources>

        </resources>
        <application-desc main-class="TestApp">
        </application-desc>
</jnlp>

Ниже приводится полученный JSP

.
 <?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="<%=codeBase %>">
        <information>
                <title>XXX</title>
        </information>
        <security>
                <all-permissions/>
        </security>
        <resources>

        </resources>
        <application-desc main-class="TestApp">
        </application-desc>
</jnlp>

Есть идеи, что я сделал не так? Спасибо.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы действительно не должны использовать скриптлеты, но если вам нужно, вы должны сгенерировать файл jnlp из скриптлетов, а затем сделать response.redirect для созданного файла jnlp

 ServletContext servletContext = session.getServletContext();
 String localDir = servletContext.getRealPath("").replace('\\', '/');
 File jnlp = new File(localDir + "something.jnlp");
 FileWriter fw = new FileWriter(jnlp);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(//contents of jnlp file);
 response.sendRedirect(jnlp.getName());
...