geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sachin Patel <sppat...@gmail.com>
Subject Re: help! gbean ref doesn't contain added interfaces
Date Mon, 04 Dec 2006 17:30:34 GMT
I figured it out... as far as the references and reference types I  
wasn't doing anything wrong, the problem was specific to me updating  
the Tomcat/Jetty Module Builders and that the SwitchingModuleBuilder  
needed to be updated as well.

thx.


On Dec 2, 2006, at 3:59 AM, David Jencks wrote:

> I might be misunderstanding what you are trying to do....
>
> When you have a gbean reference, you have to declare the interface  
> you are going to use in the GBeanReferenceInfo you set up in that  
> static block of code.  You'll get a proxy implementing exactly that  
> interface and nothing else AFAIK.  So if you want to use 2  
> interfaces that a gbean implements, and neither extends the other,  
> you need 2 references.
>
> You might be able to declare the "interface" to be the gbean  class  
> itself (as long as it has a no-arg constructor) and then you should  
> get a proxy implementing everything in the gbean itself.  Be sure  
> not to have any public final methods in the gbean if you do this.
>
> Hope this helps
> david jencks
>
> On Dec 1, 2006, at 7:31 PM, Sachin Patel wrote:
>
>> Yep, the GBean does implement the interface, and the GBean isn't a  
>> new GBean, I just modified an existing GBean with an additional  
>> interface.
>>
>> On Dec 1, 2006, at 5:18 PM, Aaron Mulder wrote:
>>
>>> Are you sure the GBean in question actually implements the  
>>> interface?
>>> And that the module builder you're interacting with is definitely
>>> using the implementation class you think it is?  (Maybe you copy and
>>> pasted the GBeanInfo block from old to new GBean and it's  
>>> referring to
>>> the old class instead of the new class in the GBeanInfo in the new
>>> class?)
>>>
>>> Thanks,
>>>      Aaron
>>>
>>> On 12/1/06, Sachin Patel <sppatel2@gmail.com> wrote:
>>>> Thanks Aaron.. see inline.
>>>>
>>>>
>>>> On Dec 1, 2006, at 4:20 PM, Aaron Mulder wrote:
>>>>
>>>> So what you get back is ordinarily a proxy to the actual  
>>>> service.  If
>>>> you get the abstract name for the returned module builder (the  
>>>> kernel
>>>> has a call to do that) and then get a fresh proxy to it (from the
>>>> proxy manager from the kernel), does it include your new interface?
>>>>
>>>> Yes, creating a fresh proxy includes the new interface, but  
>>>> unfortunately
>>>> that only gets me passed the class cast, as it throws an  
>>>> exception "No
>>>> implementation method" when calling a method on the interface.  :(
>>>>
>>>> If so, it suggests that the proxies generated for the reference
>>>> include only the interfaces that match the reference type.
>>>>
>>>> Thats what I assumed, but if I changed the reference type to the  
>>>> new
>>>> interface, then for some reason getWebConfigBuilder() returns  
>>>> null, so
>>>> something was still expecting the referenceType for the builders  
>>>> to be
>>>> ModuleBuilder.class.
>>>>
>>>>
>>>> If not, it
>>>> may be that the class loader that's provided to create the proxy
>>>> doesn't include the added interface (though there used to be a  
>>>> warning
>>>> emitted every time this happened).
>>>> I'm not sure what could be done to
>>>> work around that -- maybe either add the interface to other  
>>>> modules as
>>>> needed or contrive to use the right module's class loader to create
>>>> the proxy.
>>>>
>>>> Thanks,
>>>>     Aaron
>>>>
>>>> On 12/1/06, Sachin Patel <sppatel2@gmail.com> wrote:
>>>>
>>>> I'm having some trouble figuring out why I'm getting a  
>>>> ClassCastException
>>>> and would appreciate if someone could shed some light...
>>>>
>>>> In TomcatModuleBuilder I implement an "additional" interface  
>>>> ModuleBuilder2
>>>> as well as add..
>>>>
>>>> static {
>>>> ...
>>>>  infoBuilder.addInterface(ModuleBuilder2.class)
>>>> ...
>>>> }
>>>>
>>>> But then in EARConfigBuilder if I call...
>>>>
>>>> ((ModuleBuilder2) getWebConfigBuilder())
>>>>
>>>> I get a ClassCastException casting it to ModuleBuilder2 during  
>>>> the building
>>>> of the configs which I don't understand why.  If I inspect the  
>>>> interfaces of
>>>> getWebConfigBuilder() it only returns ModuleBuilder and
>>>> GeronimoManagedGBean.  Why isn't ModuleBuilder2 being listed?
>>>>
>>>> I tried updated the referenceType for WebBuilder in  
>>>> EARConfigBuilder from
>>>> ModuleBuilder to ModuleBuilder2, but then in that case  
>>>> getWebConfigBuilder
>>>> ends up returning null.
>>>>
>>>> What am I missing? Why can't I add an additional interface to the
>>>> TomcatModuleBuilder GBean?
>>>>
>>>> Thanks
>>>>
>>>> -sachin
>>>>
>>>>
>>>>
>>>>
>>>> -sachin
>>>>
>>>>
>>
>>
>> -sachin
>>
>>
>


-sachin



Mime
View raw message