Hi,

I'm trying to get two GBeans to talk with eachother. This is the place I got
most of my information from...:
http://cwiki.apache.org/GMOxDEV/gbeansarticle1.html
Some of my code below draws on examples provided in a sample zip file
available on the site, which I was unable to compile.


As I understand it, two GBeans can be made to talk to eachother through an
interface.

So, in my code....
GBeantwo implements an interface(called MyInterface.java) with a single
method called 'doit()'

I would like GBeanone to be able to call doit(). In the toy example I'm
trying to construct for myself, I deploy GBeantwo first (because Gbeanone
has dependency on GBeantwo).


Here is the code for GBeantwo:


public class GBeantwo implements MyInterface {

   public static final GBeanInfo GBEAN_INFO;
   private final ObjectName objectName;


   static {
       GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder("GBeantwo",
GBeantwo.class);

       // attributes
       infoBuilder.addAttribute("objectName", String.class, false);
       //interfaces
       infoBuilder.addInterface(MyInterface.class);
       // constructor
       infoBuilder.setConstructor(new String[]{"objectName"});

       GBEAN_INFO = infoBuilder.getBeanInfo();
   }

   public GBeantwo(String objectName){
       this.objectName = ObjectNameUtil.getObjectName(objectName);
   }


   public static GBeanInfo getGBeanInfo() {
       return GBEAN_INFO;
   }


   public void doit(){
       System.out.println("[GBean2] inside doit()");
       //        Calc.add(2,3);
   }

}




Here is the code for GBeanone:

public class GBeanone{

   public static final GBeanInfo GBEAN_INFO;
   private final ObjectName objectName;
   private final MyInterface myInterface;


   static {
       GBeanInfoBuilder infoBuilder = new GBeanInfoBuilder("GBeanone",
GBeanone.class);

       // attributes
       infoBuilder.addAttribute("objectName", String.class, false);
       //interfaces
       infoBuilder.addReference("MyInterface",MyInterface.class);
       // constructor
       infoBuilder.setConstructor(new
String[]{"objectName","MyInterface"});

       GBEAN_INFO = infoBuilder.getBeanInfo();
   }

   public GBeanone(String objectName,MyInterface myInterface) {

       this.objectName = ObjectNameUtil.getObjectName(objectName);
       this.myInterface = myInterface;
       myInterface.doit();
   }


   public static GBeanInfo getGBeanInfo() {
       return GBEAN_INFO;
   }

}



Here is the code for MyInterface interface:

public interface MyInterface {
   public void doit();
}



And these are the individual deployment plans:

For GBeanone:

<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2";>
 <!--The SharedLib Service-->
 <environment>
   <moduleId>
     <groupId>example1.talking</groupId>
     <artifactId>gbeanone</artifactId>
     <version>2.0-SNAPSHOT</version>
     <type>car</type>
   </moduleId>
   <dependencies>

   </dependencies>
   <hidden-classes/>
   <non-overridable-classes/>
 </environment>
 <gbean name="GBeanOne" class="example1.talking.GBeanone">
 </gbean>
</module>


For GBeantwo:

<module xmlns="http://geronimo.apache.org/xml/ns/deployment-1.2";>
 <!--The SharedLib Service-->
 <environment>
   <moduleId>
     <groupId>example1.talking</groupId>
     <artifactId>gbeantwo</artifactId>
     <version>2.0-SNAPSHOT</version>
     <type>car</type>
   </moduleId>
   <dependencies>

   </dependencies>
   <hidden-classes/>
   <non-overridable-classes/>
 </environment>
 <gbean name="GBeanTwo" class="example1.talking.GBeantwo">
 </gbean>
</module>





GBeantwo deploys with no problem. But when I deploy GBeanone, the
MyInterface.doit() call causes the following to show up on the console:


$ target/geronimo-tomcat6-jee5-2.0-SNAPSHOT/bin/deploy.bat deploy
gbean1.jarexample1/talking/gbeanone-
plan.xml
Using GERONIMO_BASE:   C:\g\target\geronimo-tomcat6-jee5-2.0-SNAPSHOT
Using GERONIMO_HOME:   C:\g\target\geronimo-tomcat6-jee5-2.0-SNAPSHOT
Using GERONIMO_TMPDIR: var\temp
Using JRE_HOME:        C:\Program Files\Java\jdk1.5.0_12\jre
org.apache.geronimo.kernel.config.LifecycleException: start of
example1.talking/gbeanone/2.0-SNAPSHOT/car failed
       at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:547)
       at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:511)
       at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.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:127)
       at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(
GBeanInstance.java:863)
       at org.apache.geronimo.kernel.basic.BasicKernel.invoke(
BasicKernel.java:239)
       at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java
:342)
       at
org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.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:127)
       at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(
GBeanInstance.java:863)
       at org.apache.geronimo.kernel.basic.BasicKernel.invoke(
BasicKernel.java:239)
       at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(
MBeanGBeanBridge.java:168)
       at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(
DynamicMetaDataImpl.java:213)
       at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java
:220)
       at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(
DefaultMBeanServerInterceptor.java:815)
       at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java
:784)
       at javax.management.remote.rmi.RMIConnectionImpl.doOperation(
RMIConnectionImpl.java:1410)
       at javax.management.remote.rmi.RMIConnectionImpl.access$100(
RMIConnectionImpl.java:81)
       at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(
RMIConnectionImpl.java:1247)
       at java.security.AccessController.doPrivileged(Native Method)
       at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(
RMIConnectionImpl.java:1350)
       at javax.management.remote.rmi.RMIConnectionImpl.invoke(
RMIConnectionImpl.java:784)
       at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java
:294)
       at sun.rmi.transport.Transport$1.run(Transport.java:153)
       at java.security.AccessController.doPrivileged(Native Method)
       at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
       at sun.rmi.transport.tcp.TCPTransport.handleMessages(
TCPTransport.java:466)
       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:508)
       at
org.apache.geronimo.kernel.config.KernelConfigurationManager.start(
KernelConfigurationManager.java:187)
       at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:530)
       ... 35 more
Caused by: org.apache.geronimo.gbean.InvalidConfigurationException:
Configuration example1.talking/gbeanone/2.0-SNAPSHOT/car failed to
start due to the following reasons:
 The service 
ServiceModule=example1.talking/gbeanone/2.0-SNAPSHOT/car,j2eeType=GBean,name=GBeanOne
did not start for an unknown reason


       at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans
(ConfigurationUtil.java:471)
       ... 37 more
   Error: Operation failed: start of
   example1.talking/gbeanone/2.0-SNAPSHOT/car failed

       Unknown start exception

       Configuration example1.talking/gbeanone/2.0-SNAPSHOT/car failed to
   start due to the following reasons:

     The service
   ServiceModule=example1.talking
/gbeanone/2.0-SNAPSHOT/car,j2eeType=GBean,name=GBeanOne
   did not start for an unknown reason




And the following shows up in the geronimo logfile:

21:24:45,718 INFO  [DirectoryMonitor] Hot deployer notified that an artifact
was removed: example1.talking/gbeanone/2.0-SNAPSHOT/car
21:25:42,062 ERROR [GBeanInstanceState] Error while starting; GBean is now
in the FAILED state: abstractName="example1.talking
/gbeanone/2.0-SNAPSHOT/car?ServiceModule=example1.talking
/gbeanone/2.0-SNAPSHOT/car,j2eeType=GBean,name=GBeanOne"
java.lang.NullPointerException
   at example1.talking.GBeanone.<init>(GBeanone.java:43)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(
NativeConstructorAccessorImpl.java:39)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
DelegatingConstructorAccessorImpl.java:27)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
   at org.apache.geronimo.gbean.runtime.GBeanInstance.createInstance(
GBeanInstance.java:944)
   at org.apache.geronimo.gbean.runtime.GBeanInstanceState.attemptFullStart
(GBeanInstanceState.java:268)
   at org.apache.geronimo.gbean.runtime.GBeanInstanceState.start(
GBeanInstanceState.java:102)
   at org.apache.geronimo.gbean.runtime.GBeanInstanceState.startRecursive(
GBeanInstanceState.java:124)
   at org.apache.geronimo.gbean.runtime.GBeanInstance.startRecursive(
GBeanInstance.java:551)
   at org.apache.geronimo.kernel.basic.BasicKernel.startRecursiveGBean(
BasicKernel.java:379)
   at
org.apache.geronimo.kernel.config.ConfigurationUtil.startConfigurationGBeans
(ConfigurationUtil.java:442)
   at org.apache.geronimo.kernel.config.KernelConfigurationManager.start(
KernelConfigurationManager.java:187)
   at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:530)
   at
org.apache.geronimo.kernel.config.SimpleConfigurationManager.startConfiguration
(SimpleConfigurationManager.java:511)
   at
org.apache.geronimo.kernel.config.SimpleConfigurationManager$$FastClassByCGLIB$$ce77a924.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:127)
   at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(
GBeanInstance.java:863)
   at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java
:239)
   at org.apache.geronimo.kernel.KernelGBean.invoke(KernelGBean.java:342)
   at
org.apache.geronimo.kernel.KernelGBean$$FastClassByCGLIB$$1cccefc9.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:127)
   at org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(
GBeanInstance.java:863)
   at org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java
:239)
   at org.apache.geronimo.system.jmx.MBeanGBeanBridge.invoke(
MBeanGBeanBridge.java:168)
   at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(
DynamicMetaDataImpl.java:213)
   at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
   at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(
DefaultMBeanServerInterceptor.java:815)
   at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java
:784)
   at javax.management.remote.rmi.RMIConnectionImpl.doOperation(
RMIConnectionImpl.java:1410)
   at javax.management.remote.rmi.RMIConnectionImpl.access$100(
RMIConnectionImpl.java:81)
   at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run
(RMIConnectionImpl.java:1247)
   at java.security.AccessController.doPrivileged(Native Method)
   at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(
RMIConnectionImpl.java:1350)
   at javax.management.remote.rmi.RMIConnectionImpl.invoke(
RMIConnectionImpl.java:784)
   at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:585)
   at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
   at sun.rmi.transport.Transport$1.run(Transport.java:153)
   at java.security.AccessController.doPrivileged(Native Method)
   at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
   at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java
:466)
   at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(
TCPTransport.java:707)
   at java.lang.Thread.run(Thread.java:595)


Does anything look obviously wrong in my GBeans or deployment plans, or is
there a better way for two GBeans to communicate with eachother?

-Ajay

Reply via email to