Details
-
Type:
Clarification
-
Status: Resolved (View Workflow)
-
Priority:
Major
-
Resolution: Done
-
Affects Version/s: 1.0
-
Fix Version/s: 1.1.EDR
-
Component/s: Resolution
-
Labels:None
-
Estimated Difficulty:Medium
Description
Currently section 6.6.4 defines that @Dependent scoped beans which get injected into a bean of a passivating scope must be Serializable.
"If a producer method or field of scope @Dependent returns an unserializable object for injection into an injection point that requires a passivation capable dependency, the container must throw an Illegal- ProductException"
The question is how to interpret "that requires a passivation capable dependency".
It would e.g. be perfectly fine if the @Dependent bean is not Serializable if the injectionpoint will be serialized via a writeObject or Externalizable#writeExternal.
Proposal: to explicitly add a check for Modifier.TRANSIENT and writeObject(ObjectOutputStream) and Externalizable#writeExternal(ObjectOutput)
This is very important for @Dependent scoped producers of legacy classes because there is otherwise no way to inject such classes at all.
Mark, do you want to create a patch to the spec for this?