- From: Yves Lafon <ylafon@w3.org>
- Date: Fri, 1 Aug 2008 08:58:39 -0400 (EDT)
- To: Henri Sivonen <hsivonen@iki.fi>
- Cc: olivier Thereaux <ot@w3.org>, public-qa-dev@w3.org
On Fri, 1 Aug 2008, Henri Sivonen wrote: > On Jul 31, 2008, at 14:54, Yves Lafon wrote: > >> On Thu, 31 Jul 2008, Henri Sivonen wrote: >> >>> >>> On Jul 31, 2008, at 00:29, olivier Thereaux wrote: >>> >>>> not solved as far as I know. Yves seems to think it's not a big problem - >>>> which is great -. All I can say is that I've unfortunately been too busy >>>> to work on it but still think this should happen. If you and Yves can >>>> work together on it that would be perfect. >>> >>> >>> OK. I'll put some cycles into this. >>> >>> (All the servlet [features] that the Validator.nu controller uses are >>> *very* old, except for the part that requests incoming query strings to be >>> decoded as UTF-8. I guess I'll find out soon enough if that feature is in >>> the version of servlets supported by Jigsaw.) >> >> I have to look at the code, but remember doing something for this kind of >> issue, anyway, we need to check that (and patch if needed :) ) > > Indeed, Jigsaw is missing the setCharacterEncoding() method on > HttpServletRequest objects. I made the servlet catch > java.lang.NoSuchMethodError there, so if the servlet is compiled under a more > current servlet API, it runs without crashing (but without non-ASCII query > string support) under a vintage servlet API. (Jigsaw also lacks > getRequestURL(), but having that method wasn't critical, so I removed the > call.) Ok, I will add those methods, just need to find at which level of the servlet spec it belongs. > The other thing in the servlet that I needed to modify was treating a null > return value from getPathInfo() as if the return value had been "/". (With > longer paths, Jigsaw seems to swallow the trailing slash.) Hum, that look like a bug, I'll fix that. > With these changes, the Validator.nu servlet can run inside Jigsaw. However, > some of the functionality of Validator.nu is implemented as servlet filters > (gzip in, gzip out, file upload, textarea input). These features don't work > under Jigsaw. (At least it seems to me that Jigsaw doesn't implement servlet > filters.) I have not modified the UI of Validator.nu to hide references to > these features when they aren't present. Jigsaw already has its filters (for example, the CSS validator uses a TE/Transfer-Encoding filter on the way out, which is not a servlet filter but a Jigsaw one, used in the whole /css-validator/ subspace.) > There's an additional problem that is significant considering use as a > Unicorn back end: When the method is POST, Jigsaw does not provide request > URI query string parameters via the getParameter() method on > HttpServletRequest. This means that the output format cannot be selected. (In > Jetty, getParameter() returns request URI parameters when POSTing a non-form > entity body.) IIRC, Jigsaw adds the two sets of parameters (from the decoded POST if it applies + the URI ones), but it may be an issue if the content is an uploaded file, for example. > Here's what is needed to get up and running from a clean installation of > Jigsaw (using Java 5 or later): > 1) Create a directory for Validator.nu. > 2) cd into that directory. > 3) Run svn co http://svn.versiondude.net/whattf/build/trunk/ build > 4) Run python build/build.py dldeps > 5) Run python build/build.py build > 6) cd to the Jigsaw directory. > 7) Replace scripts/jigsaw.sh with the modified script attached to this email. > This script adds the jars needed by Validator.nu to the classpath and sets > some system properties for configuring Validator.nu. It replaces legacy SAX > and Xerces with current versions. (The favicon, script and style URLs point > to about.validator.nu, but can be changes here.) > 8) Edit the variable VALIDATOR_NU_HOME in the script to point to the > directory you created in step #1. > 9) Add line > org.w3c.jigsaw.startup=org.w3c.jigsaw.servlet.ServletPropertiesReader to > Jigsaw/config/http-server.props > 10) Run sh scripts/jigsaw.sh > 11) From another shell, run scripts/jigadmin.sh and connect to the Jigsaw > instance. > 12) In jigadmin, add a ServletWrapperFrame resource under /servlet with the > identifier validator-nu and the class nu.validator.servlet.VerifierServlet. > 13) Restart Jigsaw. > > The generic facet of Validator.nu is now at > http://localhost:8001/servlet/validator-nu/. The HTML5 facet is at > http://localhost:8001/servlet/validator-nu/html5/. (The parsetree viewer > should be at http://localhost:8001/servlet/validator-nu/parsetree/, but it > doesn't appear to work.) > > When the servlet loads, log4j complains to System.err that it hasn't been > initialized. I don't know what the best practice for initializing log4j under > Jigsaw is. There is way to initialize a servlet at startup, I never used log4j but that should be the best bet. -- Baroula que barouleras, au tiéu toujou t'entourneras. ~~Yves
Received on Friday, 1 August 2008 12:59:15 UTC