]
Stephan Knitelius commented on CDI-616:
---------------------------------------
Sadly Alea iacta est ("The die is cast") on this matter.
I do agree that "normally" it is the developers responsibility to reinitialize
any transient fields.
However in the context of DI I always hear other devs speculating whether or not transient
fields are "reinjected" post deserialization.
So clarifying this matter is the least we should be doing.
Injection point declared as transient is not useful
---------------------------------------------------
Key: CDI-616
URL:
https://issues.jboss.org/browse/CDI-616
Project: CDI Specification Issues
Issue Type: Clarification
Components: Concepts
Affects Versions: 1.2.Final
Environment: n/a
Reporter: Emily Jiang
Priority: Minor
Fix For: 2.0 .Final
An injection point declared as 'transient' is not useful, due to the fact of
after bean's passivation, the transient field will not be reinjected and its value
will be lost. This causes confusion. See Weld forum discussion [link
title|https://developer.jboss.org/thread/179486]. In the section 5.5.7, how about to make
the following changes?
The isTransient() method returns true if the injection point is a transient field, and
false otherwise. If the injection point represents a dynamically obtained instance then
the
isTransient() method returns true if the Instance injection point is a transient field,
and
false otherwise.
=>
The isTransient() method returns true if the injection point is a transient field, and
false otherwise. If the injection point represents a dynamically obtained instance then
the
isTransient() method returns true if the Instance injection point is a transient field,
and
false otherwise. If this injection point is declared as transient, after bean's
passivation, the value will not be restored. Instance injection point is the preferred
approach.
Any other better suggestions?