No, I didn't add the @Default to the @Produces method.

I verified:

@RequestScoped
public class ConversationWrapper {
        
        private @Inject Conversation conv;

        @Produces
        @Dependent
        @Named("conv")
        public Conversation getConv() {
                return conv;
        }
}

result:

Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is more 
than one Bean with type javax.enterprise.context.ConversationQualifiers: 
[@javax.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  conv, Bean Owner : 
[ConversationWrapper, WebBeansType:MANAGED, Name:null, API 
Types:[java.lang.Object,eg.ConversationWrapper], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
found beans: 
ConversationImpl, WebBeansType:CONVERSATION, 
Name:javax.enterprise.context.conversation, API 
Types:[java.lang.Object,org.apache.webbeans.conversation.ConversationImpl,javax.enterprise.context.Conversation],
 Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any] from 
jar:file:/C:/Users/xavier/.m2/repository/org/apache/openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API 
Types:[java.lang.Object,javax.enterprise.context.Conversation], 
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named]
 from 
file:/D:/development/workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class




From: Romain Manni-Bucau <[email protected]>
Sent: Wednesday, September 28, 2016 11:47 PM
To: [email protected]
Subject: Re: OpenEJB and EL
    
Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API
Types:[java.lang.Object,javax.enterprise.context.Conversation],
Qualifiers:[javax.enterprise.inject.Default,javax.
enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class

Why is there @Default there? producer should only have the @Named you set


Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog



Romain Manni-Bucau (@rmannibucau) | Twitter
twitter.com
The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) / 
Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory: 
https://t.co/0VnvWwbedt . Blog ...
<https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog


RBlog: the RManniBucau v2 Blog
blog-rmannibucau.rhcloud.com
RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, Angular, Open Source, 
Code and geeky topics...
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |


[old blog] new RManniBucau().blog()
rmannibucau.wordpress.com
New blog on: https://blog-rmannibucau.rhcloud.com/
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
<http://www.tomitribe.com> | JavaEE Factory
<https://javaeefactory-rmannibucau.rhcloud.com>

2016-09-28 23:45 GMT+02:00 Xavier Dury <[email protected]>:

> It seems that to inject the conversation in ConversationWrapper.conversation,
> OWB does consider both the build-in conversation bean and the produced one
> from... ConversationWrapper.getConv().
>
> I tried something like that:
>
> @RequestScoped
> public class ConversationWrapper {
>
>         private @Inject @Named("javax.enterprise.context.conversation")
> Conversation conv;
>
>         @Produces
>         @Dependent
>         @Named("conv")
>         public Conversation getConv() {
>                 return conv;
>         }
> }
>
> But it gives the following error:
>
> Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api
> type [javax.enterprise.context.Conversation] is not found with the
> qualifiers
> Qualifiers: [@javax.inject.Named(value=javax.enterprise.context.
> conversation)]
> for injection into Field Injection Point, field name :  conv, Bean Owner :
> [ConversationWrapper, WebBeansType:MANAGED, Name:null, API
> Types:[eg.ConversationWrapper,java.lang.Object],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
>
>
>
>
> From: Xavier Dury <[email protected]>
> Sent: Wednesday, September 28, 2016 11:34 PM
> To: [email protected]
> Subject: Re: OpenEJB and EL
>
> Got the same result with 'conv':
>
> Caused by: javax.enterprise.inject.AmbiguousResolutionException: There is
> more than one Bean with type javax.enterprise.context.ConversationQualifiers:
> [@javax.enterprise.inject.Default()]
> for injection into Field Injection Point, field name :  conversation, Bean
> Owner : [ConversationAliaser, WebBeansType:MANAGED, Name:null, API
> Types:[java.lang.Object,eg.ConversationAliaser],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]]
> found beans:
> Conversation, WebBeansType:PRODUCERMETHOD, Name:conv, API
> Types:[java.lang.Object,javax.enterprise.context.Conversation],
> Qualifiers:[javax.enterprise.inject.Default,javax.
> enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
> workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
> ConversationImpl, WebBeansType:CONVERSATION, 
> Name:javax.enterprise.context.conversation,
> API Types:[org.apache.webbeans.conversation.ConversationImpl,
> javax.enterprise.context.Conversation,java.lang.Object],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]
> from jar:file:/C:/Users/xavier/.m2/repository/org/apache/
> openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-
> 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
>
>
>
>
>
>
>
> From: Romain Manni-Bucau <[email protected]>
> Sent: Wednesday, September 28, 2016 11:29 PM
> To: [email protected]
> Cc: Mark Struberg
> Subject: Re: OpenEJB and EL
>
> missing @Named("conv")?
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>
>
>
> Romain Manni-Bucau (@rmannibucau) | Twitter
> twitter.com
> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) /
> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
> https://t.co/0VnvWwbedt . Blog ...
>
>
>
> Romain Manni-Bucau (@rmannibucau) | Twitter
> twitter.com
> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF / Java(EE) /
> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
> https://t.co/0VnvWwbedt . Blog ...
> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog
>
>
> RBlog: the RManniBucau v2 Blog
> blog-rmannibucau.rhcloud.com
> RBlog: Romain Manni-Bucau Blog about Java, JavaEE, TomEE, Angular, Open
> Source, Code and geeky topics...
> <http://rmannibucau.wordpress.com> | Github <https://github.com/
> rmannibucau> |
>
>
> [old blog] new RManniBucau().blog()
> rmannibucau.wordpress.com
> New blog on: https://blog-rmannibucau.rhcloud.com/
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
>
> 2016-09-28 23:27 GMT+02:00 Xavier Dury <[email protected]>:
>
> >
> > Caused by: javax.enterprise.inject.AmbiguousResolutionException: There
> is
> > more than one Bean with type javax.enterprise.context.
> ConversationQualifiers:
> > [@javax.enterprise.inject.Default()]
> > for injection into Field Injection Point, field name :  conversation,
> Bean
> > Owner : [ConversationAliaser, WebBeansType:MANAGED, Name:null, API
> > Types:[eg.ConversationAliaser,java.lang.Object],
> > Qualifiers:[javax.enterprise.inject.Default,javax.
> enterprise.inject.Any]]
> > found beans:
> > Conversation, WebBeansType:PRODUCERMETHOD, Name:conversation, API
> > Types:[javax.enterprise.context.Conversation,java.lang.Object],
> > Qualifiers:[javax.enterprise.inject.Default,javax.
> > enterprise.inject.Any,javax.inject.Named] from file:/D:/development/
> > workspaces/openejb-el/target/test-classes/eg/ConversationWrapper.class
> > ConversationImpl, WebBeansType:CONVERSATION,
> Name:javax.enterprise.context.conversation,
> > API Types:[org.apache.webbeans.conversation.ConversationImpl,
> > javax.enterprise.context.Conversation,java.lang.Object],
> > Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any]
> > from jar:file:/C:/Users/xavier/.m2/repository/org/apache/
> > openwebbeans/openwebbeans-impl/1.6.3/openwebbeans-impl-
> > 1.6.3.jar!/org/apache/webbeans/conversation/ConversationImpl.class
> >
> >
> >
> >
> >
> >
> >
> > From: Mark Struberg <[email protected]>
> > Sent: Wednesday, September 28, 2016 11:20 PM
> > To: [email protected]
> > Subject: Re: OpenEJB and EL
> >
> > +1
> >
> > means
> >
> > @RequestScoped
> >
> > public class ConversationWrapper {
> >   private @Inject Conversation conv;
> >
> >   @Produces
> >   @Dependent
> >   @Named("conv")
> >
> >   public Conversation getConv() {
> >     return conv;
> >   }
> > }
> >
> >
> >
> >
> > On Wednesday, 28 September 2016, 23:10, Romain Manni-Bucau <
> > [email protected]> wrote:
> >
> >
> > >
> > >
> > >a producer allows to get a shorter/more elegant naming like #{conv.id}
> > if you @Produces @Named("conv") ;)
> > >
> > >
> > >
> > >Romain Manni-Bucau
> > >@rmannibucau |  Blog | Old Wordpress Blog | Github | LinkedIn |
> > Tomitriber | JavaEE Factory
> > >
> > >2016-09-28 23:01 GMT+02:00 Mark Struberg <[email protected]>:
> > >
> > >Oh boy, sorry for you. You did hit a blank spot in the CDI spec.
> > >>
> > >>Problem is that the EE umbrella spec, the EL spec and the CDI spec
> > contradict each other.
> > >>
> > >>The Weld guys solved this by introducing a Javax class. But that takes
> > away the whole javax.* tree for the EL. That's just not good as it
> > contradicts the EL spec.
> > >>
> > >>Could you please try the following
> > >>
> > >>@RequestScoped
> > >>@Named("conversation")
> > >>public class ConversationWrapper {
> > >>   private @Inject Conversation conv;
> > >>
> > >>  public Conversation get() {
> > >>       return conv;
> > >>   }
> > >>}
> > >>
> > >>And in the EL just use #{conversation.get.id}
> > >>
> > >>LieGrue,
> > >>strub
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>> On Wednesday, 28 September 2016, 22:12, Xavier Dury <
> > [email protected]> wrote:
> > >>> > I really don't understand how something like <f:param
> > >>> name="cid"
> > >>> value="#{javax.enterprise. context.conversation.id}"/> actually
> > >>> works... something must be made to make the EL processor accept that
> > invalid
> > >>> bean name.
> > >>>
> > >>> Making a producer which @Produces @Named Conversation conflicts with
> > the
> > >>> built-in bean from OWB (with WebBeanType.CONVERSATION)...
> > >>>
> > >>> ... so, I have done the following for my tests but I feel a bit
> > ashamed because
> > >>> I can't imagine there is no better solution than this ;-)
> > >>>
> > >>> public class ConversationAliaser {
> > >>>     public class Javax {
> > >>>         public Enterprise getEnterprise() {return new Enterprise();}
> > >>>
> > >>>     }
> > >>>     public class Enterprise {
> > >>>         public Context getContext() {return new Context();}
> > >>>     }
> > >>>     public class Context {
> > >>>         public Conversation getConversation() {return conversation;}
> > >>>
> > >>>     }
> > >>>     @Inject
> > >>>     private Conversation conversation;
> > >>>     @Produces @ApplicationScoped @Named("javax")
> > >>>     public Javax javax() {return new Javax();}
> > >>> }
> > >>>
> > >>> But that works!
> > >>>
> > >>> Xavier
> > >>>
> > >>>
> > >>>
> > >>> From: Xavier Dury <[email protected]>
> > >>> Sent: Wednesday, September 28, 2016 8:42 PM
> > >>> To: [email protected]
> > >>> Subject: Re: OpenEJB and EL
> > >>>
> > >>> Hmmm... I guess I'll have to @Produces @Named the conversation if I
> > want to
> > >>> use it in ELs. I don't know if something like
> > >>> #{applicationScope['javax. enterprise.context.
> > conversation'].transient}
> > >>> would work?
> > >>>
> > >>> I remember back in my JSP days that, sometimes, I had to use
> something
> > like
> > >>> ${requestScope['javax.servlet. forward.request_uri']} instead of
> > >>> plain ${javax.servlet.forward. request_uri}.
> > >>>
> > >>> Xavier
> > >>>
> > >>>
> > >>> From: Romain Manni-Bucau <[email protected]>
> > >>> Sent: Wednesday, September 28, 2016 6:54 PM
> > >>> To: [email protected]
> > >>> Subject: Re: OpenEJB and EL
> > >>>
> > >>> hmm, wonder if it is linked to the value you try to evaluate (which
> > doesn't
> > >>> respect EL spec even if in CDI spec - don't ask please ;)).. See
> > >>> https://issues.jboss.org/ browse/CDITCK-462 /
> >
> >
> > System Dashboard - JBoss Issue Tracker
> > issues.jboss.org
> > Atlassian JIRA Project Management Software (v6.4.11#64026-sha1:78f6ec4)
> > About JIRA; Report a problem; Powered by a free Atlassian JIRA open
> source
> > license for Red Hat ...
> > >>> http://lists.jboss.org/ pipermail/cdi-dev/2015- January/006009.html
> >
> >
> > lists.jboss.org Mailing Lists
> > lists.jboss.org
> > lists.jboss.org Mailing Lists: Welcome! Below is a listing of all the
> > public mailing lists on lists.jboss.org. Click on a list name to get
> more
> > information ...
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> Romain Manni-Bucau
> > >>> @rmannibucau <https://twitter.com/ rmannibucau> |  Blog
> > >>>
> > >>>
> > >>>
> > >>> Romain Manni-Bucau (@rmannibucau) | Twitter
> > >>> twitter.com
> > >>> The latest Tweets from Romain Manni-Bucau (@rmannibucau). ASF /
> > Java(EE) /
> > >>> Angular. LinkedIn: https://t.co/dX7XMGjbBi. JavaEE Factory:
> > >>> https://t.co/0VnvWwbedt . Blog ...
> > >>> <https://blog-rmannibucau. rhcloud.com> | Old Wordpress 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-09-28 18:17 GMT+02:00 Xavier Dury <[email protected]>:
> > >>>
> > >>>>  Hi Romain,
> > >>>>
> > >>>>  I tried with org.apache.tomcat:tomcat- jasper-el:8.5.5 but it does
> > not
> > >>>>  parse my expression until I change ".transient" by
> > >>> ".isTransient()" and
> > >>>>  then it gives the same error: javax.el. PropertyNotFoundException:
> > >>>>  ELResolver cannot handle a null base Object with identifier
> > >>> 'javax'.
> > >>>>
> > >>>>  Does the EL context need something else than adding the
> > >>>>  BeanManager.getELResolver()  to be able to resolve some implicit
> > objects? I
> > >>>>  don't understand why it works with ri-1.0.
> > >>>>
> > >>>>  Xavier
> > >>>>
> > >>>>
> > >>>>  From: Romain Manni-Bucau <[email protected]>
> > >>>>  Sent: Wednesday, September 28, 2016 4:02 PM
> > >>>>  To: [email protected]
> > >>>>  Subject: Re: OpenEJB and EL
> > >>>>
> > >>>>  Hi Xavier
> > >>>>
> > >>>>  On the phone so hard to give you a link bit try using tomcat el
> impl
> > of
> > >>>>  tomcat 8.5
> > >>>>
> > >>>>  Le 28 sept. 2016 15:29, "Xavier Dury" <[email protected]>
> > >>> a écrit :
> > >>>>
> > >>>>  > Hi,
> > >>>>  >
> > >>>>  > I am using OpenEJB for my tests and need support for EL
> > expressions in
> > >>> my
> > >>>>  > own code.
> > >>>>  >
> > >>>>  > By default, if I do something like this (pay attention to the
> > >>>>  expression):
> > >>>>  >
> > >>>>  > ExpressionFactory factory = beanManager. wrapExpressionFactory(
> > >>>>  > ExpressionFactory.newInstance( ));
> > >>>>  > StandardELContext elContext = new StandardELContext(factory);
> > >>>>  > elContext.addELResolver( beanManager.getELResolver());
> > >>>>  > ValueExpression expression = factory.createValueExpression(
> > elContext,
> > >>>>  > "#{javax.enterprise.context. conversation.transient}",
> > >>> Boolean.class);
> > >>>>  > expression.getValue(elContext) ;
> > >>>>  >
> > >>>>  > and only add org.apache.tomee:openejb-core: 7.0.1 to my project
> > then I
> > >>>>  get
> > >>>>  > javax.el.ELException: Unable to find ExpressionFactory of type:
> > >>>>  > org.apache.el. ExpressionFactoryImpl
> > >>>>  >
> > >>>>  > if I add org.glassfish:javax.el:3.0.0 then I get javax.el.
> > >>>>  PropertyNotFoundException:
> > >>>>  > ELResolver cannot handle a null base Object with identifier
> > >>> 'javax'
> > >>>>  >
> > >>>>  > if I switch the EL library to com.sun.el:el-ri:1.0 (+
> > >>> META-INF/javax.el.
> > >>>>  ExpressionFactory
> > >>>>  > < com.sun.el. ExpressionFactoryImpl) then my expression can be
> > >>> evaluated
> > >>>>  > but I can't use any new feature of 3.0 (like lambdas)
> > >>>>  >
> > >>>>  > So, either my dependencies are wrong or I am not correctly
> > >>> initializing
> > >>>>  my
> > >>>>  > factory.
> > >>>>  >
> > >>>>  > Does anybody have an idea?
> > >>>>  >
> > >>>>  > Thanks,
> > >>>>  >
> > >>>>  > Xavier
> > >>>>
> > >>>>
> > >>>
> > >>
> > >
> > >
> > >
> >
> >
>
>
    

Reply via email to