我是jboss的新手,想知道web.xml中ServiceMBean和load-on-startup servlet标记之间有什么区别?另外,我想知道哪一个总是首先加载或者同时加载?在什么情况下,我应该使用MBean,什么时候应该使用启动servlet或者无关紧要?
我需要编写一个类/ servlet来验证是否设置了所有必需的系统属性(例如-DINSTALL_DIR = blah)。如果没有,那就停在那里。否则继续并开始申请。
提前致谢
-A
答案 0 :(得分:1)
ServiceMBean是JMX,它是JVM的一部分。 web.xml中的load-on-startup servlet标记是J2EE应用程序的一部分。
JMX是从JDK 1.5开始的J2SE的一部分。因此,每个JVM可以有一个ServiceMBean。不是每个申请。 JMX用于监视和管理JVM。它提供对以下信息的访问:加载的类数和运行的线程,内存消耗,垃圾收集统计,按需死锁检测等。另一个常见用途是刷新缓存。
JMX允许您使用JMX容器支持的任何管理控制台来检测应用程序并控制/监视它。一个例子是实现参考数据缓存的Web应用程序......
我们之前遇到的一个问题是我们偶尔需要刷新缓存,因为数据库中的客户名称已更改。如果我们在MBean接口上有刷新方法,那么我们应该能够使用JMX控制台触发此事件。 JMX控制台可能是我们的J2EE服务器附带的Web或胖客户端。我们的J2EE服务器也可能支持SNMP。这意味着我们可以从标准Tivoli或UniCenter控制台调用该方法。 http://www.theserverside.com/news/1364664/J2EE-Application-Management-The-Power-of-JMX
您无需远程访问ServiceMBean即可触发某些异步操作。此外,您需要验证应用程序的范围,而不是整个JVM(理论上,您可以在ServiceMBean中处理此问题)。因此,更自然地,将它作为web.xml中的load-on-startup servlet标记来执行。通过这种方式,在每次启动应用程序时都会进行验证。
再澄清一下: ServiceMBean是 JBoss-way 来编写JMX。所有MBean都是服务器范围的(不是应用程序范围的)。这就是我在上面自由使用MBean和ServiceMBean的原因。