2016-09-19 5 views
0

私のプログラムには次のコードがあります.Mavenと統合した後でコード品質チェックを行うSonarQube 5を実行しています。"UserProfile"をシリアライズ可能にするか、セッションに保存しないでください

しかし、Sonarは "UserProfile"をシリアライズ可能にするか、セッションに保存しないように要求しています。

なぜですか?

private void setUserProfileinSession(HttpServletRequest request, 
     Authentication authentication) { 

    List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(
      authentication.getAuthorities()); 
    GrantedAuthority authority = authorities.get(0); 
    UserProfile userProfile = new UserProfile(); 
    userProfile.setUserName(authentication.getName()); 
    userProfile.setUserRole(authority.getAuthority()); 
    HttpSession session = request.getSession(); 
    session.setAttribute(EnumGlobal.USERPROFILE.getName(), userProfile); 
    if (logger.isDebugEnabled()) { 
     logger.info("JK SSO Role Set in Session by AuthenticationSuccessHandler:" 
       + userProfile.getUserRole()); 
    } 

Facing problem in line 10 -- (EnumGlobal.USERPROFILE.getName(), userProfile)

public class UserProfile extends BaseBO { 

String userName; 
String userRole; 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String getUserRole() { 
    return userRole; 
} 

public void setUserRole(String userRole) { 
    this.userRole = userRole; 
} 
+0

*このエラーを取り除くには?*、シリアル化可能にするか、セッションに保存しないでください。それはかなり明白ですね。 –

答えて

1

のWebコンテナはセッションの内容をシリアル化する必要があるかもしれません。 1つの例は、コンテナの複数のインスタンスを実行するときに別の物理マシンにセッションを転送することです。

このため、セッションに挿入されるすべてのオブジェクトはシリアル化可能(つまり、インターフェイスjava.io.Serializableを実装する)である必要があります。

エラーメッセージは、エラーを取り除く方法を既に示しています。オブジェクトをシリアライズ可能にするか、セッションに保存しないでください。

関連する問題