2016-07-25 69 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其評論我指出了正確的方向...