You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Matthew Broadhead <ma...@nbmlaw.co.uk> on 2017/11/27 09:00:26 UTC

@Produces inside jar

If I include a jar in several webapps and the jar contains some 
@ApplicationScoped beans it seems to work fine.  i.e. those 
@ApplicationScoped beans can be injected into the beans in the webapps 
without conflict.

However if I use @Produces, e.g
@Produces
@MyQualifier
@RequestScoped
public MyCustomObject token() {
   return createMyCutomObject();
}

Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI 
Beans module deployment failed
  org.apache.webbeans.exception.WebBeansDeploymentException: 
javax.enterprise.inject.AmbiguousResolutionException: There is more than 
one Bean with type com.example.MyCustomObject

Is there a conflict between the various webapps?

Re: @Produces inside jar

Posted by Romain Manni-Bucau <rm...@gmail.com>.
No but you can tune it with beans.xml (excludes, scanning mode, etc...)

Romain Manni-Bucau
@rmannibucau |  Blog | Old Blog | Github | LinkedIn


2017-11-27 10:57 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
> should i somehow be manually defining which beans are cdi managed?
>
>
> On 27/11/2017 10:48, Romain Manni-Bucau wrote:
>>
>> all i guess,
>>
>> System.out.println(beanManager.getBeans(Object.class)) should list them
>>
>> Romain Manni-Bucau
>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>
>>
>> 2017-11-27 10:31 GMT+01:00 Matthew Broadhead
>> <ma...@nbmlaw.co.uk>:
>>>
>>> yes that works.  does that mean all classes are being added as cdi for
>>> some
>>> reason?  or only ones that are being produced?
>>>
>>>
>>> On 27/11/2017 10:25, Romain Manni-Bucau wrote:
>>>>
>>>> hmm there is not link with serializable but if it is a cdi bean then
>>>> producing it will make it ambiguous
>>>>
>>>> add @vetoed on the class maybe?
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>>
>>>>
>>>> 2017-11-27 10:24 GMT+01:00 Matthew Broadhead
>>>> <ma...@nbmlaw.co.uk>:
>>>>>
>>>>> should not be serializable?
>>>>>
>>>>>
>>>>> On 27/11/2017 10:17, Romain Manni-Bucau wrote:
>>>>>>
>>>>>> No but likely MyCustomObject is scanned and has a default constructor
>>>>>>
>>>>>> Romain Manni-Bucau
>>>>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>>>>
>>>>>>
>>>>>> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead
>>>>>> <ma...@nbmlaw.co.uk>:
>>>>>>>
>>>>>>> If I include a jar in several webapps and the jar contains some
>>>>>>> @ApplicationScoped beans it seems to work fine.  i.e. those
>>>>>>> @ApplicationScoped beans can be injected into the beans in the
>>>>>>> webapps
>>>>>>> without conflict.
>>>>>>>
>>>>>>> However if I use @Produces, e.g
>>>>>>> @Produces
>>>>>>> @MyQualifier
>>>>>>> @RequestScoped
>>>>>>> public MyCustomObject token() {
>>>>>>>      return createMyCutomObject();
>>>>>>> }
>>>>>>>
>>>>>>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication
>>>>>>> CDI
>>>>>>> Beans module deployment failed
>>>>>>>     org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>>> javax.enterprise.inject.AmbiguousResolutionException: There is more
>>>>>>> than
>>>>>>> one
>>>>>>> Bean with type com.example.MyCustomObject
>>>>>>>
>>>>>>> Is there a conflict between the various webapps?
>>>>>
>>>>>
>

Re: @Produces inside jar

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk>.
should i somehow be manually defining which beans are cdi managed?

On 27/11/2017 10:48, Romain Manni-Bucau wrote:
> all i guess,
>
> System.out.println(beanManager.getBeans(Object.class)) should list them
>
> Romain Manni-Bucau
> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>
>
> 2017-11-27 10:31 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
>> yes that works.  does that mean all classes are being added as cdi for some
>> reason?  or only ones that are being produced?
>>
>>
>> On 27/11/2017 10:25, Romain Manni-Bucau wrote:
>>> hmm there is not link with serializable but if it is a cdi bean then
>>> producing it will make it ambiguous
>>>
>>> add @vetoed on the class maybe?
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>
>>>
>>> 2017-11-27 10:24 GMT+01:00 Matthew Broadhead
>>> <ma...@nbmlaw.co.uk>:
>>>> should not be serializable?
>>>>
>>>>
>>>> On 27/11/2017 10:17, Romain Manni-Bucau wrote:
>>>>> No but likely MyCustomObject is scanned and has a default constructor
>>>>>
>>>>> Romain Manni-Bucau
>>>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>>>
>>>>>
>>>>> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead
>>>>> <ma...@nbmlaw.co.uk>:
>>>>>> If I include a jar in several webapps and the jar contains some
>>>>>> @ApplicationScoped beans it seems to work fine.  i.e. those
>>>>>> @ApplicationScoped beans can be injected into the beans in the webapps
>>>>>> without conflict.
>>>>>>
>>>>>> However if I use @Produces, e.g
>>>>>> @Produces
>>>>>> @MyQualifier
>>>>>> @RequestScoped
>>>>>> public MyCustomObject token() {
>>>>>>      return createMyCutomObject();
>>>>>> }
>>>>>>
>>>>>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication
>>>>>> CDI
>>>>>> Beans module deployment failed
>>>>>>     org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>>> javax.enterprise.inject.AmbiguousResolutionException: There is more
>>>>>> than
>>>>>> one
>>>>>> Bean with type com.example.MyCustomObject
>>>>>>
>>>>>> Is there a conflict between the various webapps?
>>>>


Re: @Produces inside jar

Posted by Romain Manni-Bucau <rm...@gmail.com>.
all i guess,

System.out.println(beanManager.getBeans(Object.class)) should list them

Romain Manni-Bucau
@rmannibucau |  Blog | Old Blog | Github | LinkedIn


2017-11-27 10:31 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
> yes that works.  does that mean all classes are being added as cdi for some
> reason?  or only ones that are being produced?
>
>
> On 27/11/2017 10:25, Romain Manni-Bucau wrote:
>>
>> hmm there is not link with serializable but if it is a cdi bean then
>> producing it will make it ambiguous
>>
>> add @vetoed on the class maybe?
>>
>> Romain Manni-Bucau
>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>
>>
>> 2017-11-27 10:24 GMT+01:00 Matthew Broadhead
>> <ma...@nbmlaw.co.uk>:
>>>
>>> should not be serializable?
>>>
>>>
>>> On 27/11/2017 10:17, Romain Manni-Bucau wrote:
>>>>
>>>> No but likely MyCustomObject is scanned and has a default constructor
>>>>
>>>> Romain Manni-Bucau
>>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>>
>>>>
>>>> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead
>>>> <ma...@nbmlaw.co.uk>:
>>>>>
>>>>> If I include a jar in several webapps and the jar contains some
>>>>> @ApplicationScoped beans it seems to work fine.  i.e. those
>>>>> @ApplicationScoped beans can be injected into the beans in the webapps
>>>>> without conflict.
>>>>>
>>>>> However if I use @Produces, e.g
>>>>> @Produces
>>>>> @MyQualifier
>>>>> @RequestScoped
>>>>> public MyCustomObject token() {
>>>>>     return createMyCutomObject();
>>>>> }
>>>>>
>>>>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication
>>>>> CDI
>>>>> Beans module deployment failed
>>>>>    org.apache.webbeans.exception.WebBeansDeploymentException:
>>>>> javax.enterprise.inject.AmbiguousResolutionException: There is more
>>>>> than
>>>>> one
>>>>> Bean with type com.example.MyCustomObject
>>>>>
>>>>> Is there a conflict between the various webapps?
>>>
>>>
>

Re: @Produces inside jar

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk>.
yes that works.  does that mean all classes are being added as cdi for 
some reason?  or only ones that are being produced?

On 27/11/2017 10:25, Romain Manni-Bucau wrote:
> hmm there is not link with serializable but if it is a cdi bean then
> producing it will make it ambiguous
>
> add @vetoed on the class maybe?
>
> Romain Manni-Bucau
> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>
>
> 2017-11-27 10:24 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
>> should not be serializable?
>>
>>
>> On 27/11/2017 10:17, Romain Manni-Bucau wrote:
>>> No but likely MyCustomObject is scanned and has a default constructor
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>>
>>>
>>> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead
>>> <ma...@nbmlaw.co.uk>:
>>>> If I include a jar in several webapps and the jar contains some
>>>> @ApplicationScoped beans it seems to work fine.  i.e. those
>>>> @ApplicationScoped beans can be injected into the beans in the webapps
>>>> without conflict.
>>>>
>>>> However if I use @Produces, e.g
>>>> @Produces
>>>> @MyQualifier
>>>> @RequestScoped
>>>> public MyCustomObject token() {
>>>>     return createMyCutomObject();
>>>> }
>>>>
>>>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI
>>>> Beans module deployment failed
>>>>    org.apache.webbeans.exception.WebBeansDeploymentException:
>>>> javax.enterprise.inject.AmbiguousResolutionException: There is more than
>>>> one
>>>> Bean with type com.example.MyCustomObject
>>>>
>>>> Is there a conflict between the various webapps?
>>


Re: @Produces inside jar

Posted by Romain Manni-Bucau <rm...@gmail.com>.
hmm there is not link with serializable but if it is a cdi bean then
producing it will make it ambiguous

add @vetoed on the class maybe?

Romain Manni-Bucau
@rmannibucau |  Blog | Old Blog | Github | LinkedIn


2017-11-27 10:24 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
> should not be serializable?
>
>
> On 27/11/2017 10:17, Romain Manni-Bucau wrote:
>>
>> No but likely MyCustomObject is scanned and has a default constructor
>>
>> Romain Manni-Bucau
>> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>>
>>
>> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead
>> <ma...@nbmlaw.co.uk>:
>>>
>>> If I include a jar in several webapps and the jar contains some
>>> @ApplicationScoped beans it seems to work fine.  i.e. those
>>> @ApplicationScoped beans can be injected into the beans in the webapps
>>> without conflict.
>>>
>>> However if I use @Produces, e.g
>>> @Produces
>>> @MyQualifier
>>> @RequestScoped
>>> public MyCustomObject token() {
>>>    return createMyCutomObject();
>>> }
>>>
>>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI
>>> Beans module deployment failed
>>>   org.apache.webbeans.exception.WebBeansDeploymentException:
>>> javax.enterprise.inject.AmbiguousResolutionException: There is more than
>>> one
>>> Bean with type com.example.MyCustomObject
>>>
>>> Is there a conflict between the various webapps?
>
>

Re: @Produces inside jar

Posted by Matthew Broadhead <ma...@nbmlaw.co.uk>.
should not be serializable?

On 27/11/2017 10:17, Romain Manni-Bucau wrote:
> No but likely MyCustomObject is scanned and has a default constructor
>
> Romain Manni-Bucau
> @rmannibucau |  Blog | Old Blog | Github | LinkedIn
>
>
> 2017-11-27 10:00 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
>> If I include a jar in several webapps and the jar contains some
>> @ApplicationScoped beans it seems to work fine.  i.e. those
>> @ApplicationScoped beans can be injected into the beans in the webapps
>> without conflict.
>>
>> However if I use @Produces, e.g
>> @Produces
>> @MyQualifier
>> @RequestScoped
>> public MyCustomObject token() {
>>    return createMyCutomObject();
>> }
>>
>> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI
>> Beans module deployment failed
>>   org.apache.webbeans.exception.WebBeansDeploymentException:
>> javax.enterprise.inject.AmbiguousResolutionException: There is more than one
>> Bean with type com.example.MyCustomObject
>>
>> Is there a conflict between the various webapps?


Re: @Produces inside jar

Posted by Romain Manni-Bucau <rm...@gmail.com>.
No but likely MyCustomObject is scanned and has a default constructor

Romain Manni-Bucau
@rmannibucau |  Blog | Old Blog | Github | LinkedIn


2017-11-27 10:00 GMT+01:00 Matthew Broadhead <ma...@nbmlaw.co.uk>:
> If I include a jar in several webapps and the jar contains some
> @ApplicationScoped beans it seems to work fine.  i.e. those
> @ApplicationScoped beans can be injected into the beans in the webapps
> without conflict.
>
> However if I use @Produces, e.g
> @Produces
> @MyQualifier
> @RequestScoped
> public MyCustomObject token() {
>   return createMyCutomObject();
> }
>
> Then i get  org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI
> Beans module deployment failed
>  org.apache.webbeans.exception.WebBeansDeploymentException:
> javax.enterprise.inject.AmbiguousResolutionException: There is more than one
> Bean with type com.example.MyCustomObject
>
> Is there a conflict between the various webapps?