1

私は現在、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が適切であるため、ここからのものではないようです。

4

0 に答える 0