Bean di sessione stateful non ottengono valori di default dopo la deserializzazione
-
27-10-2019 - |
Domanda
I stava attraversando un EJB 3.1 libro (O'Reilly, Andrew Lee Rubinger e Bill Burke), c'è l'autore è ricordare che (queste non sono le parole esatte del libro, questa è la mia comprensione del testo) :
in SFSB quando il suo divenire attivata (dopo l'uscita di passivato piscina), oggetti serializzati, a differenza di loro norma originaria, non restituirà i valori predefiniti come int non garantito per il ritorno 0 e oggetto non è garantita a return null
E 'la mia comprensione corretta? Se è vero, perché EJB hanno questo comportamento?
Original post su http : //www.coderanch.com/t/546765/java-EJB-SCBCD/certification/why-serialization-unpredictable-SFSB#2481285
Soluzione
Per specifica che è applicabile solo ai campi transitori.
Dalle specifiche - O'Reilly non ha progettato gli EJB (solo dicendo ...):
"mentre il contenitore non è necessario per utilizzare il protocollo di serializzazione per il linguaggio di programmazione Java per memorizzare lo stato di un'istanza sessione di passivato, deve raggiungere il risultato equivalente . l'unica eccezione è che i contenitori non sono tenuti a ripristinare il valore della campi transitori durante l'attivazione [12]. Dichiarare campi del bean sessione come transitoria è, in generale, scoraggiati ". [EJB 3.1 - 4.2.1 - sottolineatura mia ]
modifica:
A proposito, la risposta alla tua domanda è anche nella specifica EJB:
"Le restrizioni sull'uso di campi transitori assicurano che i contenitori possono utilizzare Java serializzazione durante passivazione e l'attivazione".