[MGNLREST-348] Multiple mail jars. Created: 16/Nov/21 Updated: 19/Sep/22 Resolved: 21/Feb/22 |
|
| Status: | Closed |
| Project: | Magnolia REST Framework |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.2.12 |
| Type: | Bug | Priority: | Neutral |
| Reporter: | Michiel Meeuwissen | Assignee: | Mikaël Geljić |
| Resolution: | Fixed | Votes: | 2 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | 0d | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||
| Template: |
|
||||||||||||||||
| Acceptance criteria: |
Empty
|
||||||||||||||||
| Task DoD: |
[X]*
Doc/release notes changes? Comment present?
[X]*
Downstream builds green?
[X]*
Solution information and context easily available?
[X]*
Tests
[X]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||||||||||||||
| Bug DoR: |
[ ]*
Steps to reproduce, expected, and actual results filled
[ ]*
Affected version filled
|
||||||||||||||||
| Date of First Response: | |||||||||||||||||
| Description |
|
I find in our application three mail jars: [INFO] +- info.magnolia.pur:magnolia-module-public-user-registration:jar:2.7.5:compile [INFO] +- info.magnolia.form:magnolia-form:jar:2.7.3:compile and another one via resteasy: It would be nice if versions (and groupids) were in sync. I think the last one has the most up to date groupId/artifactid. |
| Comments |
| Comment by Mikaël Geljić [ 18/Feb/22 ] |
|
Hi mihxil, com.sun.mail:jakarta.mail and com.sun.mail:javax.mail are equivalent in terms of spec (but they also contain some impl). Moving this ticket to MGNLREST as we will apply an exclusion to the resteasy-multipart-provider usage. We keep the javax.mail one because Magnolia 6.2 is on a Java EE 8 baseline (see also https://eclipse-ee4j.github.io/mail/). Regarding the old version coming through public-user-registration, we cannot exclude this one for you as PUR is not part of the standard bundle, but your dependency should look like that: <dependency> <groupId>info.magnolia.pur</groupId> <artifactId>magnolia-module-public-user-registration</artifactId> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> </exclusions> </dependency> |
| Comment by Michiel Meeuwissen [ 29/Mar/22 ] |
|
So, who is maintaining pur? It seems that it is in the info.magnolia domain ,and it is extending the 'magnolia-external-dependencies' poms, which defined two mail jars:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
I think it would be a good idea to try to arrange that everything depending on magnolia, e.g. by using (one of its) parent poms(s) should use the same idea of that mail-jars it should depend on. |
| Comment by Mikaël Geljić [ 01/Apr/22 ] |
|
Hi Michiel, thanks for reporting back, PUR is not bundled but it is indeed officially maintained by us. I'll look up why I initially dismissed it being an issue (could be) and get back to you. |
| Comment by Richard Gange [ 06/Jun/22 ] |
|
It seems now that rest is dependent on the mail module. If I try to exclude it then I run into this issue: 2022-06-06 10:23:10,464 INFO info.magnolia.cms.filters.CompositeFilter : Initializing filter [Wrapper for DamDownloadServlet servlet] 2022-06-06 10:23:10,465 INFO info.magnolia.cms.filters.CompositeFilter : Initializing filter [Wrapper for RestDispatcherServlet servlet] 2022-06-06 10:23:10,998 WARN org.jboss.resteasy.resteasy_jaxrs.i18n : RESTEASY002145: NoClassDefFoundError: Unable to load builtin provider org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider from jar:file:/Users/rich.gange/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/light-author-webapp/WEB-INF/lib/resteasy-multipart-provider-4.6.1.Final.jar!/META-INF/services/javax.ws.rs.ext.Providers java.lang.NoClassDefFoundError: javax/mail/MessagingException at java.lang.Class.getDeclaredConstructors0(Native Method) ~[?:1.8.0_261] at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[?:1.8.0_261] at java.lang.Class.getConstructors(Class.java:1651) ~[?:1.8.0_261] at org.jboss.resteasy.spi.util.PickConstructor.pickSingletonConstructor(PickConstructor.java:30) ~[resteasy-core-spi-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.Utils.createConstructorInjector(Utils.java:111) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.Utils.createProviderInstance(Utils.java:100) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.CommonProviders.processProviderContracts(CommonProviders.java:87) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.ClientHelper.processProviderContracts(ClientHelper.java:104) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.processProviderContracts(ResteasyProviderFactoryImpl.java:841) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProviderFactoryImpl.java:829) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl.registerProvider(ResteasyProviderFactoryImpl.java:816) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.plugins.providers.RegisterBuiltin.registerProviders(RegisterBuiltin.java:109) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.plugins.providers.RegisterBuiltin.register(RegisterBuiltin.java:74) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.ResteasyDeploymentImpl.startInternal(ResteasyDeploymentImpl.java:148) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.core.ResteasyDeploymentImpl.start(ResteasyDeploymentImpl.java:121) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:144) ~[resteasy-core-4.6.1.Final.jar:4.6.1.Final] at info.magnolia.rest.RestDispatcherServlet.init(RestDispatcherServlet.java:123) ~[magnolia-rest-integration-2.2.13.jar:?] at info.magnolia.cms.filters.ServletDispatchingFilter.initializeServlet(ServletDispatchingFilter.java:112) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.ServletDispatchingFilter.init(ServletDispatchingFilter.java:103) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.CompositeFilter.initFilters(CompositeFilter.java:136) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.CompositeFilter.init(CompositeFilter.java:111) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.CompositeFilter.initFilters(CompositeFilter.java:136) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.CompositeFilter.init(CompositeFilter.java:111) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.FilterManagerImpl.initRootFilter(FilterManagerImpl.java:177) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.FilterManagerImpl.resetRootFilter(FilterManagerImpl.java:150) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.FilterManagerImpl.startUsingConfiguredFilters(FilterManagerImpl.java:140) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.module.ui.InstallationFilter.doFilter(InstallationFilter.java:102) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110) ~[magnolia-core-6.2.19.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96) ~[magnolia-core-6.2.19.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[catalina.jar:9.0.50] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[catalina.jar:9.0.50] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[catalina.jar:9.0.50] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[catalina.jar:9.0.50] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[catalina.jar:9.0.50] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[catalina.jar:9.0.50] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[catalina.jar:9.0.50] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) ~[catalina.jar:9.0.50] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[catalina.jar:9.0.50] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[catalina.jar:9.0.50] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-coyote.jar:9.0.50] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-coyote.jar:9.0.50] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-coyote.jar:9.0.50] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[tomcat-coyote.jar:9.0.50] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-coyote.jar:9.0.50] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_261] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_261] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-util.jar:9.0.50] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_261] Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407) ~[catalina.jar:9.0.50] at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215) ~[catalina.jar:9.0.50] ... 55 more Maybe we need to make sure that javax.mail is a dependency in the rest-integration module pom? |