You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Chris Cardona <ja...@yahoo.com> on 2006/07/21 09:47:21 UTC

Update: EJB Server Portlet

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 

Re: Update: EJB Server Portlet

Posted by Chris Cardona <ja...@yahoo.com>.
Aaron,

Thanks for your reply. Please see inline text for my
answers…

--- Aaron Mulder <am...@alumni.princeton.edu>
wrote:

> On 7/21/06, Chris Cardona <ja...@yahoo.com>
> 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 agree that we should add the stats for all EJBs
deployed in the server. I can add this later but we
can start with the EJB module stats for now.

> 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.
> 

Good suggestion. One option is to add links for each
EJB module listed inside the “Installed EJB JARs”
portlet to go to “EJB Server” portlet and display
their stats. Another option is to just add one link
that jumps to the “EJB Server” portlet. I can also add
a link to the “Installed EJB JARs” portlet from the
“EJB Server” portlet. Any other ideas?

> > 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.
> 

The ClassLoader and module ID are:
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/openejb-deployer/1.1/car]. The
javax.management.j2ee.statistics.Stats interface is
part of geronimo-j2ee_1.4_spec-1.1.jar and
geronimo-j2ee-management_1.0_spec-1.0.1.jar. Here’s
the dump of the class loader:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/openejb-deployer/1.1/car]
  ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-deployer/1.1/car]
    ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/geronimo-gbean-deployer/1.1/car]
      ClassLoader is
sun.misc.Launcher$AppClassLoader@53ba3d
        ClassLoader is
sun.misc.Launcher$ExtClassLoader@e80a59
    ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-server/1.1/car]
      ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoaderid=geronimo/rmi-naming/1.1/car]
        ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-system/1.1/car]
          ClassLoader is
sun.misc.Launcher$AppClassLoader@53ba3d
            ClassLoader is
sun.misc.Launcher$ExtClassLoader@e80a59

ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/openejb-deployer/1.1/car]
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-axis/1.1/geronimo-axis-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/axis/axis/1.4/axis-1.4.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-javamail_1.3.1_spec/1.1/geronimo-javamail_1.3.1_spec-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/wsdl4j/wsdl4j/1.5.2/wsdl4j-1.5.2.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-axis-builder/1.1/geronimo-axis-builder-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-web-builder/1.1/geronimo-web-builder-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/openejb/openejb-builder/2.1/openejb-builder-2.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/openejb/openejb-core/2.1/openejb-core-2.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-timer/1.1/geronimo-timer-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-util/1.1/geronimo-util-1.1.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo-spec/geronimo-spec-corba/1.0/geronimo-spec-corba-1.0.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/tranql/tranql/1.3/tranql-1.3.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/antlr/antlr/2.7.2/antlr-2.7.2.jar
 
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/openejb/openejb-pkgen-builder/2.1/openejb-pkgen-builder-2.1.jar

    ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-deployer/1.1/car]
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-client/1.1/geronimo-client-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-j2ee-schema/1.1/geronimo-j2ee-schema-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-core/1.1/geronimo-core-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-management/1.1/geronimo-management-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-transaction/1.1/geronimo-transaction-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-j2ee-builder/1.1/geronimo-j2ee-builder-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-naming-builder/1.1/geronimo-naming-builder-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-naming/1.1/geronimo-naming-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-security-builder/1.1/geronimo-security-builder-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-security/1.1/geronimo-security-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-webservices/1.1/geronimo-webservices-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0.1/geronimo-jaxr_1.0_spec-1.0.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-web-builder/1.1/geronimo-web-builder-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-connector-builder/1.1/geronimo-connector-builder-1.1.jar
     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-connector/1.1/geronimo-connector-1.1.jar

        ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/geronimo-gbean-deployer/1.1/car]
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-system/1.1/geronimo-system-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-common/1.1/geronimo-common-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-deployment/1.1/geronimo-deployment-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-j2ee/1.1/geronimo-j2ee-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-management/1.1/geronimo-management-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-service-builder/1.1/geronimo-service-builder-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/xmlbeans/xbean/2.0.0/xbean-2.0.0.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/xstream/xstream/1.1.3/xstream-1.1.3.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar

            ClassLoader is
sun.misc.Launcher$AppClassLoader@53ba3d
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/bin/server.jar

                ClassLoader is
sun.misc.Launcher$ExtClassLoader@e80a59
                 
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/dnsns.jar
                 
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/ldapsec.jar
                 
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/localedata.jar
                 
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/sunjce_provider.jar

        ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-server/1.1/car]
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-core/1.1/geronimo-core-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-common/1.1/geronimo-common-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-connector/1.1/geronimo-connector-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-webservices/1.1/geronimo-webservices-1.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0.1/geronimo-jaxr_1.0_spec-1.0.1.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/asm/asm/1.4.3/asm-1.4.3.jar
         
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/activeio/activeio/2.0-r118/activeio-2.0-r118.jar

            ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/rmi-naming/1.1/car]
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/1.1/geronimo-activation_1.0.2_spec-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0.1/geronimo-ejb_2.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.0.1/geronimo-j2ee-connector_1.5_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-j2ee-deployment_1.1_spec/1.0.1/geronimo-j2ee-deployment_1.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0.1/geronimo-j2ee-jacc_1.0_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0.1/geronimo-j2ee-management_1.0_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-javamail_1.3.1_spec/1.1/geronimo-javamail_1.3.1_spec-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/1.0.1/geronimo-jaxrpc_1.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0.1/geronimo-jaxr_1.0_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0.1/geronimo-jms_1.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jsp_2.0_spec/1.0.1/geronimo-jsp_2.0_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-qname_1.1_spec/1.0.1/geronimo-qname_1.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-saaj_1.1_spec/1.0.1/geronimo-saaj_1.1_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/org/apache/geronimo/specs/geronimo-servlet_2.4_spec/1.0.1/geronimo-servlet_2.4_spec-1.0.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-management/1.1/geronimo-management-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-j2ee/1.1/geronimo-j2ee-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-core/1.1/geronimo-core-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-naming/1.1/geronimo-naming-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-transaction/1.1/geronimo-transaction-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-security/1.1/geronimo-security-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-util/1.1/geronimo-util-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/geronimo/geronimo-webservices/1.1/geronimo-webservices-1.1.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/howl/howl-logger/0.1.11/howl-logger-0.1.11.jar
             
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/repository/activeio/activeio/2.0-r118/activeio-2.0-r118.jar

                ClassLoader is
[org.apache.geronimo.kernel.classloader.JarFileClassLoader
id=geronimo/j2ee-system/1.1/car]
        
                    ClassLoader is
sun.misc.Launcher$AppClassLoader@53ba3d
                     
file:/C:/_G/T.1.1a/assemblies/j2ee-tomcat-server/target/geronimo-1.1/bin/server.jar
        
                        ClassLoader is
sun.misc.Launcher$ExtClassLoader@e80a59
                         
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/dnsns.jar
                         
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/ldapsec.jar
                         
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/localedata.jar
                         
file:/C:/Sun/JDK/j2sdk1.4.2_12/jre/lib/ext/sunjce_provider.jar
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Thanks again,
Chris


> 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)
> >
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Re: Update: EJB Server Portlet

Posted by Aaron Mulder <am...@alumni.princeton.edu>.
On 7/21/06, Chris Cardona <ja...@yahoo.com> 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
>