2013-07-25 58 views
0

我有一個運行半年前的小程序。現在,我需要「重新激活」它,但是由於未知的原因,它不再有效。這裏是規格:基於NG小程序 Applet停止使用JNLP MissingFieldException <jnlp>

  • 的Tomcat 7
  • JRE 1.7.0_25
  • 22火狐和Chrome 28
    • JNLP這是我的錯誤:

      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. oracle引入了安全更新7u17,7u21或7u25。但是我嘗試了所有從7u25到7u0的JRE,但沒有幫助。也嘗試過6u51降至6u22,我相信以前工作過。
      2. Mozilla或谷歌在努力增加他們的瀏覽器與java插件結合的安全性。嘗試了各種舊的瀏覽器版本 - 沒有成功。然後我嘗試IE10和它的工作?!
      3. 分析了JNLP文件(也包含JaNeLa),但由於它之前已經工作並在IE10中工作,因此它不能成爲JNLP。看來這個插件甚至沒有來分析JNLP。

      任何想法?

    回答

    2

    在這個問題上花了近兩天的時間後,我明白了,希望能幫助其他人。解釋:

    1. 我在用戶需要先用表單登錄登錄受保護的web應用程序的情況下小程序運行時。
    2. 完成後,會話cookie被創建併發送回客戶端/瀏覽器。
    3. 由於我從tomcat 6切換到tomcat 7,默認情況下啓用了用於cookie的useHttpOnly policy,這是針對tomcat 7之前的所有tomcat版本禁用的。HttpOnly標誌指示瀏覽器阻止從JavaScript/Plugins訪問這些cookie(安全原因,例如跨站點腳本等)。
    4. 現在因爲java插件無法訪問cookie,所以在請求JNLP文件時它並未將它發送到服務器。
    5. 服務器返回所有未經授權的請求的登錄頁面。
    6. 最後但並非最不重要的是JNLP解析器正在尋找<jnlp>結構並找不到任何 - 因此上述錯誤已生成。

    那麼如何防止呢?

    1. 禁用useHttpOnly標誌tomcat的全球
    2. 禁用useHttpOnly標誌web應用(我做了)。要做到這一點添加一個上下文。在webappication的META-INF XML文件,其中包含以下行
      <Context path="/" cookies="true" useHttpOnly="false"/>

    現在爲什麼IE10似乎忽略的HttpOnly標誌是一個開放的問題,我可以;-)

    +0

    其他解決生活。如果您在Java控制檯臨時文件中禁用,則必須再次打開它。如果你不保留臨時文件,它不會工作。 – Krzysiek