私は自分のページを介してSessionBeanのスコープを維持しようとしています。このために、ここからいくつかのチュートリアルに従いました。実際には、次のコードのように、ExternalContextを介してセッションを取得しようとしています:
public class LoginFilter implements Filter{
ProfileBean pBean = new ProfileBean();
ActiveUserModel activeUserModel;
ExternalContext tmpEC;
Map sMap;
public void destroy() {}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
tmpEC = FacesContext.getCurrentInstance().getExternalContext();
sMap = tmpEC.getSessionMap();
activeUserModel = (ActiveUserModel) sMap.get("ActiveUserModel");
String username = SecurityAssociation.getPrincipal().getName();
if(activeUserModel.getUsername() == null)
{
try {
pBean.consultaProfile(username);
} catch (SQLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}else{
}
filterChain.doFilter(servletRequest, servletResponse);
}
public void init(FilterConfig filterConfig) throws ServletException {}
}
この行の if(activeUserModel.getUsername() == null) では、Bean をインスタンス化していないため、java.lang.NullPointerException が発生しますが、インスタンス化しても機能しませんでした。
何かがおかしい?