2017-07-24 11 views
1

Je reçois le défaut sonarqube pour l'enregistrement en Httpsession.Les objets non sérialisables ne doivent pas être stockés dans des objets "HttpSession" (squid: S2441) Comment le corriger

Veuillez m'aider à résoudre le problème.

public static HttpSession setSessionAttribute(final HttpSession session, 
final String attributeName, 
     final Object attributeValue) { 
    session.setAttribute(attributeName, attributeValue); 
    return session; 
    } 
+1

'implémente Serializable' – JonK

+0

S'il vous plaît fournir un [exemple minimal, complet et Vérifiable] (https://stackoverflow.com/help/mcve – litelite

+0

Y a-t-il un problème à le rendre sérialisable? Demandez-vous comment le faire? – Pshemo

Répondre

1

Tous vos objets que vous ajoutez comme attribut à HttpSession doit être Serializable (de sorte que la session avec sérialisable),

recherche sonarqube pour chaque setAttribute sur HttpSession cet objet est primitive ou implémente Serializable , Code:

if (!type.isPrimitive() && !type.isSubtypeOf("java.io.Serializable")) { 
     addIssue(argument, "Make \"" + type + "\" serializable or don't store it in the session."); 
    } 

Il y a aussi un issue rapporté et doit être corrigé dans la version 4.2 avec des tableaux de manipulation.

Si vous pouvez corriger votre code, changer attributeValue à Serializable

public static HttpSession setSessionAttribute(final HttpSession session, 
final String attributeName, 
     final Serializable attributeValue) { 
    session.setAttribute(attributeName, attributeValue); 
    return session; 
    }