Antoine, I think the Weld 2.x behaviour is correct per the spec.
GlobalRepositoryImpl is not a passivation capable dependency (@Singleton
is not a normal scope)...

M

Dne 22.11.2013 11:54, Antoine Sabot-Durand napsal(a):
> In my experience, Weld 1.1.x supported @Singleton,
> Weld 2.x don’t support them (or not in same way).
> 
> In Agorava roadmap I plan to provide implementation on other JSR 330 
> framework than CDI, so I have a module containing only JSR 330 compliant 
> code. In this module I defined a Bean « GlobalRespository » with @Singleton 
> scope. In my CDI module this bean is injected in a SessionScoped bean 
> (inCookieProducer). Under Jboss AS 7.1.1, Glassfish 3.1.2 and EAP 6.1 the 
> code works nicely.
> With Wildfly 8 and Glassfish 4.0, I have this exception when my web app start 
> :
> 
> Caused by: org.jboss.weld.exceptions.UnserializableDependencyException: 
> WELD-001413: The bean Managed Bean [class org.agorava.cdi.InCookieProducer] 
> with qualifiers [@Any @Default] declares passivating scope but has 
> non-passivation-capable dependency Managed Bean [class 
> org.agorava.oauth.GlobalRepositoryImpl] with qualifiers [@Any @Default]
>       at 
> org.jboss.weld.bootstrap.Validator.validateInjectionPointPassivationCapable(Validator.java:461)
>       at 
> org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:386)
>       at 
> org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:282)
>       at 
> org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:133)
>       at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:164)
>       at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:507)
>       at 
> org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
>       at 
> org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
>       at 
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
>       at 
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
> [rt.jar:1.7.0_45]
>       ... 3 more
> As a workaround I had to create a @Specialize bean of my @Singleton only to 
> set it in @ApplicationScope.
> 
> Antoine Sabot-Durand /@antoine_sd
> ———————————————
> CDI co-spec lead
> CDI eco-system development
> Agorava tech lead
> 
> 
> Le 22 nov. 2013 à 09:24, Jozef Hartinger <jhart...@redhat.com> a écrit :
> 
>> Weld supports it but because of the reasons stated by Mark I would 
>> recommend avoiding it.
>>
>> On 11/22/2013 08:19 AM, Mark Struberg wrote:
>>> Hi Bill!
>>>
>>> This pops up quite often.
>>> Actually the spec is pretty much silent on this and defines nothing else 
>>> than CDI being based on JSR-330. But the TCK defines that any JSR-299 
>>> container also must fully pass the JSR-330 TCK as part of the compatibility 
>>> check.
>>>
>>> Means CDI containers need to support it, but it is not really defined how 
>>> it should behave.
>>> In OWB we just treat it as alias for @ApplicationScoped. I'm not 100% sure 
>>> if it's the same for Weld, but I think to remember discussing about it with 
>>> either Jozef or Pete that they do it effectively the same way. Needs ack 
>>> from them though.
>>>
>>> My personal suggestion is to avoid it.
>>>
>>> There is a slightly broader issue hidden in this topic actually.
>>> As per explanation above, each CDI container must also support scopes 
>>> annotated with @Scope (from atinject, not @NormalScope from CDI). But 
>>> atinject does nowhere define how to register Contexts for those scopes. In 
>>> CDI we should do pickup contexts for those scopes but it's probably not 
>>> well tested nor defined how those contexts should behave.
>>> I'd personally would expect them to just get injected without the 
>>> Contextual Reference proxies but as direct Contextual Instances and 
>>> otherwise be pretty much the same like standard CDI scopes. But that needs 
>>> ack + wordig by my fellow CDI EG members.
>>>
>>>
>>> LieGrue,
>>> strub
>>>
>>>
>>>
>>> ----- Original Message -----
>>>> From: Bill Burke <bbu...@redhat.com>
>>>> To: Weld <weld-dev@lists.jboss.org>
>>>> Cc:
>>>> Sent: Friday, 22 November 2013, 3:17
>>>> Subject: [weld-dev] CDI and @Singleton
>>>>
>>>> Is Weld or CDI supposed to recognize and support @javax.inject.Singleton
>>>> annotated classes?
>>>>
>>>> -- 
>>>> Bill Burke
>>>> JBoss, a division of Red Hat
>>>> http://bill.burkecentral.com
>>>> _______________________________________________
>>>> weld-dev mailing list
>>>> weld-dev@lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>>>
>>> _______________________________________________
>>> weld-dev mailing list
>>> weld-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>
>> _______________________________________________
>> weld-dev mailing list
>> weld-dev@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/weld-dev
> 
> 
> 
> _______________________________________________
> weld-dev mailing list
> weld-dev@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/weld-dev
> 
_______________________________________________
weld-dev mailing list
weld-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/weld-dev

Reply via email to