我想在我的 JSF 页面上有一个链接。单击此链接时,Java Web Start 应用程序将启动。该应用程序根本不影响当前页面。该应用程序只是自行启动。
问题是,我需要动态生成启动 Java Web Start 应用程序的 JNLP 文件。基本上,我将根据应用程序的状态来决定 JNLP 文件的应用程序和参数。
有谁知道我可以做到这一点的方法。是否可以通过单击链接而不影响当前页面来简单地执行动态创建的 JNLP 文件?
我想在我的 JSF 页面上有一个链接。单击此链接时,Java Web Start 应用程序将启动。该应用程序根本不影响当前页面。该应用程序只是自行启动。
问题是,我需要动态生成启动 Java Web Start 应用程序的 JNLP 文件。基本上,我将根据应用程序的状态来决定 JNLP 文件的应用程序和参数。
有谁知道我可以做到这一点的方法。是否可以通过单击链接而不影响当前页面来简单地执行动态创建的 JNLP 文件?
您可以有一个 servlet 来捕获对(某些)文件类型 (jnlp) 的请求。
我一直在扩展 JnlpDownloadServlet 并结合一个 jsp 文件,该文件用作对单击的链接的响应。
http://docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/downloadservletguide.html
必须通过使用 http get 参数和 codebase 属性来保留状态,因为 jnlp 文件可能会在应用程序启动期间多次下载。因此,保持状态的唯一方法就是这样做 afaik。
此示例中的状态是用户名和客户端令牌。这是我一直在使用的 jsp 文件的一部分:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase=<%=request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()+ request.getContextPath() + "/" %> href="jnlpfile.jnlp?username=<%=request.getParameter("username")%>&clienttoken=<%=request.getParameter("clienttoken")%>">
<information>
<title>title</title>
<vendor>vendor</vendor>
<description kind="short">short desc</description>
<icon href="resources/images/icon.jpg" kind="default"/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<java version="1.7+" java-vm-args="-ea" initial-heap-size="128m" max-heap-size="512m" />
<jar download="eager" href="test.jar"/>
</resources>
<application-desc main-class="test.MainClass">
<argument><%=request.getServerName()%></argument>
<argument><%=request.getParameter("username")%></argument>
<argument><%=request.getParameter("clienttoken")%></argument>
</application-desc>
<update check="background"/>
</jnlp>