从应用程序发送电子邮件时出现javax.ejb.EJBException

问题描述

我正在使用GlassFish 5.1,Java 1.8,JavaMail,JavaFaces 2.2开发JavaEE应用程序,在该应用程序中,我需要发送电子邮件作为调用方法方法,但是当我从服务器运行它时,它向我显示了出现以下错误

Warning: javax.ejb.EJBException
    at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:728)
    at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:678)
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:483)
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4576)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2084)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2054)
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:188)
    at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:55)
    at com.sun.proxy.$Proxy268.preInscripcion(UnkNown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:113)
    at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:143)
    at com.sun.corba.ee.impl.protocol.ServerRequestdispatcherImpl.dispatchToServant(ServerRequestdispatcherImpl.java:490)
    at com.sun.corba.ee.impl.protocol.ServerRequestdispatcherImpl.dispatch(ServerRequestdispatcherImpl.java:161)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1520)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:1396)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleInput(MessageMediatorImpl.java:901)
    at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:183)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequest(MessageMediatorImpl.java:665)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.dispatch(MessageMediatorImpl.java:467)
    at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.doWork(MessageMediatorImpl.java:2193)
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:467)
    at com.sun.corba.ee.impl.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:510)
Caused by: java.lang.NoClassDefFoundError: sun/security/ssl/HandshakeStateManager
    at sun.security.ssl.Handshaker.init(Handshaker.java:282)
    at sun.security.ssl.Handshaker.<init>(Handshaker.java:242)
    at sun.security.ssl.ClientHandshaker.<init>(ClientHandshaker.java:160)
    at sun.security.ssl.SSLSocketImpl.initHandshaker(SSLSocketImpl.java:1329)
    at sun.security.ssl.SSLSocketImpl.doneConnect(SSLSocketImpl.java:690)
    at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:569)
    at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:110)
    at com.sun.mail.util.socketFetcher.startTLS(SocketFetcher.java:528)
    at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2126)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:728)
    at javax.mail.Service.connect(Service.java:342)
    at javax.mail.Service.connect(Service.java:222)
    at javax.mail.Service.connect(Service.java:243)
    at com.prueba.dao.UsuarioDAO.enviarEmail(UsuarioDAO.java:80)
    at com.prueba.model.Estudiante.agregarUsuario(Estudiante.java:19)
    at com.prueba.sessionbeans.EstudianteBean.preInscripcion(EstudianteBean.java:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1057)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1129)
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4796)
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:632)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:584)
    at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)
    at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:859)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:799)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:584)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:139)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:116)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:859)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:799)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:345)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4768)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4756)
    at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:181)
    ... 19 more

我正在一个单独的项目中测试代码片段,它可以正常工作,但是在从服务器执行该代码片段时,会发生错误代码片段如下:

try{
    Properties props=new Properties();
    props.setProperty("mail.smtp.host","smtp.gmail.com");
    props.setProperty("mail.smtp.starttls.enable","true");
    props.setProperty("mail.smtp.port","587");
    props.setProperty("mail.smtp.aunth","true");
    Session session=Session.getDefaultInstance(props);
    MimeMessage message=new MimeMessage(session);
    message.setFrom(new InternetAddress(mailSender));
    message.addRecipient(Message.RecipientType.TO,new InternetAddress(mailReceptor));
    message.setSubject(asunto);
    message.setText(mensaje);
    Transport transport=session.getTransport("smtp");
    transport.connect(mailSender,passwordSender);
    transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
    transport.close();
    return true;
}
catch(AddressException e){
    e.printstacktrace();
}
catch(MessagingException e){
    e.printstacktrace();
}

执行代码时,错误在下面的行transport.connect(mailSender,passwordSender);中进行了标记 我一直在尝试使用不同版本的JavaMail(1.4.5-1.6.2),我正在使用JDK8u111并将其更新为JDK8u261,但是什么也没有,我还尝试将glizzly-npn-bootstrap.jar的JAR从版本1.5更改为1.9 (正如他们在下面的error中所说),但它仍然给我同样的错误。我不明白哪里出了问题,也不知道如何解决

解决方法

我找不到GlassFish 5.1服务器中出现的问题的解决方案,但是从Payara 5.2服务器运行该应用程序时没有错误,并且一切正常,但是我决定将应用程序与JDK8u261一起使用以避免与版本兼容的可能问题。 我使用的Payara的下载链接为this

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...