2016-09-05 14 views
1

EPUBファイルをアップロードとして受け入れ、その後JARファイルを使用してEPUBでいくつかのチェック/検証を行うJSPがあります。JSPはJARのインスタンスを1つしか実行しません

私はそれがうまく動作するようになったが、私は2つの異なるタブからJSPページを使用するために試験したとき、TAB1TAB2とタブごとに別のファイルをアップロードして、両方のページの結果が1つだけのためのものですtab1またはtab2のいずれかのタブとその後のTomcatサーバーがシャットダウンします。

私はコンソールをチェックし、それは私が私のJARファイルには、静的変数を持つことによって引き起こされていると思い

java.util.ConcurrentModificationExceptionが

を持っています。

私は2つのブラウザを使用していても、JSPはJARのインスタンスを1つだけ実行しますか?

もしそうなら、静的変数を私の唯一のオプションで修正するか、他に何かできることはありますか?

+1

おそらく、ライブラリのクラスを間違った方法で使用していますか?あるいは、すでにライブラリが並列アクセスを許さない方法で書かれていると思われる場合は、いくつかのコードを共有する必要があります。それはあなたが使用する外部ライブラリですか? – home

+0

@homeレスポンスに感謝しますが、私はそれを理解したと思います。結果を保持するのは静的な変数なので、結果は1つだけです。とにかく:)ありがとう:) JSPの – Marc

+0

"私はまだJARの単一のインスタンス"は本当に意味をなさない。 JARにはインスタンスがありません。これは、クラスのバイトコードやその他のリソースの単なるコンテナです。 – Henry

答えて

2

各Webアプリケーションには1つのクラスローダーしかありません。 Webアプリケーションの一部であるJSPは、一度だけロードされるJARを使用します。したがって、静的変数はすべての要求間で共有され、コンテンツは上書きされます。変数を非静的にし、各JSPで新しいインスタンスを作成して処理する必要があります。

+0

これは遅いですが、これは実際に私が行ったことです。JARの静的変数をすべて削除し、各JSPで新しいインスタンスを作成しました。乾杯@peterkofler – Marc

関連する問題