<div dir="ltr">Hey guys!<div><br></div><div>Just FYI - recently I was thinking about putting Spring integration modules inside uber jars [1].</div><div><br></div><div>This could potentially lower the number of dependencies for our clients (they would just need Spring (either Boot or standard jars) and infinispan-embedded to get going) however after a longer thought I decided to kill this idea. The main reason is that placing both infinispan-embedded and infinispan-spring4-embedded would result in duplicated classes on the classpath. And this might cause many weird errors. I documented it in my comment [2].</div><div><br></div><div>Please let me know if you have any other thoughts and comments regarding this... </div><div><br></div><div>Thanks</div><div>Sebastian</div><div><br></div><div>[1] <a href="https://issues.jboss.org/browse/ISPN-7237">https://issues.jboss.org/browse/ISPN-7237</a></div><div>[2] <a href="https://issues.jboss.org/browse/ISPN-7237?focusedCommentId=13331339#comment-13331339">https://issues.jboss.org/browse/ISPN-7237?focusedCommentId=13331339#comment-13331339</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 25, 2016 at 2:43 PM, Sebastian Laskawiec <span dir="ltr">&lt;<a href="mailto:slaskawi@redhat.com" target="_blank">slaskawi@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Implemented: <a href="https://github.com/infinispan/infinispan/pull/4039" target="_blank">https://github.<wbr>com/infinispan/infinispan/<wbr>pull/4039</a><div><br></div><div>Thanks</div><span class="HOEnZb"><font color="#888888"><div>Sebastian</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 3, 2016 at 3:11 PM, Sebastian Laskawiec <span dir="ltr">&lt;<a href="mailto:slaskawi@redhat.com" target="_blank">slaskawi@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">During our talk on IRC Tristan proposed to mark Spring dependencies as provided. Another similar approach would be to make them optional.<div><br></div><div>I think both approaches are even better than making Spring module depend on Uber Jars. However there is a price to pay - each user will probably have to declare in his pom what dependencies he&#39;d like to use (uber or small jars).</div></div><div class="m_-610262814305571604HOEnZb"><div class="m_-610262814305571604h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 2, 2016 at 7:53 AM, Sebastian Laskawiec <span dir="ltr">&lt;<a href="mailto:slaskawi@redhat.com" target="_blank">slaskawi@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>I think the plan is to cover more integration tests (if not all) with Uber Jars - right Martin?</div><div><br></div><div>WRT the logger - yes you are absolutely correct and that&#39;s why logger implementations are excluded from Uber Jars (Ubers contain only APIs - like SLF4J-API or LOG4J-API).</div><div><br></div><div>I think the uber jar vs small jar is more about what configurations are preferred. Note that you can always (even now) exclude all dependencies from Spring Remote and add Remote Uber Jar manually. Switching Spring Remote module to Uber Jars will only change the default behavior (we will still be able to exclude dependencies and add small jars if you prefer them). </div><div>If we proceed with this change - of course I will document this excluding part in the docs (currently it is not written anywhere and it is not-so-obvious solution).<br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 1, 2016 at 3:12 PM, Sanne Grinovero <span dir="ltr">&lt;<a href="mailto:sanne@infinispan.org" target="_blank">sanne@infinispan.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The Uber Jars will always be more problematic than the &quot;small ones&quot; -<br>
as the testsuite doesn&#39;t cover them at the same level, if at all - so<br>
I don&#39;t think it would be wise to start having components to depend on<br>
them, especially as this looks like it might become viral: what about<br>
other component X that people will want to use with Spring?<br>
<br>
Also when you&#39;re deploying on WildFly you probably want to use the<br>
Logger from the application server as it&#39;s the one being managed. So<br>
the solution would be wither never use Uber Jars when deploying on the<br>
container, or remove JBoss Logger from the Uber Jars.<br>
<br>
Shall I state once more that the whole Uber Jars affair seems a really<br>
bad idea to me?<br>
<br>
Thanks,<br>
Sanne<br>
<div><div><br>
<br>
<br>
On 1 February 2016 at 11:31, Sebastian Laskawiec &lt;<a href="mailto:slaskawi@redhat.com" target="_blank">slaskawi@redhat.com</a>&gt; wrote:<br>
&gt; Hey!<br>
&gt;<br>
&gt; I&#39;m currently trying to solve a tricky class loading issue connected to<br>
&gt; Spring, CDI and Uber Jars. Here&#39;s the scenario:<br>
&gt;<br>
&gt; Remote Uber Jar contains CDI module<br>
&gt; Our Hot Rod client use newer version of JBoss Logging which is present in<br>
&gt; Wildfly/EAP modules<br>
&gt; However EAP and Wildfly will load (and make available for deployment) their<br>
&gt; own version of JBoss Logging [1]<br>
&gt;<br>
&gt; The easiest fix for this is to relocate JBoss Logging package in Uber Jar<br>
&gt;<br>
&gt; Spring module requires some classes from Infinispan Common and they in turn<br>
&gt; need BasicLogger from JBoss Logging<br>
&gt;<br>
&gt; If we relocate JBoss Logging and will try to use Uber Jar with Spring - we<br>
&gt; will end up with classloading issue [2]<br>
&gt;<br>
&gt; So it seems the best approach is to make Spring depend on Uber Jars instead<br>
&gt; of &quot;small ones&quot;. Of course, users who use small jars will probably be<br>
&gt; affected by this change (they would have to either accept using Uber Jars or<br>
&gt; exclude them in their poms and add dependencies manually).<br>
&gt;<br>
&gt; Is anyone against this solution? JIRA tracking ticket: [3].<br>
&gt;<br>
&gt; Thanks<br>
&gt; Sebastian<br>
&gt;<br>
&gt; [1] Scenario with Weld enabled WAR<br>
&gt; <a href="https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments" rel="noreferrer" target="_blank">https://docs.jboss.org/author/<wbr>display/AS7/Implicit+module+<wbr>dependencies+for+deployments</a><br>
&gt; [2] <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1266831#c7" rel="noreferrer" target="_blank">https://bugzilla.redhat.com/<wbr>show_bug.cgi?id=1266831#c7</a><br>
&gt; [3] <a href="https://issues.jboss.org/browse/ISPN-6132" rel="noreferrer" target="_blank">https://issues.jboss.org/<wbr>browse/ISPN-6132</a><br>
&gt;<br>
</div></div>&gt; ______________________________<wbr>_________________<br>
&gt; infinispan-dev mailing list<br>
&gt; <a href="mailto:infinispan-dev@lists.jboss.org" target="_blank">infinispan-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/infinispan-<wbr>dev</a><br>
______________________________<wbr>_________________<br>
infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org" target="_blank">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/infinispan-<wbr>dev</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>