私はアプレットの代替としてJWSアプリケーションを開発しています。これまでは、親アプリケーションからHTMLページ内のリンクを介して静的なJNLPにアプリを起動することができました。しかし、引数値は実行ごとに異なるため、私のアプリは動的JNLPによって実際に起動される必要があります。そこで、JnlpDownloadServletを[here] [1]のように拡張することにしました。ServletException(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);
}
私は、ダウンロードを起動しよう:URLパターン\download
にマッピングされdownload
と呼ばれているマイダウンロードサーブレットは、オーバーライドされたメソッドservice
では、現在、いくつかの静的JNLPが含まれているmyJnlp.jsp
と呼ばれるJSPを参照しますサーブレットは、私は次のエラーを取得する:
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
私は親アプリケーションによって使用される他のJSPを含むディレクトリであるディレクトリjsp
にmyJnlp.jsp
を置きました。 JNLPページを間違った場所に置いたのですか、サーブレットコードで間違って指定しましたか?
APIによると、 "パスが"/"で始まっている場合、現在のコンテキストルートからの相対パスとして解釈されます。"だから、あなたはrequest.getRequestDispatcher( "/ jsp/myJnlp.jsp")を使ってみるべきです。 – rickz