Maybe a lazy solution but very efficient: put a breakpoint in BeanManagerImpl line 703 and check what triggered the exception (should be a if at that point so should be easy to identify).
I didn't say it was not a tomee/OWB bug - we got some in this area when implementing CDI 1.2 for TomEE 7 so can be an old issue fixed in between. Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-05-19 9:46 GMT+02:00 Emmanuel Touzery <[email protected]>: > Hello, > > yes I didn't expect a TomEE bug, but I'm wondering what could cause > this behaviour. This is TomEE 1.7.2 but we're also doing this in another > 1.7.2 project, so it's not about the version I think. Maybe some stray > dependency? The beans.xml, the dependencies look OK. Anywhere else I should > look? > > Regards, > > Emmanuel > > On 18/05/16 15:21, Romain Manni-Bucau wrote: > >> Hi Emmanuel, >> >> either you use an old version or something else is making it failing, this >> test passes: >> https://gist.github.com/rmannibucau/1d026806a6bb9b89a957c6fba50e4d46 >> >> >> Romain Manni-Bucau >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >> <http://rmannibucau.wordpress.com> | Github < >> https://github.com/rmannibucau> | >> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber >> <http://www.tomitribe.com> | JavaEE Factory >> <https://javaeefactory-rmannibucau.rhcloud.com> >> >> >> 2016-05-18 13:42 GMT+02:00 Emmanuel Touzery < >> [email protected]> >> : >> >> Hello, >>> >>> I'm porting a Glassfish application to TomEE and I don't understand >>> this error that I'm getting: >>> >>> org.apache.openejb.core.transaction.EjbTransactionUtil >>> handleSystemException >>> SEVERE: EjbTransactionUtil.handleSystemException: Given bean type : class >>> org.apache.webbeans.component.ProducerMethodBean is not applicable for >>> the >>> bean instance : String, Name:loggedInAppUserUsername, WebBeans >>> Type:PRODUCERMETHOD, API >>> >>> Types:[java.lang.Comparable<String>,java.lang.Object,java.lang.CharSequence,java.lang.String,java.io.Serializable], >>> >>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named] >>> java.lang.IllegalArgumentException: Given bean type : class >>> org.apache.webbeans.component.ProducerMethodBean is not applicable for >>> the >>> bean instance : String, Name:loggedInAppUserUsername, WebBeans >>> Type:PRODUCERMETHOD, API >>> >>> Types:[java.lang.Comparable<String>,java.lang.Object,java.lang.CharSequence,java.lang.String,java.io.Serializable], >>> >>> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named] >>> at >>> >>> org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:703) >>> at >>> >>> com.lecip.tms.tms_core.application.BeanHelper.getBeanByName(BeanHelper.java:40) >>> >>> I'm having this pretty trivial bean: >>> >>> >>> public class AppUserUsernameProvider { >>> >>> public static final String LOGGED_IN_USERNAME = >>> "loggedInAppUserUsername"; >>> @Inject >>> CurrentAppUserContext mAppUserContext; >>> >>> @Produces >>> //this bean will be looked up by this id >>> @Named(LOGGED_IN_USERNAME) >>> public String getUsername() { >>> return mAppUserContext.getUsername(); >>> } >>> } >>> >>> And then I'm trying to use it like that: >>> >>> String username = >>> BeanHelper.getBeanByName(AppUserUsernameProvider.LOGGED_IN_USERNAME, >>> String.class); >>> >>> And it fails on the getBeanByName() call with the stack I pasted. Not >>> sure >>> what's going on? >>> >>> Thank you! >>> >>> Emmanuel >>> >>> >>> >
