Bonjour à tous.

J'ai actuellement un problème avec mon projet sous glassfish et j'ai besoin de votre aide .
Je m'explique: Quand j'essaye de me connecter via un formulaire jsp, j'ai une erreur http 500 et l'erreur suivante qui apparaît dans le log de glassfish:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
Avertissement: StandardWrapperValve[LoginServlet]: PWC1406: Servlet.service() for servlet LoginServlet threw exception
java.lang.NullPointerException
	at com.google.common.hash.MessageDigestHashFunction$MessageDigestHasher.putString(MessageDigestHashFunction.java:144)
	at com.supinfo.supinbank.servlet.LoginServlet.doPost(LoginServlet.java:54)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Une ligne attire mon attention, celle de ma(mon ) servlet LoginServlet. Je décide donc de voir ce qui cloche mais tout m'a l'air d'être normal. Je regarde donc la ligne qui semble poser problème:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
HashCode hc = hf.newHasher().putString(password).hash();
Voici le code de LoginServlet (je précise que j'utilise une librairie nommée guava):



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
@WebServlet(name = "LoginServlet", urlPatterns = {"/login"})
public class LoginServlet extends HttpServlet {
 
    @EJB
    private PersonDao personDao;
 
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        final String email = request.getParameter("email");
        final String password = request.getParameter("password");
 
        HashFunction hf = Hashing.sha1();
        HashCode hc = hf.newHasher()
                .putString(password)
                .hash();
 
        final String hashedPassword = hc.toString();
 
 
        final Person p = personDao.findUserByMail(email);
        if (p == null) {
            doGet(request, response);
        }
        else
        {
            if (p.getPassword().equals(hashedPassword)) {
                final HttpSession session = request.getSession();
                session.setAttribute("user", String.format("%s %s", p.getFirstName(), p.getLastName()));
                if (p.getRole() == UserRole.Advisor) {
                    session.setAttribute("role", "advisor");
                    response.sendRedirect(getServletContext().getContextPath() + "/auth/admin/advisor");
                }
                else
                {
                    session.setAttribute("role", "customer");
                    session.setAttribute("customer", p);
                    response.sendRedirect(getServletContext().getContextPath() + "/auth/customer");
                }
            }
            else
            {
                doGet(request, response);
            }
        }
 
    }
 
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
Au cas où, je laisse le code la jsp que j'utilise pour ma connexion:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 
<body>
 
     <c:url value="/login" var="loginUrl" />
 
<form method="POST" action="${loginUrl}" style="padding-top:10px; padding-bottom: -15px;">
                  <input type="email" name="email" placeholder="Email" required />
                  <input type="password" name=password" placeholder="Password" required />
                  <input type="submit" value="Login" class="btn-success" />
              </form>
  </body>
J'aimerais que vous m'éclairiez parce que je suis perdu.
Merci d'avance à tous