<div dir="ltr">This looks like your problem primarily involves Wildfly&#39;s modular classloading and how to package MyBatis classes into a module.<div><br></div><div>You said that t<span style="font-size:12.8px">he federation provider jar is a big fat jar that includes all its dependencies. Herein lies your problem. Your jar apparently contains javax.xml classes, which it shouldn&#39;t.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">When you define a jboss module for your provider you specify resources and dependencies in your module.xml. You have to pull in javax.xml as Bill has specified:</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">&lt;module name=&quot;javax.api&quot;/&gt;</span><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">But you also have to make sure that none of the same classes that you pull in are present in your big fat provider jar. I bet if you do:</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">jar tf your-provider.jar</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">you&#39;ll see javax.xml classes listed. You have to remove them.</span></div><div><span style="font-size:12.8px"><br></span></div><div><br></div><div>When you pull in javax.api module dependency you are using the rt.jar implementation - only slightly bytecode-manipulated when it&#39;s loaded.</div><div><div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 16, 2015 at 6:49 PM, carmen <span dir="ltr">&lt;<a href="mailto:carmen.checa@masergy.com" target="_blank">carmen.checa@masergy.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 style="word-wrap:break-word"><blockquote type="cite"><div style="word-wrap:break-word"><span class="">Hi Bill,<div><br></div><div>I already had <span><span style="white-space:pre-wrap"> &lt;module name=&quot;javax.api”/&gt; in my module.xml</span></span></div><div><span><span style="white-space:pre-wrap"><br></span></span></div><div><span><span style="white-space:pre-wrap">I did find a workaround that I do not like and I am hoping that you can help me do it right</span></span></div><div><span><span style="white-space:pre-wrap"><br></span></span></div><div><span><span style="white-space:pre-wrap"><br></span></span></div><div><span><span style="white-space:pre-wrap">Ok so I first set </span></span> jaxp debug to true, </div><div>and I was getting the following error</div><div><br></div><div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">JAXP: using thread context class loader (ModuleClassLoader for Module &quot;deployment.keycloak-server.war:main&quot; from Service Module Loader) for search</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,517 ERROR [stderr] (default task-2) JAXP: Looking up system property &#39;javax.xml.xpath.XPathFactory:http://<a href="http://java.sun.com/jaxp/xpath/dom&#39;" target="_blank">java.sun.com/jaxp/xpath/dom&#39;</a></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,517 ERROR [stderr] (default task-2) JAXP: The value is &#39;__redirected.__XPathFactory&#39;</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,517 ERROR [stderr] (default task-2) JAXP: createInstance(__redirected.__XPathFactory)</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,518 ERROR [stderr] (default task-2) JAXP: loaded __redirected.__XPathFactory from jar:file:/Users/Carmen/software/keycloak-demo-1.5.0.Final/keycloak/jboss-modules.jar!/__redirected/__XPathFactory.class</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,518 ERROR [stderr] (default task-2) JAXP: could not instantiate __redirected.__XPathFactory</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,519 ERROR [stderr] (default task-2) java.lang.ClassCastException: __redirected.__XPathFactory cannot be cast to javax.xml.xpath.XPathFactory</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,519 ERROR [stderr] (default task-2) <span style="white-space:pre-wrap">        </span>at javax.xml.xpath.XPathFactoryFinder.createInstance(XPathFactoryFinder.java:306)</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,519 ERROR [stderr] (default task-2) <span style="white-space:pre-wrap">        </span>at javax.xml.xpath.XPathFactoryFinder._newFactory(XPathFactoryFinder.java:184)</div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)">11:03:40,519 ERROR [stderr] (default task-2) <span style="white-space:pre-wrap">        </span>at javax.xml.xpath.XPathFactoryFinder.newFactory(XPathFactoryFinder.java:157)</div></div><div><br></div><div><br></div><div>So it looked like there was  a class loader issue and the ClassCast was not working.</div><div>I did not know how to fix that, so I went ahead and I changed the property <span style="color:rgb(195,55,32);font-family:Menlo">javax.xml.xpath.XPathFactory:http://</span><font face="Menlo"><a href="http://java.sun.com/jaxp/xpath/dom" target="_blank">java.sun.com/jaxp/xpath/dom</a></font> back to the default, to override looking for <span style="color:rgb(195,55,32);font-family:Menlo">__redirected.__XPathFactory</span> </div><div>The default implementation is a com.sun….. class that lives in rt.jar and when I tried that I was getting a ClassNotFound, so I went ahead, added Xalan to my module and changed the property to use the Xalan class: <font color="#c33720" face="Menlo">org.apache.path.jaxp.XPathFactoryImpl</font> </div><div>That worked.</div><div><br></div><div>I had that same issue with another class that was also overriden with a __redirected class (DocumentBuilderFactory), and once I set the default value to the default implementation, the implementation cannot be loaded because it is in rt.jar. I went around that by adding crimsom to my module.</div><div><br></div><div>So it looks like even though there is a dependency defined of java.api, those jars (at least for xml) do not contain implementations, just the interfaces, and the actual providers are in rt.jar and I get an error trying to load them.</div><div><br></div></span><span class=""><div>I really do not like what I have done. There’s got to be a way to be able to use the implementations in rt.jar, right?</div><div><br></div><div>Thanks</div><div>Maria</div><div><br></div><div> </div></span></div></blockquote><div><br></div></div><br>_______________________________________________<br>
keycloak-user mailing list<br>
<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br></blockquote></div><br></div>