[cdi-dev] what Bean<T> implementations need to be PassivationCapable?
Mark Struberg
struberg at yahoo.de
Mon Mar 25 10:23:22 EDT 2013
I think the issue is the 'OR' in the wording of 6.6.2.
Without the Bean<?> having a passivationId we cannot reference them in our proxies -> we cannot serialize the proxies properly :(
LieGrue,
strub
----- Original Message -----
> From: Pete Muir <pmuir at redhat.com>
> To: Jozef Hartinger <jharting at redhat.com>
> Cc: Mark Struberg <struberg at yahoo.de>; cdi-dev <cdi-dev at lists.jboss.org>
> Sent: Monday, March 25, 2013 12:49 PM
> Subject: Re: [cdi-dev] what Bean<T> implementations need to be PassivationCapable?
>
>G ot it, we've added the word dependency into 6.6.4 by mistake I think.
>
> On 25 Mar 2013, at 09:37, Jozef Hartinger <jharting at redhat.com> wrote:
>
>> Pete,
>>
>> your argumentation is applicable if the custom Bean<?> implementation
> was @Dependent. I think that Mark is talking about a normal-scoped custom
> Bean<?> implementation. For this case the spec says:
>>
>> A custom implementation of Bean is a passivation capable dependency if it
> implements PassivationCapable *or if getScope()
>> returns a normal scope type*.
>>
>> Which means that the Bean<?> implementation does not need to
> implement PassivationCapable if it has a normal scope and still it will be a
> passivation capable dependency.
>>
>> On 03/23/2013 05:13 PM, Pete Muir wrote:
>>> On 18 Mar 2013, at 18:02, Mark Struberg <struberg at yahoo.de>
> wrote:
>>>
>>>> Hi!
>>>>
>>>> By catching an issue we have with the custom Bean<T>
> implementations provided by Spring Data, I got aware of a possible issue with
> PassivationCapable.
>>>>
>>>> Which Bean<T> need to implement PassivationCapable?
>>>>
>>>> 6.6.1 seem to indicate that only beans or passivating scopes need a
> PassivationCapable bean.
>>>>
>>>> But in this case: how does a container implement the NormalScope
> proxies for such a Bean? Consider we inject such a Contextual Reference of such
> a Bean<T> (which does _not_ implement PassivationCapable), e.g.
> MyDataRepository into a @SessionScoped bean. And now clustering kicks in and we
> propagate our @SessionScoped bean to another node.
>>> No, the container will treat this as a deployment problem, as 6.6.4
> says:
>>>
>>> If a managed bean which declares a passivating scope, a stateful
> session bean which declares a passivating scope, or a built-in bean … has a
> non-transient injected field, bean constructor parameter or initializer method
> parameter which is not annotated with @TransientReference and that resolves to a
> dependent scoped bean that is not a passivation capable dependency, ... or has a
> non-transient injected field, bean constructor parameter or initializer method
> parameter that resolves to a bean that is not a dependent scoped bean and that
> is not a passivation capable dependency.
>>>
>>> and 6.6.1 says:
>>>
>>> A custom implementation of Bean is passivation capable if it implements
> the interfacePassivationCapable.
>>>
>>> We can see that the injected bean is NOT passivation capable, and
> therefore it's not possible to inject it into the bean with the passivating
> scope.
>>>
>>>> What happens with the proxy for MyDataRepository? How will it
> 'reconnect' to the correct Bean<T> on the other side of the
> cluster? Imo this is only possible if all Bean<T> properly implement
> PassivationCapable.
>>> Right, the situation you describe is a deployment failure.
>>>
>>>> Or should we use the bean type + qualifiers to create a synthetic
> passivationId? Does this hold waters?
>>> No.
>>>
>>>> LieGrue,
>>>> strub
>>>>
>>>> _______________________________________________
>>>> cdi-dev mailing list
>>>> cdi-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>>
>>> _______________________________________________
>>> cdi-dev mailing list
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>
>
More information about the cdi-dev
mailing list