利用JMX监控应用措施内、外部的状况
Java打点API (JMX)对打点WebLogic处事器而言是必须的。通过这个API,你可以在应用措施处事器里搜索打点beans (mbeans) 而且通过它们你既可以查询设置信息又可以查询runtime监控信息。 另外,通过这个API还可以用来改变处事器的设置。 事实上,这个API 已在节制台和其他的打点东西上利用着,用来完成它们的事情和提供陈诉数据。
这个API是一个强大的监控东西。让我们来看一个例子。 在这个应用措施中,有大部门的静态内容,一些你的本性化的JSP页面,一个注册系统,一个基于JMS(Java Messaging Services,Java动静处事)的数据系统,以及一个小付费应用系统。在这个应用措施中在那边利用JMX对我们有利呢?在静态页面上,你可觉得FileServlet存取信息而且可以看到耗费了几多时间用来处事静态内容。时间大概比你预期的要少,因为欣赏器自动的在客户端缓存了部门内容。大大都对静态内容的请求将会是HEAD请求,用来查抄变革。
对付动态页面,在系统中的每个servlet是被别离计较地。这个数据不能很好的反应用户的履历 (因为用户在他们送出请求和接到页面的返回之间存在延迟),可是这些数据奉告了平均每个servlet花在一个请求上的时间,以及几多个请求被完成。我们的注册系统是一个实体bean,而付费系统是一个由外部处事返回的无状态会话bean。 两个bean都能被监控,并且通过这些监控信息可以辅佐我们用来优化缓存和池的巨细。我们的数据同样能有助于抉择是否我们已经获得了所需要的信息,或是抉择几多用户正在利用数据。吞吐量也可以利用JMS的topic和queue范例的mbean的属性来计较。另外,所有的JDBC毗连都可以被监控,并且从它们的mbeans你能发明几多毗连池被争用,举例来说,这将辅佐你判定是否需要更多的数据库客户端授权。
mbeans 在WebLogic处事器中的第二种用途是用于设置信息。通过设置mbeans,所有资源的设置都被包括在runtime中。这些mbeans本质上是被包括在config.xml文件里的信息的暗示。陈设在处事器监听端口上的应用措施的所有内容都包罗在这些接口中。大大都个此外属性是直接相关直接;然而,描写一个陈设单位的属性荟萃是巨大的而且为了利便它们被荟萃在weblogic.Deployer类中。直接会见它们是大概的,可是除了看设置以及不改变它之外的操纵是不被推荐的。其余的属性是随意的,但要小心,但假如组件(如JDBC池)被从头陈设或处事器从头启动,大大都这些属性实际上只改变运行时的行为。这些设置性的mbeans 应用的浸染范畴从抉择为某一特定应用利用资源,到调解基于来自监mbeans的反馈数值。
正如你所看到的,这有很多信息――可是假如你对JMS和WebLogic处事器都不熟悉,你如何着手呢? 它实际上不那么难。 只要你能利用JNDI而且可以阅读JavaDocs你就会发明哄骗 mbeans是相当容易的。在下面你所瞥见的代码示例中,会汇报你如何获得当地处事器的mbean home接口以及JDBC池。
MBeanHome home = (MBeanHome) new
InitialContext().lookup(MBeanHome.LOCAL_JNDI_NAME);
Set pools = home.getMBeansByType("JDBCConnectionPool");
上面的代码给出了对付JDBC(Java DataBase Connectivity,Java数据库毗连)池的设置mbean。假如你想监控毗连池而不思量它们的设置,只要通过添加"Runtime"来改变mbean的范例就可以完成。从这个mbean你可以确定重要的信息,好比是否有毗连泄漏――你甚至可以获得一个仓库追踪,找到该毗连的详细位置。
假如你不想做任何Java编程,就像从一个剧本文件中一样的利用JMX mbean系统,怎么办?幸运的是我们有一个呼吁行东西,它能让你以呼吁行的方法直接查察和改变mbean-weblogic.Admin。除了PINGing处事器,获得JNDI列表,重置毗连池,以及封锁处事器外,它给出了直接会见mbean的分层布局。在下面的代码示例中你将看到这样的一个weblogic.Admin的指令。
java weblogic.Admin -username system -password [password] -url [url] GET
-pretty -type JDBCConnectionPool
对比于在这些mbeans上加上属性的范例描写器,这段代码给出了关于mbean的简朴易读的描写。同样的,有一个SET呼吁会在系统中改变任何mbean的属性。
拥有这种东西你应该可以或许在Java内部以及从剧本外部监控你的应用措施。