2009-07-10 17 views
6

Tôi đang cố gắng sử dụng API JMX để nhận số phiên hoạt động cho một ứng dụng web.Bắt số phiên hoạt động với JMX (Tiện ích mở rộng quản lý Java) API

  1. Có thể sử dụng API JMX để nhận loại thông tin này không?
  2. Nếu có, mức độ tin cậy của nó sẽ như thế nào?
  3. Bất kỳ mã ví dụ nào về cách thực hiện việc này?

Tôi đã đọc tài liệu và hướng dẫn JMX, nhưng chúng cho tôi cái nhìn tổng quan về công nghệ là gì. Tôi chỉ không thể xác định những gì tôi cần, được nêu ra.

Trả lời

5

Bạn có thể thực hiện việc này bằng cách sử dụng một cái gì đó như JConsole hoặc JVisualVM khi bạn định cấu hình máy chủ ứng dụng của mình để hiển thị cổng JMX. Bạn không đề cập đến máy chủ ứng dụng nào bạn đang sử dụng nhưng đối với Tomcat, nó được mô tả ở đây: http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html. Khi bạn kết nối với JConsole, Tomcat sẽ trưng ra một MBean có thông tin về phiên làm việc nhưng một lần nữa nó phụ thuộc vào vùng chứa mà bạn sử dụng.

+1

câu hỏi đặt ra là gắn thẻ "Jboss", vì vậy nó là Tomcat, nhưng hương vị JBoss của nó. Nó có lẽ sẽ không có lớp JMX Tomcat chuẩn. – skaffman

2

Để theo dõi các phiên bạn có thể sử dụng HttpSessionListener. Nếu bạn muốn hiển thị các phiên hoạt động thông qua JMX, bạn có thể đăng ký một mbean và gọi nó từ các ứng dụng khác (xem tài liệu JMX).

1

JBoss đã hiển thị số phiên hoạt động qua JMX, nhưng chỉ trên toàn bộ máy chủ, không phải trên mỗi webapp. Nếu bạn chỉ có một ứng dụng web được sử dụng, thì điều đó sẽ ổn cho bạn.

Chuyển bảng điều khiển JMX trên cổng 8080 và tìm mục nhập có tên host=localhost,path=/,type=Manager. Bên trong đó bạn sẽ tìm thấy một mục nhập cho số phiên hoạt động.

0

Câu trả lời được đưa ra bởi skaffman là khá hữu ích, nhưng tôi sẽ sửa đổi mà JBoss có thể cung cấp cho bạn phiên mỗi webapp bằng cách tìm kiếm:

host = localhost, path =/your_webapp_context, type = Giám đốc

(thay thế your_webapp_context với bối cảnh của webapp bạn quan tâm đến ...)

3
ObjectName name = new ObjectName("Catalina:type=Manager,path=/NAME_OF_APP,host=localhost"); 
ManagementFactory.getPlatformMBeanServer().getAttribute(name, "activeSessions"); 
+2

Hm, trên Tomcat 7 không hoạt động. Nhưng 'Catalina: type = Manager, context =/NAME_OF_APP, host = localhost' – knalli