Campos temporários em beans com escopo por sessão não podem ter failover com êxito

Esta regra sinaliza campos com o modificador transient em classes que são anotadas com @SessionScoped. Na implementação do OpenWebBeans de Contexts and Dependency Injection (CDI) 1.0, um aplicativo pode configurar campos transient diretamente em beans com escopo por sessão. Na implementação do CDI 1.2 Weld, configurar o campo transient diretamente não resulta no campo sendo preenchido após o failover, o que pode causar comportamento inesperado em seu aplicativo.

Verifique se cada campo transient que é sinalizado por essa regra é configurado apenas usando um método fornecido pela classe que contém. Se não houver nenhum método configurado para o campo, inclua um método configurado e chame-o em vez de configurar o campo diretamente.

No exemplo a seguir, a classe UserBean é anotada com @SessionScoped. A classe também contém um campo com um modificador temporário que é configurado usando um método setter.


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

	...

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

Para obter mais informações sobre a implementação do Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2, consulte Mudanças de comportamento do Contexts and Dependency Injection 1.2.