2017-07-24 54 views
1

我正在获取Httplication中保存的sonarqube缺陷。不可序列化的对象不应该存储在“HttpSession”对象中(squid:S2441)如何修复它

请帮我解决这个问题。

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

'实现Serializable' – JonK

+0

请提供[最小,完整,可验证的示例](https://stackoverflow.com/help/mcve ) – litelite

+0

使它可序列化有任何问题吗?你在问怎么做? – Pshemo

回答

1

您的所有对象,你要添加的属性HttpSession中必须是序列化(使会话与可序列化),

SonarQube上搜索HttpSession的每一个的setAttribute该对象是原始的或实现Serializable ,Code

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

还有报道的issue,并将其固定在版本 4.2处理阵列。

如果你能解决你的代码,更改的AttributeValue为序列

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