私は現在、OracleASサーバーにデプロイされたJava EEアプリケーション(Struts 1.1)に取り組んでいます(かなり古いテクノロジー...)
ページ上のセッションから再ロードされるデータに問題があります。
つまり、ブラウザによっては、セッションの動作は同じではありません。私はEclipse+Tomcatでこれをデバッグしようとしていて、私が見ている動作があります(同じバグがあると仮定すると、動作はOracleASでも同じだと思います):
Firefoxでは最初の電話で
session.setAttribute("myobject",myform);
私が検査したときに示された参照は次のとおりです。
com.project.ObjectForm@1a0e2d1 [.....]
同じオブジェクトをロードしているときの次のページ(setAttributeを使用して再度変更されたことはありません):
ObjectForm myform = session.getAttribute("myobject");
参照は今です
com.project.ObjectForm@1a0e2d1 [.....]
値は同じで、サブオブジェクトの参照も同じで、すべて正常に機能します。
IEとChromeでは、参照が変更されます( setAttribute(...)の場合はcom.project.ObjectForm@ad8e84、getAttribute(...)を使用して次のページに再度ロードするとcom.project.ObjectForm@1ee2c5、ページ同じユーザーデータなどを使用してFirefoxとまったく同じであることがテストされました...)さらに悪いことに、一部のデータは実際に失われます!ObjectFormの文字列の例1は、forward =successからforward=になります。したがって、バグです。
私の最初の質問は次のようになります:これはすべて正常ですか?そして、なぜセッション(サーバー側)の動作がブラウザによって異なるのでしょうか。私はセッションの専門家ではないので、ここでの知識が不足していると思いますか?
2つ目は:データが自分のsetAttributeとgetAttributeとは別に変更される可能性は実際にありますか(Firefoxでは参照が同じように見えるため、オブジェクトを変更した場合、セッションで直接変更されますか? )?
渡されたブラウザデータを確認しましたが、どちらの場合もjsessionidが適切であるため、ここからのものではないようです。