2011-12-08 4 views
5

私はJAMonを使用しています。私はjamon.warを使って自分のアプリケーションを監視したいと思っています。しかし、私のアプリとjamon.warアプリは異なるクラスローダーを持っているため、お互いの静的変数(データが格納されている場所はわかっている限り)が見えません。私は私のアプリでMonitorFactory.getReport()を呼び出すときに適切なデータを取得しています。jamon.warをtomcatで使用する

これを取得するにはどうすればよいですか?

答えて

4

問題は私がWEB-INF/libにjamo​​n-xx.jarを持っていたことでした。私はそれを削除して(そしてそれはtomcatのlibディレクトリにしかない)、tomcatクラスローダ(これはすべてのアプリケーションクラスローダの親であると思われる)によって読み込まれ、2つのアプリケーションが静的フィールドを共有できるようになります。

+0

異なるアプリケーション間でjarファイルを共有する場合は、tomcat/libディレクトリを使用してください。各Webアプリケーションは実際には独自のクラスローダーを持っていますが、Commonクラスローダーを介してそれらを通信に入れることができます。見てください[ここ](http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html)。 – javanna

+0

EhCache共有の 'CacheManager'(TomcatのすべてのWARの同じマネージャ)で同じ問題が発生することがあります。' ehcache.jar'が各アプリケーションにバンドルされている場合、EhCacheは 'CacheManager'を使用します。静的 'フィールドを共有マネージャ...' ehcache.jar'が '/ lib'ディレクトリに配置されると、両方のアプリケーションが同じ' CacheManager'とキャッシュを共有します。 –

関連する問題