I just committed the change to the GBean code that removes the
dependency on JMX. The code now only uses the Kernel and ObjectName.
Of course the kernel is still implemented with JMX, but the GBean code
is not aware of this.
To accomplish this, I moved most of the code in the
org.apache.geronimo.gbean.jmx package to
org.apache.geronimo.gbean.runtime. We still have a GBeanMBean, but it
contains almost no logic. All of the code that was in the GBeanMBean
has been moved to GBeanInstance. The GBeanMBean is not depredated, and
you should use GBeanData instead and let the kernel create the
GBeanMBean for you using the loadGBean(gbeanData, classLoader).
Additionally, you should not use GBeanInstance directly. It is
considered part of the internals of the GBean architecture, and is
marked as deprecated.
I also did some of the conversion from JMX exception to Geronimo
specific exception. I only did this for setAttribute, getAttribute and
invoke on the kernel. I would finish this, but I'm already getting in
trouble for working on a holiday :) If someone decides to take this
up, I suggest we think about adding some properties to the exception
classes such as object name, attribute name, and method signature.
In the process of this, I've added two new kernel services,
ProxyManager and LifecycleMonitor. I have marked these both as
depreciated, so we can review the interfaces. We need the basic
functionality to for GBeans, but the interfaces and implementation can
change. Once we are all happy with the services, we can removed the
deprecated tag.
BTW, before I forget the rule with ProxyManager, is if you create a
Proxy you *must* destroy it. Otherwise, we will get a memory leak. I
have some ideas on how to reduce the leaks, but it is good practice to
destroy the proxy as soon as you are done with it.
Happy holidays everyone,
-dain
--
Dain Sundstrom
Chief Architect
Gluecode Software
310.536.8355, ext. 26
|