[xmlc] Re: Re: Re: Re: SSI and XMLC
Sasa Bojanic <[email protected]> Thu, 31 Mar 2011 23:04:41 +0200
| Newsgroups | gmane.comp.java.enhydra.xmlc |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format... ------------=_1301605492-30467-16294 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Again... Not sure if having custom DocumentLoader/Classloader can help, since resolving of SSI happens during "parse" of HTML file...I think this should be corrected in SSIReader class, openSSIInclude method...and I doubt we can simply "customize" it from outside XMLC? Sasa. On 31-Mar-11 21:53, Sasa Bojanic wrote: > Yes, when the resource is not within the JAR file (but in the > WEB-INF\classes folder) the paths with "/../" are working fine... > > With your help, we gave up from custom classloader for XMLC, and now > also use non-singleton DocumentLoader instances (implicitly created by > XMLCDefferedParsingFactory). > However, we will consider your suggestions in order to solve this SSI > issue... > > Thanks a lot, > Sasa. > > (since you helped us a lot with thi > On 31-Mar-11 21:40, Jacob Kjome wrote: >> >> I see. That makes more sense, as I don't recall anything having >> specifically to do with SSI loading having changed between XMLC 2.3.1 >> and 2.3.2 (at least nothing that should affect this scenario). >> >> I suspect, ultimately, that this is a deficiency of JarURLConnection >> in dealing with paths containing "/../", though I have yet to verify >> this. I believe this works fine when it's a non "jar:" URL path, so >> I think the problem is specific to JarURLConnection. >> >> You could probably work around this either in your custom classloader >> (where, as I recall, you applied the fix for "jar:" URLs originally) >> or in a custom document/resource loader. All you'd need to do is >> re-write the path of the URL to pre-resolve the ".." parts changing, >> for instance, this... >> >> jar:file:/D:/apache-tomcat-6.0.29/webapps/airSent/WEB-INF/lib/airSent.jar!/com/lutris/airsent/presentation/customer/../media/TopBanner.ssi >> >> >> ...to this... >> >> jar:file:/D:/apache-tomcat-6.0.29/webapps/airSent/WEB-INF/lib/airSent.jar!/com/lutris/airsent/presentation/media/TopBanner.ssi >> >> >> >> That said, this is probably something that XMLC could take care of >> internally. I would certainly consider this for the next release if >> my assumptions pan out. >> >> >> Jake >> >> On Thu, 31 Mar 2011 21:11:06 +0200 >> Sasa Bojanic <[email protected]> wrote: >>> Sorry...it doesn't work with XMLC 2.3-1 as well... >>> >>> Yes, the com/lutris/airsent/presentation/media/TopBanner.ssi is the >>> right location within the JAR. >>> >>> You can try with the airSent.war from the ZIP file. However, if you >>> use this WAR as it is, everything works well both with XMLC2.3-1 >>> (which is originally inside the WAR) and with XMLC2.3-2 (when you >>> replace the XMLC/GNUREGEXP JAR files). The problem occurs when you >>> pack everything from WEB-INF\classes folder into the JAR file, and >>> then put this JAR file into WEB-INF\lib folder (and this is the >>> change we are introducing in our new release). So the problem was >>> here even in XMLC 2.3-1 but we didn't notice it. >>> >>> Do you think it is an XMLC problem or...? >>> >>> Sasa. >>> >>> On 31-Mar-11 19:44, Jacob Kjome wrote: >>>> >>>> It looks like it's referencing the jar it should exist in, and >>>> clearly it found the markup file including the SSI, so I don't >>>> think this is a classloader issue. >>>> >>>> Does the path seem right to you? That is, does the file in >>>> question exist in the following relative path within the >>>> airSent.jar file?.... >>>> >>>> com/lutris/airsent/presentation/media/TopBanner.ssi >>>> >>>> If you can confirm that, I can try to test things out at home >>>> tonight. I presume this jar is one of those in the zip file >>>> containing all the webapps which can be deployed under Tomcat >>>> Standalone? >>>> >>>> >>>> Jake >>>> >>>> On Thu, 31 Mar 2011 16:31:32 +0200 >>>> Sasa Bojanic <[email protected]> wrote: >>>>> Me again :-) >>>>> >>>>> Just a question...have you changed to XMLC related to Server Side >>>>> Includes from HTML? >>>>> >>>>> The situation is the following: >>>>> >>>>> HTML file (processed by XMLC) includes another HTML file via >>>>> relative path: >>>>> >>>>> <!--#include virtual="../media/TopBanner.ssi"--> >>>>> >>>>> When XMLC parses HTML file, I get the following exception (when >>>>> all the resources are in the JAR file): >>>>> >>>>> java.io.FileNotFoundException: JAR entry >>>>> com/lutris/airsent/presentation/customer/../media/TopBanner.ssi >>>>> not found in >>>>> D:\apache-tomcat-6.0.29\webapps\airSent\WEB-INF\lib\airSent.jar >>>>> at >>>>> sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122) >>>>> at >>>>> sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:132) >>>>> at >>>>> org.enhydra.xml.io.InputSourceOps.openSystemId(InputSourceOps.java:65) >>>>> >>>>> at >>>>> org.enhydra.xml.io.InputSourceOps.open(InputSourceOps.java:85) >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIParsedStream.readIntoBuffer(SSIParsedStream.java:198) >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIParsedStream.<init>(SSIParsedStream.java:159) >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIReader.openSSIInclude(SSIReader.java:153) >>>>> >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIReader.processSSIInclude(SSIReader.java:169) >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIReader.processSSIDirective(SSIReader.java:179) >>>>> at >>>>> org.enhydra.xml.xmlc.misc.SSIReader.read(SSIReader.java:228) >>>>> at >>>>> org.cyberneko.html.HTMLScanner$CurrentEntity.load(HTMLScanner.java:1772) >>>>> >>>>> at >>>>> org.cyberneko.html.HTMLScanner.skipNewlines(HTMLScanner.java:1522) >>>>> at >>>>> org.cyberneko.html.HTMLScanner$ContentScanner.scanCharacters(HTMLScanner.java:2227) >>>>> at >>>>> org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:1964) >>>>> at >>>>> org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:895) >>>>> at >>>>> org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499) >>>>> >>>>> at >>>>> org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452) >>>>> >>>>> at org.apache.xerces.parsers.XMLParser.parse(Unknown >>>>> Source) >>>>> at org.apache.xerces.parsers.DOMParser.parse(Unknown >>>>> Source) >>>>> at >>>>> org.enhydra.xml.xmlc.parsers.xerces.XercesDOMParser.parse(XercesDOMParser.java:113) >>>>> at >>>>> org.enhydra.xml.xmlc.parsers.xerces.XercesHTMLDOMParser.parse(XercesHTMLDOMParser.java:64) >>>>> at >>>>> org.enhydra.xml.xmlc.compiler.Parse.parse(Parse.java:291) >>>>> at >>>>> org.enhydra.xml.xmlc.deferredparsing.DocumentLoaderImpl.parseDocument(DocumentLoaderImpl.java:405) >>>>> at >>>>> org.enhydra.xml.xmlc.deferredparsing.DocumentLoaderImpl.getCacheEntry(DocumentLoaderImpl.java:175) >>>>> at >>>>> org.enhydra.xml.xmlc.deferredparsing.DocumentLoaderImpl.getDocument(DocumentLoaderImpl.java:247) >>>>> at >>>>> com.lutris.airsent.presentation.customer.LoginHTML.buildDocument(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.airsent.presentation.customer.LoginHTML.<init>(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.airsent.presentation.customer.LoginHTML.<init>(Unknown >>>>> Source) >>>>> at >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) >>>>> at >>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) >>>>> at >>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) >>>>> at >>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:513) >>>>> at >>>>> org.enhydra.xml.xmlc.deferredparsing.XMLCDeferredParsingFactory.createObject(XMLCDeferredParsingFactory.java:160) >>>>> at >>>>> org.enhydra.xml.xmlc.deferredparsing.XMLCDeferredParsingFactory.doCreate(XMLCDeferredParsingFactory.java:185) >>>>> at >>>>> org.enhydra.xml.xmlc.XMLCStdFactory.create(XMLCStdFactory.java:139) >>>>> at >>>>> com.lutris.airsent.presentation.customer.Login.showPage(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.airsent.presentation.customer.Login.handleDefault(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.airsent.presentation.BasePO.handleEvent(Unknown Source) >>>>> at com.lutris.airsent.presentation.BasePO.run(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.appserver.server.httpPresentation.HttpPresentationManager.runPresentationObj(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.appserver.server.httpPresentation.HttpPresentationManager.Run(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.serviceDirect(Unknown >>>>> Source) >>>>> at >>>>> com.lutris.appserver.server.httpPresentation.servlet.HttpPresentationServlet.service(Unknown >>>>> Source) >>>>> at >>>>> javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) >>>>> at >>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>>>> at >>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) >>>>> at >>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) >>>>> at >>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) >>>>> at >>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) >>>>> at >>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >>>>> at >>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) >>>>> at >>>>> org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861) >>>>> at >>>>> org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) >>>>> at >>>>> org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584) >>>>> >>>>> at java.lang.Thread.run(Thread.java:662) >>>>> org.enhydra.xml.xmlc.XMLCError: Couldn't load XMLC class >>>>> >>>>> >>>>> Just to mention, like always with XMLC2.3-1 it worked...maybe >>>>> because our "magical" classloader...but can't be sure. >>>>> >>>>> Greetings, >>>>> Sasa. >>>> >>> >> > ------------=_1301605492-30467-16294 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 ------------=_1301605492-30467-16294--