|
YOUR FEEDBACK
Did you read today's front page stories & breaking news?
SYS-CON.TV |
TOP THREE LINKS YOU MUST CLICK ON Commentary Using JMX
Using JMX
By: Sam Pullara
Sep. 23, 2002 12:00 AM
The Java Management API (JMX) has been integral to managing the WebLogic Server since WebLogic 6.0. Through this API you can search for management beans (mbeans) within the application server and query them for both configuration information and runtime monitoring information. In addition, this API can be used to actually change the configuration of the server. In fact, this API is used internally by the console and other administration tools to do their work and report their data. This API can be a powerful tool for monitoring. Let's look at an example. In this application, you have mostly static content, some JSP pages for your personalized pages, a registration system, a JMS-based data feed, and maybe a small billing application. Where in this application can we use JMX to our advantage? On the static page side, you can access the information for the FileServlet and see how much time was spent serving the static content. It might be less than you expect because of the amount of caching that browsers do automatically on the client side. Most requests for static content will be HEAD requests, checking for changes. For dynamic pages, each servlet in the system is accounted for separately. This data doesn't perfectly reflect the user experience (because the user has the lag between when their request is sent and when they receive the page back), but it does tell just how long each servlet, on average, spends in a request and how many have been made. Our registration system is an entity bean, while the billing system is a stateless session bean backed by an external service. Both beans can be monitored and the information used to tune the size of the caches and pools. Our data feed can also be interrogated to determine if we have been getting as many messages as we have been paying for, or to determine how many subscribers are using the data. Throughput can also be calculated using the attributes on the JMS topic and queue mbeans. Finally, all JDBC connections can be monitored and from their mbeans you can find out how much the pool connections are contended, which will tell you if you need more database client licenses, for instance. The second use of mbeans in the WebLogic Server is for configuration information. The configuration of all resources is contained at runtime by the configuration mbeans. These mbeans are essentially an instantiated representation of the information contained within the config.xml file. Everything from which applications are deployed to which port a server listens on is contained within these interfaces. Most of the individual attributes are relatively straightforward; however, the collection of attributes that describes a deployment unit is complicated and they have been collected for convenience behind the weblogic.Deployer class. Accessing them directly is possible but not reccommended except for looking at configuration and not changing it. The rest of the attributes are fair game, although beware, most of those attributes will only actually change runtime behavior if the component (like a JDBC pool) is redeployed or if the server is restarted. Applications of these configuration mbeans range from determining the resources that a particular application is using to tweaking values based on the feedback from the monitoring mbeans. As you can see, there's a lot of information - but how do you get to it if you're new to JMS and the WebLogic Server? It's actually not that hard. As long as you can use JNDI and read JavaDocs you'll find it pretty easy to navigate the hierarchy of mbeans. In the code sample below you can see how you find the local server mbean home and then find the JDBC pool.
MBeanHome home = (MBeanHome) new This gives you the configuration mbeans for the JDBC pools. If you want to monitor the pools rather than look at their configuration, simply change the type of mbean by adding "Runtime" to it. From this mbean you can determine important information like whether you are leaking connections - you can even get a stack trace of where exactly the connection was allocated! What if you want to use the JMX mbean system without doing any Java programming, like from a script file? Fortunately, we include a tool that will let you view and change mbeans directly from the command line - weblogic.Admin. In addition to PINGing servers, getting JNDI listings, resetting pools, and shutting down the server, it gives you direct access to the mbean hierarchy. In the next code sample you'll see the equivalent weblogic.Admin command.
java weblogic.Admin -username system -password [password] -url [url] GET This gives you an easily readable description of the mbeans that match the type descriptor plus the properties on those mbeans. Similarly, there is a SET command that will change the properties on any mbean in the system. Armed with this tool you should be able to monitor your applications internally in Java and externally from scripts. YOUR FEEDBACK
BEA WEBLOGIC LATEST STORIES
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
|
SYS-CON FEATURED WHITEPAPERS BREAKING NEWS FROM THE WIRES
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||