我有一个通过 Java Webstart 调用的应用程序。通过 Webstart 链接打开它没有任何问题。
我还有一个基于 Excel 的应用程序,它可以生成文件(通过 vba),然后可以由通过 Webstart 启动的程序打开该文件。
我想做的是有一个按钮来调用 Webstart 应用程序,然后打开一个新生成的文件。文件名(和内容)对时间敏感,因此我不能一遍又一遍地使用相同的文件名。
我已经弄清楚如何使用 vba 通过 Webstart 调用应用程序,但问题是 Webstart 应用程序要能够打开文件,需要将其作为 jnlp 描述符中的参数传递
<application-desc main-class="com.foo.WebstartApp">
<argument>-file</argument>
<argument>C:\files\file_20100909_164834.csv</argument>
</application-desc>
当文件名始终不同时,如何将文件名传递到 JNLP 文件中?
我应该考虑每次动态生成一个新的 jnlp 文件,还是有办法参数化 jnlp 文件并在调用 JNLP 时传递文件名?
最佳答案
动态生成的 JNLP 文件可能会让您面临注入(inject)攻击,就像动态 SQL 一样。此外,您似乎希望用户信任 WebStart 应用程序,而该应用程序又信任不可信的 JNLP 文件。
假设每个桌面都有一个应用程序实例 (SingleInstanceService
),有关要使用哪些文件的信息(不一定是可信的)可以使用 PersistenceService
(“松饼”)通过小程序传递,或者显然,如果浏览器是 IE,则可以通过 cookie 传递。
关于java - 动态 JNLP 生成和 Excel 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678543/