CheckURLという名前のサーブレットがinitメソッドのXMLファイルからデータを読み込み、このXMLのノードリストをservletcontextに配置するWebアプリケーションを作成しています。したがって、このサーブレットに要求されるたびに、xmlから何度も何度もデータを読み取る必要はありません。サーブレットコンテキストからノードリストを取得できます。 xmlを更新するために使用されるアプリケーションには別のサーブレットがあり、xmlが更新されるとservletcontextノードリ変数を更新します。サーブレットのコンテキスト属性を安全に設定する
このシナリオでは、xmlに書き込むときにservletcontextノードリストからの読み取りがブロックされるように同期を取っていきたいと思います。それが最新でないデータを読み込んでいる可能性があります。
これを達成するには、どの同期レベルを使用する必要があるのでしょうか。私はservletcontextオブジェクトで同期する必要がありますか、またはサーブレットコンテキストで設定された要素に対して同期する必要がありますか、サーブレットクラスのインスタンスで同期する必要があります。あなたは何ができるか
「ServetContext」を同期させます。 – EJP
@EJP私は、サーブレットコンテキストで同期すると、私の見解ではアプリケーションが遅くなるのではないかと疑問に思っています。 servletcontextオブジェクトは他のサーブレットでも使用されている可能性があるため、ノードリストに対する読み取り操作や書き込み操作は、サーブレットコンテキストに格納されている他の変数への読み書きをブロックすべきではありません。 – KItis
あなたはこれを考えすぎています。同期されたブロックで費やされた時間だけで、同じことで同期しているアプリケーションの部分だけが表示されます。コンテキスト変数を更新するのにどれくらい時間がかかりますか? – EJP