2011-12-08 30 views
5

Tôi đang sử dụng JAMon và tôi muốn sử dụng jamon.war để theo dõi ứng dụng của mình. Tuy nhiên, ứng dụng của tôi và ứng dụng jamon.war có các trình nạp lớp khác nhau và do đó chúng không thấy các biến tĩnh của nhau (nơi dữ liệu được lưu trữ, theo như tôi hiểu). Tôi đang nhận được dữ liệu thích hợp khi tôi gọi MonitorFactory.getReport() trong ứng dụng của mình.Sử dụng jamon.war trên tomcat

Cách làm việc này?

Trả lời

4

Vấn đề là tôi đã có jamon-xx.jar trong số WEB-INF/lib của mình. Khi tôi gỡ bỏ nó (và chỉ có nó trong thư mục lib của tomcat), nó được tải bởi trình nạp lớp tomcat (mà tôi đoán là cha mẹ của tất cả các trình nạp lớp ứng dụng), và vì vậy hai ứng dụng có thể chia sẻ các trường tĩnh.

+0

Phải, nếu bạn chia sẻ một cái lọ giữa các ứng dụng khác nhau, bạn nên làm điều đó thông qua thư mục tomcat/lib. Mỗi webapp có trên thực tế là trình nạp lớp riêng của nó, nhưng bạn có thể đặt chúng trong giao tiếp thông qua trình nạp lớp phổ biến. Có một cái nhìn [ở đây] (http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html). – javanna

+0

Bạn có thể quan sát cùng một vấn đề với EhCache đã chia sẻ 'CacheManager' (cùng một trình quản lý cho tất cả các WAR trong Tomcat) - nếu' ehcache.jar' được đóng gói với mỗi ứng dụng, mỗi người sẽ có 'CacheManager' của riêng nó kể từ khi EhCache sử dụng' trường tĩnh' để chia sẻ người quản lý ... Khi 'ehcache.jar' được đặt trong thư mục'/lib', cả hai ứng dụng đều chia sẻ cùng một 'CacheManager' và cache. –

Các vấn đề liên quan