首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Applet停止使用JNLP MissingFieldException <jnlp>。

Applet停止使用JNLP MissingFieldException <jnlp>。
EN

Stack Overflow用户
提问于 2013-07-25 15:05:30
回答 1查看 2.2K关注 0票数 0

我有1/2年前运行的小程序。现在,我需要‘重新激活’,然而,由于一个未知的原因,它不再工作。这是规格:

  • 基于JNLP的NG Applet
  • Tomcat 7
  • JRE 1.7.0_25
  • Firefox 22和Chrome 28

这是我得到的错误:

代码语言:javascript
复制
MissingFieldException[ The following required field is missing from the launch file: <jnlp>]
at com.sun.javaws.jnl.XMLFormat.parse(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory._buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at com.sun.javaws.jnl.LaunchDescFactory.buildDescriptor(Unknown Source)
at sun.plugin2.applet.JNLP2Manager.initialize(Unknown Source)
at sun.plugin2.main.client.PluginMain.initManager(Unknown Source)
at sun.plugin2.main.client.PluginMain.access$200(Unknown Source)
at sun.plugin2.main.client.PluginMain$2.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Error while initializing manager: MissingFieldException[ The following required field is missing from the launch file: <jnlp>], bail out

到目前为止,我试图/怀疑的是:

  1. 与安全更新7u 17、7u 21或7u 25一起引入的甲骨文。然而,我尝试了所有的JRE,从7u25到7u0,都没有帮助。也尝试了6u51下降到6u22,我相信这是以前的工作。
  2. Mozilla或Google在结合java插件提高浏览器安全性的过程中引入了一些东西。尝试了各种旧的浏览器版本--没有成功。然而,然后我尝试了IE10,而它正在运行 ?!
  3. 分析JNLP文件(也使用JaNeLa),但由于它以前确实工作过,并且在IE10中工作,所以不可能是JNLP。看起来这个插件甚至没有分析JNLP。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-25 15:55:38

在这个问题上花了将近两天的时间后,我想出了办法,希望能在这方面帮助别人。解释如下:

  1. 我的applet运行在受保护的web应用程序的上下文中,其中用户需要首先使用表单登录登录。
  2. 完成此操作后,将创建会话cookie并将其发送回客户端/浏览器。
  3. 由于我从tomcat 6切换到tomcat 7,所以默认情况下启用了useHttpOnly政策 for cookie,这是在tomcat 7之前的所有tomcat版本中禁用的。HttpOnly标志指示浏览器阻止从JavaScript/Plugins访问这些cookie(安全原因,例如跨站点脚本等)。
  4. 现在,由于java插件无法访问cookie,所以在请求JNLP文件时没有将其发送到服务器。
  5. 服务器为所有未经授权的请求返回loginpage。
  6. 最后但并非最不重要的是,JNLP解析器正在寻找<jnlp>结构,却找不到任何--因此生成了上述错误。

那么,如何才能防止这种情况发生呢?

  1. 全局禁用tomcat中的useHttpOnly标志
  2. 禁用did应用程序的useHttpOnly标志(我这样做了)。为此,在add应用程序的META中添加一个context.xml文件,其中包含以下行 <Context path="/" cookies="true" useHttpOnly="false"/>

现在,为什么IE10似乎忽略httponly标志是一个我可以接受的公开问题;-)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17861759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档