geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Russell E Glaue <rgl...@cait.org>
Subject Re: Unknown start exception when extending DeltaManager in G1.1 - Special attribute objectName must have the type java.lang.String
Date Fri, 21 Jul 2006 21:53:20 GMT
Wow, this is great information.
This helps a lot.

Thanks!

BTW for anyone reading,
DeltaManager is the class used in clustering sessions. Seen before in Tomcat.
If you set up a web application for clustering using the tomcat container, you 
can use DeltaManager to manage the clustered sessions.
See for Reference:
http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/cluster/session/DeltaManager.html

See the Geronimo Clustering how-to

http://opensource.atlassian.com/confluence/oss/display/GERONIMO/Geronimo+Clustering+Example

Look in the web application deployment plan for DeltaManager to see how it is 
configured.

-RG



Aaron Mulder wrote:
> The problem appears to be that the DeltaManager has a property with
> name "objectName" and type "ObjectName".  That's a conflict with a
> Geronimo special GBean attribute named "objectName" with type
> "String".  You need to avoid that conflict.  I think you have two
> options.
> 
> One option is to, instead of extending DeltaManager, wrap it:
> 
> public class MyGBean {
>    private DeltaManager mgr;
>    ...
> }
> 
> In that case, you can create the DeltaManager in your GBean
> constructor, create the DeltaManager in your GBean doStart, or look up
> an existing DeltaManager somehow.  (I don't know what DeltaManager
> is.)  Then you can expose whatever GBean attributes you want on your
> GBean and pass the values through to the DeltaManager (either have the
> setters call mgr.setXYZ or store up all the values and apply them to
> the DeltaManager instance in doStart).  You'd specifically need to
> avoid exposing the objectName attribute of type ObjectName.
> 
> The other option is to continue to subclass DeltaManager, but instead
> of calling infoBuilder.addInterface(hostinfoGBean.class); you'd need
> to manually add all the attributes that should be exposed on the GBean
> (and exclude the objectName attribute, since it's causing problems).
> 
> Thanks,
>    Aaron
> 
> 
> On 7/21/06, Russell E Glaue <rglaue@cait.org> wrote:
>> Well pretty much I want to wrap the DeltaManager in a GBean. And then 
>> I want to
>> access information from the DeltaManager in a web application using 
>> that same GBean.
>>
>> A lot of documentation I have been reading on GBeans after G1.0 came 
>> out writes
>> about exposing classes in Geronimo by wrapping them in a GBean.
>>
>> -RG
>>
>>
>> Jason Dillon wrote:
>> > Does DeltaManager define an attribute named objectName that is of type
>> > javax.management.ObjectName?
>> >
>> > Do you need to extend DeltaManager?  Maybe you want to delegate to it
>> > instead of extend from it.
>> >
>> > --jason
>> >
>> >
>> > On Jul 21, 2006, at 1:31 PM, Russell E Glaue wrote:
>> >
>> >> My hostinfoGBean gbean deploys but will not startup.
>> >>
>> >> This is my gbean which I am trying to upgrade to Geronimo 1.1. It
>> >> compiled, deployed and started in Geronimo 1.0.
>> >> If I take out the implementation to the DeltaManager and deploy the
>> >> GBean, It deploys and starts up without errors. (code for gbean is 
>> below)
>> >>
>> >> Deployment message after taking DeltaManager implementation out of the
>> >> GBean:
>> >> -
>> >>     Deployed wnode/wnode/1.0/jar
>> >> -
>> >>
>> >>
>> >> When deploying my hostinfoGBean that extends DeltaManager, I get this
>> >> configuration error:
>> >> -
>> >>         Special attribute objectName must have the type 
>> java.lang.String,
>> >>     but is javax.management.ObjectName:
>> >>     targetClass=org.cait.wnode.hostinfoGBean
>> >> -
>> >>
>> >> If I extend DeltaManager in my GBean for Geronimo 1.1, do I now have
>> >> to do something different?
>> >>
>> >> When deploying a GBean, which extends DeltaManager, in Geronimo 1.0 I
>> >> do not get a startup configuration error.
>> >>
>> >>
>> >> Error message after deployment:
>> >> -
>> >> org.apache.geronimo.kernel.config.LifecycleException: start of
>> >> wnode/wnode/1.0/jar failed
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:529)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:493)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.invoke(<generated>)

>>
>> >>
>> >> ... snip ...
>> >>         at
>> >> 
>> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) 
>>
>> >>
>> >>         at java.lang.Thread.run(Thread.java:595)
>> >> Caused by: org.apache.geronimo.kernel.config.InvalidConfigException:
>> >> Unknown start exception
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:440)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.KernelConfigurationManager.start(KernelConfigurationManager.java:187)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration(SimpleConfigurationManager.java:512)

>>
>> >>
>> >>         ... 36 more
>> >> Caused by: org.apache.geronimo.gbean.InvalidConfigurationException:
>> >> Special attribute objectName must have the type java.lang.String, but
>> >> is javax.management.ObjectName: 
>> targetClass=org.cait.wnode.hostinfoGBean
>> >>         at
>> >> 
>> org.apache.geronimo.gbean.runtime.GBeanAttribute.<init>(GBeanAttribute.java:85)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.gbean.runtime.GBeanAttribute.createSpecialAttribute(GBeanAttribute.java:68)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.gbean.runtime.GBeanInstance.addManagedObjectAttributes(GBeanInstance.java:1194)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.gbean.runtime.GBeanInstance.<init>(GBeanInstance.java:245)

>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.basic.BasicKernel.loadGBean(BasicKernel.java:354) 
>>
>> >>
>> >>         at
>> >> 
>> org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:362)

>>
>> >>
>> >>         ... 38 more
>> >>     Error: Operation failed: start of wnode/wnode/1.0/jar failed
>> >>
>> >>         Unknown start exception
>> >>
>> >>         Special attribute objectName must have the type 
>> java.lang.String,
>> >>     but is javax.management.ObjectName:
>> >>     targetClass=org.cait.wnode.hostinfoGBean
>> >>
>> >>
>> >> Here is my deployment plan for hostinfoGBean:
>> >> -
>> >> <?xml version="1.0" encoding="UTF-8"?>
>> >> <module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.1">
>> >>   <environment>
>> >>     <moduleId>
>> >>       <groupId>wnode</groupId>
>> >>       <artifactId>wnode</artifactId>
>> >>       <version>1.0</version>
>> >>       <type>jar</type>
>> >>     </moduleId>
>> >>     <dependencies>
>> >>       <dependency>
>> >>         <groupId>tomcat</groupId>
>> >>         <artifactId>catalina-cluster</artifactId>
>> >>         <version>5.5.15</version>
>> >>         <type>jar</type>
>> >>       </dependency>
>> >>       <dependency>
>> >>         <groupId>tomcat</groupId>
>> >>         <artifactId>catalina</artifactId>
>> >>         <version>5.5.15</version>
>> >>         <type>jar</type>
>> >>       </dependency>
>> >>       <dependency>
>> >>         <groupId>org.apache.geronimo.specs</groupId>
>> >>         <artifactId>geronimo-j2ee_1.4_spec</artifactId>
>> >>         <version>1.1</version>
>> >>         <type>jar</type>
>> >>       </dependency>
>> >>       <dependency>
>> >>         <groupId>org.apache.geronimo.specs</groupId>
>> >>         <artifactId>geronimo-servlet_2.4_spec</artifactId>
>> >>         <version>1.0.1</version>
>> >>         <type>jar</type>
>> >>       </dependency>
>> >>     </dependencies>
>> >>   </environment>
>> >>   <gbean name='hostinfoGBean'
>> >> class='org.cait.wnode.hostinfoGBean'></gbean>
>> >> </module>
>> >> -
>> >>
>> >>
>> >> Here is my hostinfoGBean class:
>> >> org/cait/wnode/hostinfoGBean.java
>> >> -
>> >> package org.cait.wnode;
>> >>
>> >> import java.util.HashMap;
>> >> import org.apache.commons.logging.*;
>> >>
>> >> import org.apache.catalina.cluster.session.DeltaManager;
>> >> import org.apache.geronimo.gbean.GBeanInfo;
>> >> import org.apache.geronimo.gbean.GBeanInfoBuilder;
>> >> import org.apache.geronimo.gbean.GBeanLifecycle;
>> >>
>> >> public class hostinfoGBean extends DeltaManager implements
>> >> GBeanLifecycle {
>> >>
>> >>         public static final GBeanInfo GBEAN_INFO;
>> >>
>> >>         private static final Log glog =
>> >> LogFactory.getLog(hostinfoGBean.class);
>> >>
>> >>         public static GBeanInfo getGBeanInfo(){
>> >>                 return GBEAN_INFO;
>> >>         }
>> >>         static{
>> >>                 GBeanInfoBuilder infoBuilder = new
>> >> GBeanInfoBuilder("hostinfoGBean",hostinfoGBean.class);
>> >>                 infoBuilder.addInterface(hostinfoGBean.class);
>> >>                 GBEAN_INFO = infoBuilder.getBeanInfo();
>> >>         }
>> >>
>> >>         // public hostinfoGBean(String[] hostport) {}
>> >>
>> >>         public void doFail() {
>> >>                 glog.info("Service failed");
>> >>         }
>> >>
>> >>         public void doStart() throws Exception {
>> >>                 glog.info("Service started");
>> >>         }
>> >>
>> >>         public void doStop() throws Exception {
>> >>                 glog.info("Service stopped");
>> >>         }
>> >>
>> >>         public String getName() {
>> >>                 return "node1.domain-noc1.test.com";
>> >>         }
>> >>         public String getPort() {
>> >>                 return "80";
>> >>         }
>> >>         public int getSessionCount() {
>> >>                 HashMap SessionHashMap = this.sessions;
>> >>                 int NumberOfSessions = 0;
>> >>                 NumberOfSessions = SessionHashMap.size();
>> >>                 return NumberOfSessions;
>> >>         }
>> >>
>> >> }
>> >> -
>> >>
>> >
>>
>>


Mime
View raw message