Re: Dealing with multiple GBeans
Another issue you don't show all your code but you will have a much easier time matching names if you include the j2eeType in both the reference specifications and the GBeanInfoBuider constructor infoFactory.addReference(APrinter,APrinterGBean.class, NameFactory.GERONIMO_SERVICE); infoFactory.addReference(BPrinter,BPrinterGBean.class, NameFactory.GERONIMO_SERVICE); GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic (FooGBean.class, NameFactory.GERONIMO_SERVICE); hope this helps david jencks On Jan 19, 2006, at 12:20 PM, David Jencks wrote: I think you have named your printer gbeans with keys name=gbean1 and name=gbean2 but the references expect them to be named name=APrinterGBean and name=BPrinterGBean. You can look in var/log/geronimo.log for debug messages about why MyGBean didn't start: it will tell you what it is looking for. You might need to adjust the log level to include DEBUG level. thanks david jencks On Jan 19, 2006, at 11:44 AM, Nelson A. Perez wrote: Hi All, With you help I have been developing a small application. The goal is very simple, we have 3 GBeans: MyGBean, APrinterGBean and BPrinterGBean. MyGBean invokes a print operation on the two printers which it references and gets via dependency injection. MyGBean prints MyGBean when started. For the other two GBeans, they have public print operations that when invoked (by MyGBean in this case) they output APrinterGBean and BPrinterGBean respectively. So, if all were working correctly, we would see the sequence: MyGBean APrinterGBean BPrinterGBean If I run MyGBean without referencing any of the printer GBeans, I get the correct message: MyGBean. However, when I do handle the references for APrinterGBean and BPrinterGBean, I am able to compile and deploy the configuratiion plan successfuly, but only APrinterGBean and BPrinterGBean get started and as a result nothing gets printed. It is puzzling that it seems to be working fine, but MyGBean just doesn't get started, because if it were, we would see the sequence of the three messages: MyGBean APrinterGBean BPrinterGBean Any idea on why this is happening ? It all seems to be done properly, so I am a bit surprised. The configuration plan that I am using is: ?xml version=1.0 encoding=UTF-8? configuration xmlns=http://geronimo.apache.org/xml/ns/deployment; configId=task/SampleTask dependency groupIdsamples/groupId artifactIdtask/artifactId version1.0/version /dependency gbean name=gbean1 class=task.APrinterGBean /gbean gbean name=gbean2 class=task.BPrinterGBean /gbean !-- gbean name=DefaultThreadPool class=org.apache.geronimo.pool.ThreadPool attribute name=keepAliveTime15000/attribute attribute name=poolSize30/attribute attribute name=poolNameDefaultThreadPool/attribute /gbean -- gbean name=MyGBean class=task.MyGBean !-- reference name=ExecutornameDefaultThreadPool/name/reference -- reference name=APrinter nameAPrinterGBean/name /reference reference name=BPrinter nameBPrinterGBean/name /reference /gbean !-- gbean name=PrintStopper class=task.PrintStopper / /gbean -- /configuration The MyGBean looks as follows: public class MyGBean implements GBeanLifecycle { ... private APrinterGBean APrinter; private BPrinterGBean BPrinter; ... public void setAPrinter( APrinterGBean APrinter ) { this.APrinter = APrinter; } public void setBPrinter( BPrinterGBean BPrinter ) { this.BPrinter = BPrinter; } ... infoFactory.addReference(APrinter,APrinterGBean.class); infoFactory.addReference(BPrinter,BPrinterGBean.class); ... public void doStart() throws WaitingException, Exception { System.out.println(GBean: + objectName + has started); log.info(My GBean has started); log.info(objectName); log.info( bean1 = + APrinter); log.info( bean2 = + BPrinter); print(); //prints: MyGBean APrinter.print(); //prints: APrinterGBean BPrinter.print(); //prints: BPrinterGBean } Clearly, the doStart() of MyGBean operation is not being executed, but I dont get any error messages related to MyGBean on the console nor on the log files. So, the issue here is that the configuration plan is deployed correctly, APrinterGBean and BPrinterGBean get started, but MyGBean is not getting started. Finally, in the next
Dealing with multiple GBeans
Hi All, With you help I have been developing a small application. The goal is very simple, we have 3 GBeans: MyGBean, APrinterGBean and BPrinterGBean. MyGBean invokes a print operation on the two printers which it references and gets via dependency injection. MyGBean prints MyGBean when started. For the other two GBeans, they have public print operations that when invoked (by MyGBean in this case) they output APrinterGBean and BPrinterGBean respectively. So, if all were working correctly, we would see the sequence: MyGBean APrinterGBean BPrinterGBean If I run MyGBean without referencing any of the printer GBeans, I get the correct message: MyGBean. However, when I do handle the references for APrinterGBean and BPrinterGBean, I am able to compile and deploy the configuratiion plan successfuly, but only APrinterGBean and BPrinterGBean get started and as a result nothing gets printed. It is puzzling that it seems to be working fine, but MyGBean just doesn't get started, because if it were, we would see the sequence of the three messages: MyGBean APrinterGBean BPrinterGBean Any idea on why this is happening ? It all seems to be done properly, so I am a bit surprised. The configuration plan that I am using is: ?xml version=1.0 encoding=UTF-8? configuration xmlns=http://geronimo.apache.org/xml/ns/deployment; configId=task/SampleTask dependency groupIdsamples/groupId artifactIdtask/artifactId version1.0/version /dependency gbean name=gbean1 class=task.APrinterGBean /gbean gbean name=gbean2 class=task.BPrinterGBean /gbean !-- gbean name=DefaultThreadPool class=org.apache.geronimo.pool.ThreadPool attribute name=keepAliveTime15000/attribute attribute name=poolSize30/attribute attribute name=poolNameDefaultThreadPool/attribute /gbean -- gbean name=MyGBean class=task.MyGBean !-- reference name=ExecutornameDefaultThreadPool/name/reference -- reference name=APrinter nameAPrinterGBean/name /reference reference name=BPrinter nameBPrinterGBean/name /reference /gbean !-- gbean name=PrintStopper class=task.PrintStopper / /gbean -- /configuration The MyGBean looks as follows: public class MyGBean implements GBeanLifecycle { ... private APrinterGBean APrinter; private BPrinterGBean BPrinter; ... public void setAPrinter( APrinterGBean APrinter ) { this.APrinter = APrinter; } public void setBPrinter( BPrinterGBean BPrinter ) { this.BPrinter = BPrinter; } ... infoFactory.addReference(APrinter,APrinterGBean.class); infoFactory.addReference(BPrinter,BPrinterGBean.class); ... public void doStart() throws WaitingException, Exception { System.out.println(GBean: + objectName + has started); log.info(My GBean has started); log.info(objectName); log.info( bean1 = + APrinter); log.info( bean2 = + BPrinter); print(); //prints: MyGBean APrinter.print(); //prints: APrinterGBean BPrinter.print(); //prints: BPrinterGBean } Clearly, the doStart() of MyGBean operation is not being executed, but I dont get any error messages related to MyGBean on the console nor on the log files. So, the issue here is that the configuration plan is deployed correctly, APrinterGBean and BPrinterGBean get started, but MyGBean is not getting started. Finally, in the next step of my little project I will make both APrinterGBean and BPRinterGBean run each on a ThreadPool. Each will run an infinite loop and I will create a fourth GBean whose sole purpose will be to stop the two printers. You can see the beginnings of this in the commented sections of my config plan above. After I am done, I can post the whole project, so that others can learn from it. The Internet is full of examples with code that does not compile, so I am sure this my code will be useful to others. Thanks, NP. __ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Re: Dealing with multiple GBeans
I think you have named your printer gbeans with keys name=gbean1 and name=gbean2 but the references expect them to be named name=APrinterGBean and name=BPrinterGBean. You can look in var/log/geronimo.log for debug messages about why MyGBean didn't start: it will tell you what it is looking for. You might need to adjust the log level to include DEBUG level. thanks david jencks On Jan 19, 2006, at 11:44 AM, Nelson A. Perez wrote: Hi All, With you help I have been developing a small application. The goal is very simple, we have 3 GBeans: MyGBean, APrinterGBean and BPrinterGBean. MyGBean invokes a print operation on the two printers which it references and gets via dependency injection. MyGBean prints MyGBean when started. For the other two GBeans, they have public print operations that when invoked (by MyGBean in this case) they output APrinterGBean and BPrinterGBean respectively. So, if all were working correctly, we would see the sequence: MyGBean APrinterGBean BPrinterGBean If I run MyGBean without referencing any of the printer GBeans, I get the correct message: MyGBean. However, when I do handle the references for APrinterGBean and BPrinterGBean, I am able to compile and deploy the configuratiion plan successfuly, but only APrinterGBean and BPrinterGBean get started and as a result nothing gets printed. It is puzzling that it seems to be working fine, but MyGBean just doesn't get started, because if it were, we would see the sequence of the three messages: MyGBean APrinterGBean BPrinterGBean Any idea on why this is happening ? It all seems to be done properly, so I am a bit surprised. The configuration plan that I am using is: ?xml version=1.0 encoding=UTF-8? configuration xmlns=http://geronimo.apache.org/xml/ns/deployment; configId=task/SampleTask dependency groupIdsamples/groupId artifactIdtask/artifactId version1.0/version /dependency gbean name=gbean1 class=task.APrinterGBean /gbean gbean name=gbean2 class=task.BPrinterGBean /gbean !-- gbean name=DefaultThreadPool class=org.apache.geronimo.pool.ThreadPool attribute name=keepAliveTime15000/attribute attribute name=poolSize30/attribute attribute name=poolNameDefaultThreadPool/attribute /gbean -- gbean name=MyGBean class=task.MyGBean !-- reference name=ExecutornameDefaultThreadPool/name/reference -- reference name=APrinter nameAPrinterGBean/name /reference reference name=BPrinter nameBPrinterGBean/name /reference /gbean !-- gbean name=PrintStopper class=task.PrintStopper / /gbean -- /configuration The MyGBean looks as follows: public class MyGBean implements GBeanLifecycle { ... private APrinterGBean APrinter; private BPrinterGBean BPrinter; ... public void setAPrinter( APrinterGBean APrinter ) { this.APrinter = APrinter; } public void setBPrinter( BPrinterGBean BPrinter ) { this.BPrinter = BPrinter; } ... infoFactory.addReference(APrinter,APrinterGBean.class); infoFactory.addReference(BPrinter,BPrinterGBean.class); ... public void doStart() throws WaitingException, Exception { System.out.println(GBean: + objectName + has started); log.info(My GBean has started); log.info(objectName); log.info( bean1 = + APrinter); log.info( bean2 = + BPrinter); print(); //prints: MyGBean APrinter.print(); //prints: APrinterGBean BPrinter.print(); //prints: BPrinterGBean } Clearly, the doStart() of MyGBean operation is not being executed, but I dont get any error messages related to MyGBean on the console nor on the log files. So, the issue here is that the configuration plan is deployed correctly, APrinterGBean and BPrinterGBean get started, but MyGBean is not getting started. Finally, in the next step of my little project I will make both APrinterGBean and BPRinterGBean run each on a ThreadPool. Each will run an infinite loop and I will create a fourth GBean whose sole purpose will be to stop the two printers. You can see the beginnings of this in the commented sections of my config plan above. After I am done, I can post the whole project, so that others can learn from it. The Internet is full of examples with code that does not compile, so I am sure this my code will be useful to others. Thanks, NP. __ Do You Yahoo!?