geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Dealing with multiple GBeans
Date Fri, 20 Jan 2006 09:22:28 GMT
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>		
>> 			<groupId>samples</groupId>
>> 	    	        <artifactId>task</artifactId>
>> 	    	        <version>1.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="keepAliveTime">15000</attribute>
>>         	<attribute name="poolSize">30</attribute>
>>         	<attribute
>> name="poolName">DefaultThreadPool</attribute>
>>     	</gbean> -->
>> 	
>> 		<gbean name="MyGBean" class="task.MyGBean">
>>     		<!-- <reference
>> name="Executor"><name>DefaultThreadPool</name></reference>
>>  -->
>> 		    <reference name="APrinter">
>> <name>APrinterGBean</name> </reference>
>> 			<reference name="BPrinter">
>> <name>BPrinterGBean</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
>


Mime
View raw message