2016-07-25 40 views
0

我正在开发JWS应用程序作为小程序替换。到目前为止,我已经能够通过HTML页面中的链接从其父应用程序启动我的应用程序到静态JNLP。但我的应用程序确实需要由动态JNLP启动,因为参数值将随每次执行而不同。所以我决定以[here] [1]所示的方式扩展JnlpDownloadServlet。我下载的servlet调用download,它被映射到一个URL模式\download并引用JSP称为myJnlp.jsp目前含有一些静态JNLP,在覆盖方法serviceServletException(未找到JNLP JSP)

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); 
    } 

当我尝试调用我的下载servlet中,我得到以下错误:

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页面放在错误的位置,还是在我的servlet代码中错误地指定了它?

+0

根据API; “如果路径以”/“开始,则将其解释为相对于当前上下文根。”所以,你应该尝试使用request.getRequestDispatcher(“/ jsp/myJnlp.jsp”)。include(request,resp); – rickz

回答

0

我创建一个名为myJWSApp子目录解决了这个,然后我把JNLP JSP在该目录中,然后引用它作为

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

由于@rickz其评论我指出了正确的方向...