JnlpDownloadServlet
JNLPに引数を動的に渡す必要があります。そのために、すべてのJNLP XMLが書き込まれたjspを拡張して含めるサーブレットを使用しようとしました。
しかし、ダウンロードした JNLP を呼び出すと、BadFieldException
.
サーブレット
public class TestServlet extends JnlpDownloadServlet {
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
res.setContentType("application/x-java-jnlp-file");
request.getRequestDispatcher("/jnlp.jsp").include(request, res);
}
jnlp.jsp
動的 JNLP のダンプに使用されます。
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase=<%=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/" %> href="test.jnlp">
<information>
<title>Demo</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib/test.jar" main="true" />
</resources>
<application-desc name="Dynamic Tree Demo Application" main-class="org.Test" width="300" height="300">
<argument><%=request.getParameter("arg1")%></argument>
<argument><%=request.getParameter("arg2")%></argument>
</application-desc>
<update check="background"/>
</jnlp>
ダウンロードした JNLP でリクエスト パラメータが正しく受信されていることを確認できませんが、上記は正常に動作してrequest.getScheme
いるrequest.getServerName
ようです。引数値が正しく受信されていないためBadFieldException
、JNLP が実行しようとすると取得されます。
これを解決するには?