ServletException (JNLP JSP не найден)

Я разрабатываю приложение JWS в качестве замены апплета. До сих пор мне удавалось запускать свое приложение из его родительского приложения по ссылке на HTML-странице на статическую JNLP. Но мое приложение действительно нужно запускать с помощью динамического JNLP, поскольку значения аргументов будут разными при каждом выполнении. Поэтому я решил расширить JnlpDownloadServlet так, как показано [здесь][1]. Мой сервлет загрузки называется download, который сопоставляется с шаблоном URL \download и ссылается на JSP с именем myJnlp.jsp, который в настоящее время содержит некоторый статический JNLP, в переопределенном методе service:

    protected void service(HttpServletRequest req, HttpServletResponse resp)        throws ServletException, IOException 
   {      
      HttpServletRequest request = (HttpServletRequest) req;
      resp.setContentType("application/x-java-jnlp-file");
      request.getRequestDispatcher("/myJnlp.jsp").include(request, resp);
   }

Когда я пытаюсь вызвать свой сервлет загрузки, я получаю следующую ошибку:

javax.servlet.ServletException: File "/myJnlp.jsp" not found
    org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:417)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:384)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    com.myCompany.parentApp.myDownloadServlet.service

Я поместил myJnlp.jsp в каталог jsp, который содержит другие JSP, используемые родительским приложением. Я разместил страницу JNLP в неправильном месте или неправильно указал ее в своем коде сервлета?


person Sheldon R.    schedule 25.07.2016    source источник
comment
По API; Если путь начинается с /, он интерпретируется как относительный к текущему корневому контексту. Итак, вы должны попробовать использовать request.getRequestDispatcher(/jsp/myJnlp.jsp).include(request, resp);   -  person rickz    schedule 26.07.2016


Ответы (1)


Я решил это, создав подкаталог с именем myJWSApp, затем я поместил JNLP JSP в этот каталог, а затем сослался на него как

request.getRequestDispatcher("myJWSApp/myJnlp.jsp").include(request, resp);

Спасибо @rickz, чей комментарий указал мне правильное направление...

person Sheldon R.    schedule 24.08.2016