On 7/21/06, Chris Cardona <[EMAIL PROTECTED]> wrote:
A few months ago I submitted a patch to add EJB Server
portlet in the Console -
http://issues.apache.org/jira/browse/GERONIMO-1701.
The patch worked on G 1.0 source and I was hoping I
can get some feedback on my design and implementation
so I can make it better. Anyway, I'm working on
updating the patch to work on G 1.1.0 / 1.1.1 / 1.2
sources and I have a couple of questions:
Sounds good!
1. In my implementation, I modified
org.openejb.EJBModuleImpl to implement
org.apache.geronimo.management.StatisticsProvider
interface. This is part of JSR 77's performance data
framework. This allows the EJBModuleImpl to provide
basic statistics like the count of different EJB types
(EB, SLSB, SFSB, MDB). Is EJBModuleImpl the best place
to implement the said interface? If not then where is
the best place to implement it?
I expect we may want similar statistics at the "EJB Container" level
(meaning for all EJBs deployed in the server), but it makes sense to
have them at the module level too.
I will say that if we have stats at the module level, I would expect
to access them via the list of deployed EJB modules elsewhere in the
console, not necessarily through an "EJB Server" page, but I'm not
sure exactly how you've got things laid out.
2. While updating the patch to work on G 1.1.0 / 1.1.1
/ 1.2, I encountered a problem. I made the necessary
changes including modifying EJBModuleImpl to implement
StatisticsProvider interface. This defines a method –
public Stats getStats(). I was able to rebuild G
including the openejb core module successfully but
deploying a simple stateless session bean throws the
ff:
Can you find out what ClassLoader is being used at the time? It
should be a Geronimo ClassLoader from which you can get a module ID
and a list of JARs in both it and its parent modules.
Thanks,
Aaron
java.lang.NoClassDefFoundError:
javax/management/j2ee/statistics/Stats
at java.lang.Class.getDeclaredMethods0(Native
Method)
at
java.lang.Class.privateGetDeclaredMethods(Class.java:1655)
at
java.lang.Class.privateGetPublicMethods(Class.java:1778)
at
java.lang.Class.privateGetPublicMethods(Class.java:1788)
at java.lang.Class.getMethods(Class.java:832)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.addInterface(GBeanInfoBuilder.java:279)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.addInterface(GBeanInfoBuilder.java:273)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.addInterface(GBeanInfoBuilder.java:267)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.<init>(GBeanInfoBuilder.java:207)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.createStatic(GBeanInfoBuilder.java:92)
at
org.apache.geronimo.gbean.GBeanInfoBuilder.createStatic(GBeanInfoBuilder.java:45)
at
org.openejb.EJBModuleImpl.<clinit>(EJBModuleImpl.java:255)
at
org.openejb.deployment.OpenEJBModuleBuilder.addGBeans(OpenEJBModuleBuilder.java:399)
at
org.openejb.deployment.OpenEJBModuleBuilder$$FastClassByCGLIB$$11bd7b20.invoke(<generated>)
at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.j2ee.deployment.ModuleBuilder$$EnhancerByCGLIB$$1fd0a0c0.addGBeans(<generated>)
at
org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:562)
at
org.apache.geronimo.j2ee.deployment.EARConfigBuilder$$FastClassByCGLIB$$38e56ec6.invoke(<generated>)
at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:817)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$
$2bbda932.buildConfiguration(<generated>)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:302)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:124)
at
org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(<generated>)
at
net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:852)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
at
org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:106)
at
org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:60)
at java.lang.Thread.run(Thread.java:534)
Any ideas why the openejb module builder is not
picking up javax/management/j2ee/statistics/Stats
interface which is part of the G J2EE 1.4 spec jar?
Any comments or suggestions to EJB server portlet
design and implementation are welcome. You can
checkout the JIRA -
http://issues.apache.org/jira/browse/GERONIMO-1701
which includes ejbMgrPortlet-Snapshot.zip (contains
*.jpg snapshot of the EJB Server portlet)
Thanks,
Chris
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com