[xmlc] Re: Re: Re: Re: SSI and XMLC
Sasa Bojanic <[email protected]> Thu, 31 Mar 2011 21:53:47 +0200
| Newsgroups | gmane.comp.java.enhydra.xmlc |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format... ------------=_1301601238-30467-16293 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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. >>> >> > ------------=_1301601238-30467-16293 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 ------------=_1301601238-30467-16293--