khaleelsyed Ответов: 0

Как решить проблему nullpointerexception при вызове метода EJB с помощью инжектора @EJB


Когда я вызываю метод EJB со страницы сервлета, я получаю следующую ошибку..
 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [info.java.tips.servlet.MyServlet2] in context with path [/MyFirstWebApplication] threw exception
java.lang.NullPointerException
	at info.java.tips.servlet.MyServlet2.doPost(MyServlet2.java:33)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)


Пожалуйста, помогите, чтобы вам решить этот вопрос
Спасибо,

Что я уже пробовал:

@WebServlet("/MyServlet2")
public class MyServlet2 extends HttpServlet {
	
	@EJB(mappedName="MailSenderBean")
	private static MailSenderBean mailsenderbean;

@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
				
		String toEmail = request.getParameter("email");
		String subject = request.getParameter("subject");
		String message = request.getParameter("message");
		
		String fromemail = "xxxxxxxxxx";
		String password ="xxxxxxxxxx";
		
		try(PrintWriter out = response.getWriter())
		{
			mailsenderbean.sendMail(fromemail, toEmail, subject, message, password);
		    out.println("mail sent");
		}
		
	}
}


мой код внутри метода EJB

public void sendMail(String fromEmail,String toEmail,String subject,String message,String password )
  {
      Properties prop = System.getProperties();
      prop.put("mail.smtp.host", "smtp.gmail.com");
      prop.put("mail.smtp.auth", "true");
      prop.put("mail.smtp.port", "465");
      prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      prop.put("mail.smtp.socketFactory.port", "465");
      prop.put("mail.smtp.socketFactory.fallback", "false");

      Session session = Session.getDefaultInstance(prop,null);
      session.setDebug(true);

      Message mailmessage = new MimeMessage(session);

      try
      {
       mailmessage.setFrom(new InternetAddress(fromEmail));
       mailmessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
       mailmessage.setText(message);
       mailmessage.setSubject(subject);

       Transport transport = session.getTransport("smtp");
       transport.connect("smtp.gmail.com", "xxxxxxxx","xxxxxxx");
       transport.sendMessage(mailmessage, mailmessage.getAllRecipients());

       }
      catch (Exception e)
      {

       e.printStackTrace();
      }

  }

Richard MacCutchan

Согласно сообщению об ошибке, исключение происходит в строке 33, но у вас есть только 25 строк в вопросе.

khaleelsyed

я разместил конкретный блок кода.когда я удалю нижеприведенную строку

mailsenderbean.sendMail(fromemail, toEmail, тема, сообщение, пароль);

ошибка не возникает.

Richard MacCutchan

Ну что ж, это один из способов исправления ошибок. Но, возможно, будет лучше, если вы узнаете, какая ссылка на переменную равна нулю, и почему.

khaleelsyed

Я обновил вопрос с помощью блока кода внутри EJB. Пожалуйста, обратитесь к главному вопросу.

Richard MacCutchan

Сообщение "Ява.яз.Исключение NullPointerException в info.java.tips.servlet.MyServlet2.doPost(MyServlet2.java:33)" clear говорит вам, что ошибка находится в строке 33, но мы не знаем, к какой строке это относится.

khaleelsyed

код в строке-mailsenderbean.sendMail(fromemail, toEmail, subject, message, password);

Richard MacCutchan

Затем вам нужно использовать свой отладчик, чтобы узнать, какая переменная равна null и почему.

khaleelsyed

я новичок в программировании на java.я запускаю свое приложение tomcat server.как запустить отладчик..

Richard MacCutchan

Извините, я уже много лет не пользовался tomcat. Вам нужно будет ознакомиться с документацией.

0 Ответов