Przełączanie awaryjne pól przejściowych w komponentach bean o zasięgu sesji kończy się niepowodzeniem

Ta reguła powoduje oznaczenie pól z modyfikatorem transient w klasach z adnotacjami @SessionScoped. W implementacji Contexts and Dependency Injection (CDI) 1.0 OpenWebBeans aplikacja może ustawiać pola transient bezpośrednio w komponentach bean o zasięgu sesji. W implementacji CDI 1.2 Weld ustawienie pola transient bezpośrednio nie powoduje zapełnienia pola po przełączeniu awaryjnym, co może spowodować nieoczekiwane działanie aplikacji.

Należy sprawdzić, czy każde pole transient oznaczone przez tę regułę jest ustawiane tylko przy użyciu metody udostępnianej przez klasę zawierającą. Jeśli nie ma metody set dla tego pola, należy dodać metodę set i wywołać ją zamiast bezpośredniego ustawienia pola.

W poniższym przykładzie klasa UserBean ma adnotację @SessionScoped. Klasa zawiera także pole z modyfikatorem transient, które jest ustawiane za pomocą metody ustawiającej.

 @Named(wartość = "userBean")
@SessionScoped public class UserBean implements UserInterface, Serializable {
	String name; transient String nickName;

	...

	public void setNickName (String nick) {
	    nickName = nick;
	} }

Więcej informacji na temat implementacji Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2 można znaleźć na stronie Zmiany w działaniu specyfikacji Contexts and Dependency Injection 1.2.