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:

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?

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:

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 

Reply via email to