[xmlc] Re: Re: Re: Re: Re: Re: Issues with XMLC 2.3.2
Sasa Bojanic <[email protected]> Fri, 25 Mar 2011 16:14:02 +0100
| Newsgroups | gmane.comp.java.enhydra.xmlc |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format... ------------=_1301066053-30467-15944 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, yes, I'm of course also using 64-bit Java. I will check about our MultiClassLoader, but the point is EVERYTHING WORKS PERFECTLY with XMLC 2.3-1. We don't have a problem with resource lookup within the JAR file, and do not have a problem with scenario where XMLC is not in the application's classloader. We are trying to find the reason why we can't switch to XMLC 2.3-2 seamlessly...and since everything works with XMLC2.3-1 we think it is a XMLC issue? Regards, Sasa. On 25-Mar-11 16:03, Jacob Kjome wrote: > > In this particular case, XMLC can certainly find the file (as opposed > to the other case where it can't when XMLC libs are in the server lib, > at least on your system), but the path is messed up. But this is > really not XMLC's fault. The classloader's getResource() method is > returning an invalid path. Other than tweaking it with your > workaround, there's nothing XMLC can (nor should) do about that > (though there is a way you can work around this without messing with > XMLC's core, which I will send in a separate email later today). As I > mentioned, it works perfectly well on my system. > > You have, potentially, at least 3 platform differences. The first is > Win7 x64, where I've only tested on WinXP x32. You may also be using > 64 bit Java, though you'd have to verify that. And you are running > under Enhydra, with some "MultiClassLoader" classloader > implementation. Somewhere in these differences lies a bug that is not > the fault of XMLC. > > I would start first with the "MultiClasLoader" and see whether there > is a bug in its getResource() method that returns URL's with invalid > paths when resources are looked up in jar files. Second, I'd check if > there's a bug in the JDK you are using (maybe the 64 bit version has a > bug where the 32 bit version I use does not?). Third, I guess could > be a bug in Win7, though I would think the Java platform would be > responsible for working around that given the supposed "platform > independence" and all. > > Expect another email describing a workaround you can use, without > messing with XMLC's core, a bit later when I have access to my > development machine. > > Jake > > > On Thu, 24 Mar 2011 22:41:23 +0100 > Sasa Bojanic <[email protected]> wrote: >> Hi, >> >> from what I can see in Enhydra code, XMLCDeferredParsingFactory is >> obtained by calling its constructor: >> >> xmlcFactory = new >> XMLCDeferredParsingFactory(StandardDocumentLoader.getInstance(), >> (MultiClassLoader) presentationManager.getAppClassLoader(), >> >> new >> EnhydraXMLCLogger(logChannel)); >> >> First of all let me show you an error that occurs when XMLC is in the >> application classloader. The error is in the attached document... >> >> I use Tomcat 6.0.29, Java 1.6_23, Win7 x64, and all the JARs you've >> mentioned are in this case in the application's WEB-INF\lib folder. >> >> If you notice, the XMLC is reporting to search for: >> >> d:\apache-tomcat-6.0.29\webapps\discRack\WEB-INF\lib\*discRack.jardiscRack*\presentation\ErrorHTML.xmlc >> >> >> When I "patch" XMLC as described before, this scenario works well. >> >> Regards, >> Sasa. >> >> On 21-Mar-11 00:34, Jacob Kjome wrote: >>> Hi Sasa, >>> >>> I finally made some time to look into the issues you reported. >>> Interestingly, I'm >>> not able to reproduce either issue. I used Tomcat-6.0.29 >>> standalone, as that's >>> the version you used (note that I did not try Enhydra). >>> >>> To test issue #1, I jar'ed up the classes and markup files and made >>> sure to rename >>> the resource dirs so files located there could not be found. I also >>> renamed the >>> WEB-INF/xmlc directory in the demo app to ensure templates could not >>> be loaded via >>> the servlet context (allowed for by the custom >>> ValidatingDocumentLoader.ValidatingResourceLoader class used in the >>> xmlc tomcat >>> demo), thus could only be loaded via the classloader. I placed the >>> templates jar >>> in WEB-INF/lib and ran tomcat. First I tried loading the >>> Welcome.html page >>> (french locale, because that's what I had selected in the tomcat >>> demo), which came >>> up fine. I took a look at the log to see how the file was loaded... >>> >>> INFO:>>>Parsing DOM for $$XMLC_GENERATED$$.xmlc.demo.Welcome.html >>> from source URL >>> jar:file:/D:/dev/XMLC_FORGE_SVN/tags/XMLC_2_3_2/xmlc/examples/tomcat/build/webapps/xmlc/WEB-INF/lib/xmlc-templates.jar!/demo/Welcome_fr.html >>> >>> >>> ...so, clearly it is being loaded via the classloader... and working >>> fine for me. >>> >>> >>> To test issue #2, I copied the following jars into >>> ${catalina.base}/shared... >>> >>> jregex.jar >>> nekohtml.jar >>> resolver.jar >>> xercesImpl.jar >>> xml-apis.jar >>> xmlc-all-runtime.jar >>> >>> Note that the Tomcat demo has a modified >>> ${catalina.base}/conf/catalina.properties, which places the >>> ${catalina.base}/shared directory, as well as contained jars, in the >>> common >>> loader. It looks like... >>> >>> common.loader=${catalina.base}/shared,${catalina.base}/shared/*.jar,${catalina.home}/shared,${catalina.home}/shared/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar >>> >>> >>> This would be no different than putting the jars in >>> ${catalina.home}/lib, but >>> avoids having to muck with the contents of the stock Tomcat >>> installation. >>> >>> Anyway, I left my jar file containing the XMLC classes and templates in >>> WEB-INF/lib. Again I tried loading the Welcome.html page and, >>> again, it came up >>> fine. I looked at the log and the INFO message was the same as >>> above. I then >>> moved the templates jar file to the ${catalina.base}/shared >>> directory and tried it >>> again. The page came up fine and the INFO message looked like... >>> >>> INFO:>>>Parsing DOM for $$XMLC_GENERATED$$.xmlc.demo.Welcome.html >>> from source URL >>> jar:file:/D:/dev/XMLC_FORGE_SVN/tags/XMLC_2_3_2/xmlc/examples/tomcat/build/shared/xmlc-templates.jar!/demo/Welcome_fr.html >>> >>> >>> >>> I'm not sure what to tell you? It all works fine for me. Note that my >>> environment consists of... >>> >>> Windows XP sp3 >>> Java 1.6.0_24 >>> Tomcat-6.0.29 (standalone run from the command line) >>> >>> >>> Note that I use XMLCContext to obtain the XMLCDeferredParsingFactory. >>> >>> >>> At this point, I can only say that it works for me. Maybe the it's >>> platform >>> differences that are causing issues? What OS and version of Java do >>> you use? >>> What does the original "jar:" URL look like when you run it (prior >>> to having to >>> muck with it to get it to work in your environment)? And please let >>> me know how >>> you obtain the XMLCDeferredParsingFactory. >>> >>> >>> Jake >>> >>> >>> On 3/7/2011 1:46 PM, Sasa Bojanic wrote: >>>> Well, it is not really a patch, but something that made my use case >>>> one >>>> working...I agree nowdays it would be reasonable to move XMLC to >>>> JDK1.5 >>>> or even 1.6... >>>> >>>> Thanks a lot for the quick response! >>>> >>>> Sasa. >>>> >>>> >>>> On 07-Mar-11 17:13, Jacob Kjome wrote: >>>>> I can look into using your patch for #1 (or something like it) for >>>>> the >>>>> next XML release. I think the primary issue here is that we've >>>>> maintained a dependency on JDK1.3, which does not have java.net.URI. >>>>> I've tried to maintain this minimum dependency as long as Xerces does >>>>> so. Plus it makes for easy testing because JDK1.3 doesn't add any of >>>>> its own XML libraries. It's easy to dictate the version without >>>>> getting buggy JDK1.4 XML behavior. But I think most of the world has >>>>> moved on to JDK1.5+, so maybe XMLC should too at some point? >>>>> >>>>> I'll have to test #2. Not sure how quickly I'll be able to get to >>>>> this, though. But I'll try and spend some time this week on it. >>>>> >>>>> Jake >>>>> >>>>> On Mon, 07 Mar 2011 13:56:15 +0100 >>>>> Sasa Bojanic<[email protected]> wrote: >>>>>> Hi, >>>>>> >>>>>> I'm trying to upgrade our applications that use XMLC 2.3.1 to the >>>>>> newest XMLC version. >>>>>> Our applications are deployed both under the Tomcat 6.0.29 >>>>>> application server and Enhydra application server (based on Tomcat >>>>>> 6.0.29). >>>>>> >>>>>> There are two issues I faced: >>>>>> >>>>>> 1) when deploying under the Tomcat, XMLC JAR files are placed >>>>>> together with the application JAR files into application's >>>>>> WEB-INF\lib folder (so application classloader is used to load >>>>>> them). >>>>>> In this case, XMLC can't load resources (*.html and *.xmlc files) >>>>>> from JAR file. When resources are not in the JAR file but unpacked >>>>>> into WEB-INF\classes folder everything works. >>>>>> >>>>>> After "patching" the method getPathURLFromClasspath() from >>>>>> XMLCDeferredParsingFactory to add: >>>>>> >>>>>> if (srcURL != >>>>>> null&& srcURL.toString().indexOf(".jar")>= 0) { >>>>>> try { >>>>>> String mdurl = srcURL.toString(); >>>>>> srcURL = new URL("jar:" >>>>>> + mdurl.substring(0, >>>>>> mdurl.indexOf(".jar")) + ".jar!/" >>>>>> + >>>>>> mdurl.substring(mdurl.indexOf(".jar") + 4)); >>>>>> } catch (Exception ex) { >>>>>> } >>>>>> } >>>>>> >>>>>> after the line: >>>>>> >>>>>> URL srcURL = fDynamicClassLoader.getResource(path); >>>>>> >>>>>> it works fine. >>>>>> >>>>>> 2) when deploying under Enhydra application server or under Tomcat, >>>>>> but instead of putting XMLC JAR files into application's >>>>>> WEB-INF\lib, >>>>>> we put it into Tomcat's lib folder, XMLC can't find resources no >>>>>> matter if resources are inside JAR file or unpacked, and it can't >>>>>> find it even in the case I put application's JAR file into Tomcat's >>>>>> lib folder. >>>>>> >>>>>> Is it a bug in XMLC? Can somebody help? >>>>>> >>>>>> Regards, >>>>>> Sasa. >>>>>> >> > ------------=_1301066053-30467-15944 Content-Type: text/plain; charset="UTF-8"; name="message-footer.txt" Content-Disposition: inline; filename="message-footer.txt" Content-Transfer-Encoding: quoted-printable -- You receive this message as a subscriber of the [email protected] mailing list= . To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=3Dhelp OW2 mailing lists service home page: http://www.ow2.org/wws ------------=_1301066053-30467-15944--