From: Tim V. <ti...@ad...> - 2006-08-21 12:15:40
|
The MBean framework seems not to be working too well when a property is supposed to be an ObjectName. Take for example Server:threadPool . If you start jetty with java -jar start.jar jetty.xml jetty-jmx.xml the JMX adapter is started, but on inspecting the Server MBean, the threadPool property is null. The connectors are similar (and empty array). The problem is that the ThreadPool is marked in Server- mbean.properties as an ObjectName. This causes ObjectMBean.findAttribute to call getThreadPool, and treat the result as another MBean. It then goes looking for an ObjectName to match the ThreadPool instance it has picked up. The problem is that the ThreadPool is never registered as an MBean. A BoundedThreadPool doesn't know about the Server (and therefore doesn't know about the Container) so it can't easily register itself. The Server can register the ThreadPool (it appears to be safe to register it twice, so we don't need to worry about 2 servers sharing a thread pool), but it can't do that until there's a listener attached to the Container - well, it could, but it would be pointless :( The only place I can see to plug the thread pool into the Container is in Server.doStart, which doesn't appeal to me greatly, but might be OK. Of course that doesn't deal with pools that are created after the Server is started, (listeners that are attached after the Server is started) What's the correct solution here? Is there a conceptual design about how the MBean framework is supposed to fit together? Management and admin of a running server is high on my priority list, so I'd be keen to put a bit of time into the JMX side of things as a post-6.0.0 task once I can get my head around how it's designed to work. :) -- Tim Vernum mailto:tim (at) adjective (dot) org http://www.adjective.org/ |
From: Greg W. <gr...@we...> - 2006-08-21 14:08:13
|
Tim, I think the problem is that you have the wrong order. Try: java -jar start.jar jetty-jmx.xml jetty.xml The jetty-jmx.xml (or jetty-jmx-platform.xml) file sets things up so that new objects are wrapped in MBeans. So if you have the other order, the ThreadPool is created before the MBean infrastructure. I will try to think of a nice way to detect this wrong ordering and produce a warning about it. cheers Tim Vernum wrote: > The MBean framework seems not to be working too well when a property > is supposed to be an ObjectName. > > Take for example Server:threadPool . > > If you start jetty with > java -jar start.jar jetty.xml jetty-jmx.xml > the JMX adapter is started, but on inspecting the Server MBean, the > threadPool property is null. > > The connectors are similar (and empty array). > > The problem is that the ThreadPool is marked in Server- > mbean.properties as an ObjectName. > This causes ObjectMBean.findAttribute to call getThreadPool, and > treat the result as another MBean. > It then goes looking for an ObjectName to match the ThreadPool > instance it has picked up. > > The problem is that the ThreadPool is never registered as an MBean. > > A BoundedThreadPool doesn't know about the Server (and therefore > doesn't know about the Container) so it can't easily register itself. > The Server can register the ThreadPool (it appears to be safe to > register it twice, so we don't need to worry about 2 servers sharing > a thread pool), but it can't do that until there's a listener > attached to the Container - well, it could, but it would be pointless :( > > The only place I can see to plug the thread pool into the Container > is in Server.doStart, which doesn't appeal to me greatly, but might > be OK. > Of course that doesn't deal with pools that are created after the > Server is started, (listeners that are attached after the Server is > started) > > What's the correct solution here? > Is there a conceptual design about how the MBean framework is > supposed to fit together? > > Management and admin of a running server is high on my priority list, > so I'd be keen to put a bit of time into the JMX side of things as a > post-6.0.0 task once I can get my head around how it's designed to > work. :) > -- Greg Wilkins<gr...@we...> US: +1 3104915462 IT: +39 3349267680 http://www.webtide.com UK: +44(0)2079932589 AU: +61(0)417786631 |
From: Tim V. <ti...@ad...> - 2006-08-22 13:58:30
|
On 22/08/2006, at 12:07 AM, Greg Wilkins wrote: > I think the problem is that you have the wrong order. Try: > > java -jar start.jar jetty-jmx.xml jetty.xml Indeed you are right. Mea culpa. |