2

JavaWebStartを使用してdeploiedされたアプリケーションがあります。URLConnectionを使用してサーブレットと通信し、Cookie(JSESSIONID)によるセッションを管理します。Java1.5および1.6でうまく機能しました。WindowsでのJava1.7の場合それはもう機能しません:cookie JSESSIONIDはサーバーに返送されません(これはApacheAxisのHTTPMonitorを使用して見ました)。何が問題なのですか?

LinuxボックスからJavaWebStartを使用して同じアプリケーションを起動すると、期待どおりに機能します。

バージョンは次のとおりです。JavaWebStart10.4.0.22_04を使用するJRE1.7.0_04

4

1 に答える 1

2

私たちのアプリケーションは、Eclipse から起動したときは正常に動作しましたが、Web Start 経由で実行したときは、質問に記載されている問題のように JSESSIONID が失われたために、認証済みの REST エンドポイントと通信できなかったという事実に非常に不満を感じていました。Java 1.7 を実行しています。

多くのリモートデバッグの後、意図的かどうかにかかわらず、それを発見しました(これに関するドキュメントはほとんどありません )、Java Web Start アプリケーションはデフォルトの CookieHandler (通常は のインスタンス) を設定しますcom.sun.deploy.net.cookie.DeployCookieSelectorが、これが何であれ、これは JSESSIONID Cookie の処理を​​台無しにします。デフォルトの Cookie ハンドラーを null にリセットするjava.net.CookieHandler.setDefault(null)と出来上がりです。発信 HTTP リクエストには JSESSIONID Cookie が保持されます。

ところで、Windows と Linux の両方がこの動作を示しました。

于 2014-02-21T16:39:23.730 に答える