2016-03-21 8 views
1

Ich habe eine Webanwendung, die Mail senden. Um das Senden von Mail durchzuführen, verwende ich eine Bibliothek, die auf Apache Commons Email 1.4 basiert. Als ich Websphere Liberty 8.5.5.7 verwendet habe, hat alles gut funktioniert, aber nachdem ich auf 8.5.5.9 aktualisiert habe, hat es aufgehört zu arbeiten und eine Ausnahme auszulösen: javax.mail.NoSuchProviderExceptionfull stack trace Ich postete am Ende der Frage.javax.mail.NoSuchProviderException: bei der Verwendung von Liberty 8.5.5.9 mit Apache Commons Email 1.4

Noch einmal, ich habe versucht, es auf beiden Installationen von Websphere Liberty 8.5.5.7 und 8.5.5.9 zu starten, auf der ersten funktioniert es gut auf Sekunde, es ist kaputt. Ich habe versucht, zu schauen, was der Unterschied und es sieht aus, dass Liberty selbst hat com.ibm.ws.javax.mail-1.5_1.5.xx.jar-Paket, die Java stören, die von commons-email 1.4 verwendet wird, siehe pom.xml hier.

Nach einiger Fehlersuche habe ich darauf geachtet, dass: Freiheit 8.5.5.9 verwendet com.ibm.ws.javax.mail-1.5_1.5.12.jar während Freiheit 8.5.5.7 verwendet com.ibm.ws.javax.mail-1.5_1.5.10.jar möglich, dies zu meinem Fehler verursacht wird.

Also, meine Frage ist, wie kann ich den Einfluss von com.ibm.ws.javax.mail beseitigen, die mit der Freiheit zusammenkommt, damit es funktioniert oder gibt es eine andere Problemumgehung? Wo kann ich einen Fehlerbericht für Liberty Team einreichen?

aktualisieren: Es sieht aus, dass Freiheit hat JavaMail 1.5 feature, die aktiviert oder deaktiviert werden kann, ich es nicht explizit aktiviert haben, ist es, dass es auf meiner Funktionen sieht implizit aktiviert ist, ist diese Liste meine Funktionen:

<featureManager> 
     <feature>jdbc-4.1</feature> 
     <feature>adminCenter-1.0</feature> 
     <feature>jndi-1.0</feature> 
     <feature>localConnector-1.0</feature> 
     <feature>servlet-3.1</feature> 
     <feature>ssl-1.0</feature> 
     <feature>jaxrs-2.0</feature> 
     <feature>cdi-1.2</feature> 
     <feature>ejbLite-3.2</feature> 
     <feature>jsf-2.2</feature> 
    </featureManager> 

Update 2 ich habe mit Hilfe dieses Artikels dieses Problem gelöst: Overriding a provided API with an alternative version

in Ihrer server.xml So stellen Sie die folgenden Änderungen:

Und jetzt erhalten Ihre Bibliotheken höhere Priorität als Libertys Bibliotheken.

Voll Stack-Trace Ausnahme:

org.apache.commons.mail.EmailException: Sending the email to the following server failed : relay.******.com:25 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421) ~[commons-email-1.4.jar:1.4] 
    at org.apache.commons.mail.Email.send(Email.java:1448) ~[commons-email-1.4.jar:1.4] 
    at my.package.mailer.sendHtmlMail(IBMMail.java:96) ~[classes/:?] 
    at my.package.mailer.EmailGateway.sendMail(EmailGateway.java:24) [classes/:?] 
    at my.package.mailer.EventMailGateway.eventCreatedNotification(EventMailGateway.java:52) [classes/:?] 
    at **********.restful.EventsAPI.saveEvent(EventsAPI.java:99) [classes/:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_45] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_45] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_45] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_45] 
    at com.ibm.ws.jaxrs20.server.LibertyJaxRsServerFactoryBean.performInvocation(LibertyJaxRsServerFactoryBean.java:636) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.performInvocation(LibertyJaxRsInvoker.java:115) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97) [cxf-core-3.0.3.jar:3.0.3] 
    at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:210) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:200) [cxf-rt-frontend-jaxrs-3.0.3.jar:3.0.3] 
    at com.ibm.ws.jaxrs20.server.LibertyJaxRsInvoker.invoke(LibertyJaxRsInvoker.java:381) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99) [cxf-rt-frontend-jaxrs-3.0.3.jar:3.0.3] 
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) [cxf-core-3.0.3.jar:3.0.3] 
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) [cxf-core-3.0.3.jar:3.0.3] 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) [cxf-core-3.0.3.jar:3.0.3] 
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:124) [com.ibm.ws.jaxrs-2.0.common_1.0.12.jar:3.0.3] 
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:256) [cxf-rt-transports-http-3.0.3.jar:3.0.3] 
    at com.ibm.ws.jaxrs20.endpoint.AbstractJaxRsWebEndpoint.invoke(AbstractJaxRsWebEndpoint.java:134) [com.ibm.ws.jaxrs-2.0.common_1.0.12.jar:?] 
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.handleRequest(IBMRestServlet.java:149) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.doPost(IBMRestServlet.java:107) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [com.ibm.ws.javaee.servlet.3.1_1.0.12.jar:?] 
    at com.ibm.websphere.jaxrs.server.IBMRestServlet.service(IBMRestServlet.java:99) [com.ibm.ws.jaxrs-2.0.server_1.0.12.jar:?] 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:778) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1161) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:82) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:928) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:262) [com.ibm.ws.webcontainer_1.1.12.jar:?] 
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:955) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:341) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:471) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:405) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:285) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:256) [com.ibm.ws.transport.http_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:174) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:83) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:504) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:574) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:929) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1018) [com.ibm.ws.channelfw_1.0.12.jar:?] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_45] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_45] 
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45] 
Caused by: javax.mail.NoSuchProviderException: smtp 
    at javax.mail.Session.getService(Session.java:820) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Session.getTransport(Session.java:742) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Session.getTransport(Session.java:682) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Session.getTransport(Session.java:662) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Session.getTransport(Session.java:719) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Transport.send0(Transport.java:248) ~[javax.mail-1.5.2.jar:1.5.2] 
    at javax.mail.Transport.send(Transport.java:124) ~[javax.mail-1.5.2.jar:1.5.2] 
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1411) ~[commons-email-1.4.jar:1.4] 
    ... 48 more 
+1

Wenn die gleiche Konfiguration in 8.5.5.7 funktionierte, dann sieht das wie ein Fehler aus. Sie können Fehler über den PMR-Prozess (http://www-01.ibm.com/support/docview.wss?uid=swg21507639) an IBM melden, oder sie überwachen dieses Forum und lösen es möglicherweise auf diese Weise. Laut dem Knowledge Center für die Funktion javaMail-1.5 (http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/rwlp_feature_javaMail-1.5.html), sollte keines der von Ihnen aktivierten Funktionen javaMail-1.5 aktivieren. –

+0

Related: [Bug 6668 - überspringbare Store- und Transportklassen] (https://kenai.com/bugzilla/show_bug.cgi?id=6668), die in JavaMail 1.5.3 und höher behoben sind. Versuchen Sie, JavaMail auf eine neue Version zu aktualisieren. – jmehrens

Antwort

0

Ich schlug javax.mail.NoSuchProviderException: smtp nach der Aktualisierung von Liberty 8.5.5.8 auf 8.5.5.9. Das Hinzufügen von <feature>javaMail-1.5</feature> zu meiner server.xml funktionierte für mich.

Verwandte Themen