Dne 22.11.2013 15:37, Antoine Sabot-Durand napsal(a): > I don’t totally agree on your point Martin : @Dependent scope is not a normal > scope as well but I can inject a dependent scope bean in a normal scope bean.
Yep, but it must be passivation capable - this is explicitly written in the spec, 6.6.3 in CDI 1.1 and 6.6.2 in CDI 1.0. > > I don’t say it’s a bug since the spec seems to be a bit blur on the subject. Yes, it's complicated. > > I wanted just to stress that > > 1. Singleton don’t behave like Application Scope as it was evoked in this > thread > 2. Weld behavior changed from version 1 to 2 I agree. > 3. Singleton is now, nearly useless since I can’t make it interact with other > scope. and if something can’t be used can we say we implemented it ;) ? IMHO javax.inject.Singleton was never useful (in connection with CDI) because it's behaviour/lifecycle is not defined... > > Antoine > > > Le 22 nov. 2013 à 12:53, Martin Kouba <mko...@redhat.com> a écrit : > >> 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