tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zog <jogouss...@gmail.com>
Subject Re: Unknown error in Assembler for MessageDriven bean
Date Wed, 08 Oct 2008 20:17:28 GMT

That's a very complete and clear explanation - as a
newbie in the EJB world, I was not aware of those subtleties.
Thank you very much for the help.
         Zog

David Blevins wrote:
> 
> 
> On Oct 3, 2008, at 8:01 AM, Zog wrote:
> 
>>
>> Hi
>> Unfortunately I cant' post the code - but I solved the issue by just  
>> adding
>> a
>> <messaging-type>javax.jms.MessageListener</messaging-type>
>> in ejb-jar.xml for all my MDBs.
>> One thing to note though is that my MDBs do not directly imlpement  
>> this
>> interface, they extend a class that does - could it be possible that  
>> you're
>> using Class.getDeclaredClasses() instead of getClasses() to  
>> introspect the
>> class ?
> 
> That's definitely what we are doing.  Couple notes on that.
> 
> For EJb 2.1 and prior the <messaging-type> is a required xml element  
> -- autodiscovery via introspection is an EJB 3.0 feature.  If you were  
> to grab an old version of weblogic, the bean would likely not deploy  
> without the <messaging-type> declared.  Something to keep in mind if  
> you intend your app to be an EJB 2.1 compliant app.
> 
> In EJB 3.0 there are some things that the vendor must look into the  
> superclasses for such as @PostConstruct, @PreDestroy, @Resource, and  
> @EJB.  But others like @Stateless, @MessageDriven, @Stateful, @Local,  
> @Remote as well as business interfaces (including message listener  
> interfaces) are only supported in the bean class itself, not the super  
> class.  Some vendors may support searching in super classes for  
> business interfaces, but this is not a compliant behavior and other  
> platforms are not guaranteed to do the same.  A very special note here  
> is that apps that rely on non-compliant auto-discovery of business  
> interfaces in the super class may actually *break* as in EJB 3.1 any  
> ejb that doesn't declare any business interfaces in the bean class  
> itself will be considered a no-interface bean.  This won't affect  
> MDBs, but is something to be aware of.
> 
> 
> -David
> 
> 
>> Dain Sundstrom wrote:
>>>
>>> Can you post the code for you message driven bean or at the very  
>>> least
>>> the class declaration with any extends clause, implements clause and
>>> class annotations?
>>>
>>> My guess is the MDB class is not-spec-compliant and Weblogic has some
>>> special logic to guess the proper message listener interface.  Or, we
>>> have a bug :)
>>>
>>> -dain
>>>
>>> On Sep 30, 2008, at 10:34 AM, Jacques-Olivier Goussard wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm trying to deploy a bunch of MDBs on openejb and encounter this
>>>> error:
>>>>
>>>> 2008-09-30 15:52:51,328 - ERROR - FATAL ERROR: Unknown error in
>>>> Assembler.
>>>> Plea
>>>>
>>>> se send the following stack trace and this message to
>>>> user@openejb.org :
>>>>
>>>> java.lang.IllegalStateException: When annotating a bean class as
>>>> @MessageDriven
>>>>
>>>> without declaring messageListenerInterface, the bean must implement
>>>> exactly
>>>> one
>>>>
>>>> interface, no more and no less.
>>>> beanClass=com.oz.shared.transcoding.sti.protoco
>>>>
>>>> l.ejb.TranscodingProviderMessageListenerBean interfaces=
>>>>
>>>>       at
>>>> org.apache.openejb.config.AnnotationDeployer 
>>>> $ProcessAnnotatedBeans.de
>>>>
>>>> ploy(AnnotationDeployer.java:854)
>>>>
>>>> (see full stack below)
>>>>
>>>> Those EJB were deployed successfully in weblogic, and I didn't yet
>>>> properly
>>>> create the corresponding
>>>>
>>>> Deployment descriptors for openejb – but this error seems an
>>>> internal one
>>>> and given
>>>>
>>>> My EJB are 2.0 (no annotations), I find it strange it complains
>>>> about this
>>>> annotation.
>>>>
>>>> Any ideas someone ?
>>>>
>>>>          /jog
>>>>
>>>>
>>>>
>>>> 2008-09-30 15:52:51,328 - ERROR - FATAL ERROR: Unknown error in
>>>> Assembler.
>>>> Plea
>>>>
>>>> se send the following stack trace and this message to
>>>> user@openejb.org :
>>>>
>>>> java.lang.IllegalStateException: When annotating a bean class as
>>>> @MessageDriven
>>>>
>>>> without declaring messageListenerInterface, the bean must implement
>>>> exactly
>>>> one
>>>>
>>>> interface, no more and no less.
>>>> beanClass=com.oz.shared.transcoding.sti.protoco
>>>>
>>>> l.ejb.TranscodingProviderMessageListenerBean interfaces=
>>>>
>>>>       at
>>>> org.apache.openejb.config.AnnotationDeployer 
>>>> $ProcessAnnotatedBeans.de
>>>>
>>>> ploy(AnnotationDeployer.java:854)
>>>>
>>>>       at
>>>> org.apache.openejb.config.AnnotationDeployer 
>>>> $ProcessAnnotatedBeans.de
>>>>
>>>> ploy(AnnotationDeployer.java:489)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeploye
>>>>
>>>> r.java:169)
>>>>
>>>>       at
>>>> org.apache.openejb.config.ConfigurationFactory 
>>>> $Chain.deploy(Configura
>>>>
>>>> tionFactory.java:148)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.configureApplication(C
>>>>
>>>> onfigurationFactory.java:440)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.configureApplication(C
>>>>
>>>> onfigurationFactory.java:391)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguratio
>>>>
>>>> n(ConfigurationFactory.java:309)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.assembler.classic.Assembler.build(Assembler.java:2
>>>>
>>>> 49)
>>>>
>>>>       at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java: 
>>>> 149)
>>>>
>>>>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:288)
>>>>
>>>>       at org.apache.openejb.server.Server.init(Server.java:63)
>>>>
>>>>       at org.apache.openejb.server.Main.initServer(Main.java:155)
>>>>
>>>>       at org.apache.openejb.server.Main.main(Main.java:128)
>>>>
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>
>>>>       at
>>>> sun 
>>>> .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>>
>>>> java:39)
>>>>
>>>>       at
>>>> sun 
>>>> .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>>
>>>> sorImpl.java:25)
>>>>
>>>>       at java.lang.reflect.Method.invoke(Method.java:585)
>>>>
>>>>       at org.apache.openejb.cli.MainImpl.main(MainImpl.java:151)
>>>>
>>>>       at org.apache.openejb.cli.Bootstrap.main(Bootstrap.java:103)
>>>>
>>>>
>>>>
>>>> 2008-09-30 15:52:51,331 - FATAL - OpenEJB has encountered a fatal
>>>> error and
>>>> cann
>>>>
>>>> ot be started: Assembler failed to build the container system.
>>>>
>>>> org.apache.openejb.OpenEJBException:
>>>> java.lang.IllegalStateException: When
>>>> annot
>>>>
>>>> ating a bean class as @MessageDriven without declaring
>>>> messageListenerInterface,
>>>>
>>>> the bean must implement exactly one interface, no more and no less.
>>>> beanClass=c
>>>>
>>>> om
>>>> .oz
>>>> .shared
>>>> .transcoding.sti.protocol.ejb.TranscodingProviderMessageListenerBean
>>>>
>>>> interfaces=: When annotating a bean class as @MessageDriven without
>>>> declaring m
>>>>
>>>> essageListenerInterface, the bean must implement exactly one
>>>> interface, no
>>>> more
>>>>
>>>> and no less.
>>>> beanClass=com.oz.shared.transcoding.sti.protocol.ejb.TranscodingPro
>>>>
>>>> viderMessageListenerBean interfaces=
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.assembler.classic.Assembler.build(Assembler.java:2
>>>>
>>>> 63)
>>>>
>>>>       at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java: 
>>>> 149)
>>>>
>>>>       at org.apache.openejb.OpenEJB.init(OpenEJB.java:288)
>>>>
>>>>       at org.apache.openejb.server.Server.init(Server.java:63)
>>>>
>>>>       at org.apache.openejb.server.Main.initServer(Main.java:155)
>>>>
>>>>       at org.apache.openejb.server.Main.main(Main.java:128)
>>>>
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>
>>>>       at
>>>> sun 
>>>> .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
>>>>
>>>> java:39)
>>>>
>>>>       at
>>>> sun 
>>>> .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
>>>>
>>>> sorImpl.java:25)
>>>>
>>>>       at java.lang.reflect.Method.invoke(Method.java:585)
>>>>
>>>>       at org.apache.openejb.cli.MainImpl.main(MainImpl.java:151)
>>>>
>>>>       at org.apache.openejb.cli.Bootstrap.main(Bootstrap.java:103)
>>>>
>>>> Caused by: java.lang.IllegalStateException: When annotating a bean
>>>> class as
>>>> @Mes
>>>>
>>>> sageDriven without declaring messageListenerInterface, the bean must
>>>> implement e
>>>>
>>>> xactly one interface, no more and no less.
>>>> beanClass=com.oz.shared.transcoding.s
>>>>
>>>> ti.protocol.ejb.TranscodingProviderMessageListenerBean interfaces=
>>>>
>>>>       at
>>>> org.apache.openejb.config.AnnotationDeployer 
>>>> $ProcessAnnotatedBeans.de
>>>>
>>>> ploy(AnnotationDeployer.java:854)
>>>>
>>>>       at
>>>> org.apache.openejb.config.AnnotationDeployer 
>>>> $ProcessAnnotatedBeans.de
>>>>
>>>> ploy(AnnotationDeployer.java:489)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeploye
>>>>
>>>> r.java:169)
>>>>
>>>>       at
>>>> org.apache.openejb.config.ConfigurationFactory 
>>>> $Chain.deploy(Configura
>>>>
>>>> tionFactory.java:148)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.configureApplication(C
>>>>
>>>> onfigurationFactory.java:440)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.configureApplication(C
>>>>
>>>> onfigurationFactory.java:391)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.config.ConfigurationFactory.getOpenEjbConfiguratio
>>>>
>>>> n(ConfigurationFactory.java:309)
>>>>
>>>>       at
>>>> org 
>>>> .apache.openejb.assembler.classic.Assembler.build(Assembler.java:2
>>>>
>>>> 49)
>>>>
>>>>       ... 11 more
>>>
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/Unknown-error-in-Assembler-for-MessageDriven-bean-tp19747907p19797287.html
>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Unknown-error-in-Assembler-for-MessageDriven-bean-tp19747907p19886737.html
Sent from the OpenEJB User mailing list archive at Nabble.com.


Mime
View raw message