About this question:
When the stateful session beans get passivated, the following activities should be done:
...
c. Non transient ,non serializable variables have to be set to null in the ejbPassivate() method.
The correct answer is c.
I think setting non-serializable variables null in ejbPassivate() or @PrePassivate method is a common practice, but not a must.
Also, the specification does not say non transient variables have to set to null.
//On p.71 of the specification:
The objects that are assigned to the instance's non-transient fields.... after PrePassivate method complete must be :
a Serializable object
a null
....
It means non-transient variables must be a serializable object or null in order to be serialized when the stateful bean is passivated.
But it does not mean non-transient have to be set to null in PrePassivate method.