2016-05-02 16 views
0

Ich habe eine DBUtil Klasse als @Repository kommentierteSCHWEREN: Servlet.service() für Servlet appServlet warf Ausnahme

@Repository 
public class DBUtil { 

    private SessionFactory sessionFactory; 

    public DBUtil(SessionFactory sf) { 
     this.sessionFactory = sf; 
    } 

    @Transactional 
    public Object saveTable(Object obj){ 
     Session session = this.sessionFactory.getCurrentSession(); 
     session.save(obj); 
     return obj; 
    } 
} 

In meinem Servlet-Kontext habe ich den Eintrag für die Basis-Paket

gemacht jetzt versuche ich, „DBUtil“ in CommonUtil Klasse autowire, die als unten:

public class CommonUtil { 

    @Autowired 
    private DBUtil dbUtil; 

    public void setDBUtil(DBUtil dbUtil){ 
     this.dbUtil = dbUtil; 
    } 



    public Member getMemberFromUserName(String userName){ 
     String userCheckQry = "from Users where userName like :username"; 
     Map<String, Object> parameters = new HashMap<String, Object>(); 
     parameters.put("username", userName);  
     List userList = this.dbUtil.executeHQLQuery(userCheckQry, parameters, false); 

     Users user = (Users) userList.get(0); 

     String memberQry = "from Member where memberId = :memId"; 
     Map<String, Object> memParams = new HashMap<String, Object>(); 
     memParams.put("memId", user.getId()); 

     List memList = this.dbUtil.executeHQLQuery(memberQry, memParams, false); 
     return (Member) memList.get(0); 
    } 

} 

Wenn ich das tue, erhalte ich folgende Fehlermeldung:

May 02, 2016 11:54:36 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet appServlet threw exception 
java.lang.NullPointerException 
    at com.rasoirecipes.util.CommonUtil.getMemberFromUserName(CommonUtil.java:56) 
    at com.rasoirecipes.impl.AuthenticationSuccessHandlerImpl.onAuthenticationSuccess(AuthenticationSuccessHandlerImpl.java:32) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.successfulAuthentication(AbstractAuthenticationProcessingFilter.java:331) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:245) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardH 

Hinzufügen der Klasse AuthenticationSuccessHandlerImpl: (Sobald der Benutzer anmeldet, ich die Benutzer-ID und den ersten Namen in der Sitzung speichern möchten)

public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHandler { 

    private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy(); 

    @Override 
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { 
     //do what you want with 
     System.out.println("came after login "+ request.getPathInfo()); 
     HttpSession session = request.getSession(); 
     System.out.println(session); 
     Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
     System.out.println(auth.getName()); 
     CommonUtil common = new CommonUtil(); 
     Member member = common.getMemberFromUserName(auth.getName()); 
     System.out.println(member.getName()); 
     session.setAttribute("uid", member.getMemberId()); 
     session.setAttribute("uname", member.getName()); 

//  SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response); 
//  System.out.println(savedRequest.getRedirectUrl()); 
//  if(savedRequest != null) { 
//   System.out.println(savedRequest.getRedirectUrl()); 
//  } 
     String targetUrl = "/"; 
     redirectStrategy.sendRedirect(request, response, targetUrl); 
    } 

} 
+0

Ich gehe davon aus, dass Sie einige Frühlingsdaten verwenden, um das '@ Repository' in Gang zu bringen? Welche Linie wirft die NPE eigentlich? Kannst du den relevanten Frühlingskontext zeigen? – Taylor

+0

Wir müssen 'AuthenticationSuccessHandlerImpl' sehen. – chrylis

+0

@ Taylor-Liste userList = this.dbUtil.executeHQLQuery (userCheckQry, Parameter, false); Diese Zeile wirft den Fehler – Swaprks

Antwort

0

ich in Ihrer DBUtil Klasse glauben Sie brauchen, um mit Anmerkungen versehen Ihre SessionFactory, so dass Spring weiß, wie man es verbindet.

@Autowired 
private SessionFactory sessionFactory; 

Wie es jetzt aussieht, gibt es kein Standard-Konstruktor und nirgendwo (das wir sehen können) ist der Setter genannt wird, um die session einzustellen.

Verwandte Themen