From eea504c1170e1e361c6233cd03057b7ed0b3277e Mon Sep 17 00:00:00 2001 From: reger Date: Sat, 12 Oct 2013 23:01:14 +0200 Subject: [PATCH] update Info.plist small DefaultServlet refactoring --- addon/YaCy.app/Contents/Info.plist | 15 ++-- htroot/Connections_p.java | 10 +-- .../yacy/http/Jetty8YaCyDefaultServlet.java | 82 +------------------ source/net/yacy/http/YaCyDefaultServlet.java | 16 ++-- 4 files changed, 28 insertions(+), 95 deletions(-) diff --git a/addon/YaCy.app/Contents/Info.plist b/addon/YaCy.app/Contents/Info.plist index 2b4672b53..5f97481a9 100644 --- a/addon/YaCy.app/Contents/Info.plist +++ b/addon/YaCy.app/Contents/Info.plist @@ -37,13 +37,14 @@ ClassPath $JAVAROOT/htroot - $JAVAROOT/lib/jetty-http-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-io-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-security-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-server-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-servlet-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-servlets-9.0.5.v20130815.jar - $JAVAROOT/lib/jetty-util-9.0.5.v20130815.jar + $JAVAROOT/lib/jetty-continuation-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-http-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-io-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-security-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-server-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-servlet-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-servlets-8.1.13.v20130916.jar + $JAVAROOT/lib/jetty-util-8.1.13.v20130916.jar $JAVAROOT/lib/javax.servlet-3.0.0.v201112011016.jar $JAVAROOT/lib/activation.jar $JAVAROOT/lib/apache-mime4j-0.6.jar diff --git a/htroot/Connections_p.java b/htroot/Connections_p.java index 01b1b3a30..13c1353c9 100644 --- a/htroot/Connections_p.java +++ b/htroot/Connections_p.java @@ -38,7 +38,7 @@ import java.util.Set; import net.yacy.cora.protocol.ConnectionInfo; import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.util.ConcurrentLog; -import net.yacy.kelondro.workflow.WorkflowThread; +import net.yacy.http.YaCyHttpServer; import net.yacy.peers.PeerActions; import net.yacy.peers.Seed; import net.yacy.search.Switchboard; @@ -56,8 +56,8 @@ public final class Connections_p { // server sessions // get the serverCore thread - //final WorkflowThread httpd = sb.getThread("10_httpd"); //not working with Jetty - + final YaCyHttpServer httpd = sb.getHttpServer(); + // determines if name lookup should be done or not final boolean doNameLookup; if (post != null) { @@ -138,8 +138,8 @@ public final class Connections_p { } prop.put("list", idx); - prop.putNum("numMax", -1/* ((serverCore)httpd).getMaxSessionCount()*/); //TODO: get limit from Jetty - prop.putNum("numActiveRunning", numActiveRunning); + prop.putNum("numMax", httpd.getMaxSessionCount()); + prop.putNum("numActiveRunning", httpd.getJobCount()); prop.putNum("numActivePending", numActivePending); // client sessions diff --git a/source/net/yacy/http/Jetty8YaCyDefaultServlet.java b/source/net/yacy/http/Jetty8YaCyDefaultServlet.java index 4a3ebc5b7..dd2fff882 100644 --- a/source/net/yacy/http/Jetty8YaCyDefaultServlet.java +++ b/source/net/yacy/http/Jetty8YaCyDefaultServlet.java @@ -27,7 +27,6 @@ import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; -import javax.servlet.UnavailableException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.yacy.cora.protocol.HeaderFramework; @@ -36,7 +35,6 @@ import net.yacy.kelondro.util.FileUtils; import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeaderValues; import org.eclipse.jetty.http.HttpHeaders; import org.eclipse.jetty.http.HttpMethods; import org.eclipse.jetty.io.Buffer; @@ -96,58 +94,11 @@ import org.eclipse.jetty.util.resource.ResourceFactory; * * * - * - * - * */ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements ResourceFactory { private static final long serialVersionUID = 4900000000000001110L; - private boolean _gzip = true; - - /* ------------------------------------------------------------ */ - @Override - public void init() throws UnavailableException { - super.init(); - - _gzip=getInitBoolean("gzip",_gzip); - - } - - /* ------------------------------------------------------------ */ - /** - * get Resource to serve. Map a path to a resource. The default - * implementation calls HttpContext.getResource but derived servlets may - * provide their own mapping. - * - * @param pathInContext The path to find a resource for. - * @return The resource to serve. - */ - @Override - public Resource getResource(String pathInContext) { - Resource r = null; - if (_relativeResourceBase != null) { - pathInContext = URIUtil.addPaths(_relativeResourceBase, pathInContext); - } - - try { - if (_resourceBase != null) { - r = _resourceBase.addPath(pathInContext); - } else { - URL u = _servletContext.getResource(pathInContext); - r = Resource.newResource(u); - } - - if (ConcurrentLog.isFine("YaCyDefaultServlet")) { - ConcurrentLog.fine("YaCyDefaultServlet","Resource " + pathInContext + "=" + r); - } - } catch (IOException e) { - // ConcurrentLog.logException(e); - } - - return r; - } /* ------------------------------------------------------------ */ @Override @@ -195,11 +146,11 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso // Does a gzip resource exist? if (resource != null && resource.exists() && !resource.isDirectory()) { // Tell caches that response may vary by accept-encoding - response.addHeader(HttpHeaders.VARY, HttpHeaders.ACCEPT_ENCODING); + response.addHeader(HttpHeaders.VARY, HeaderFramework.ACCEPT_ENCODING); // Does the client accept gzip? - String accept = request.getHeader(HttpHeaders.ACCEPT_ENCODING); - if (accept != null && accept.indexOf("gzip") >= 0) { + String accept = request.getHeader(HeaderFramework.ACCEPT_ENCODING); + if (accept != null && accept.indexOf(HeaderFramework.CONTENT_ENCODING_GZIP) >= 0) { gzip = true; } } @@ -251,7 +202,7 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso } else { if (included.booleanValue() || passConditionalHeaders(request, response, resource, content)) { if (gzip) { - response.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip"); + response.setHeader(HeaderFramework.CONTENT_ENCODING, HeaderFramework.CONTENT_ENCODING_GZIP); String mt = _servletContext.getMimeType(pathInContext); if (mt != null) { response.setContentType(mt); @@ -318,12 +269,6 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso } } - /* ------------------------------------------------------------ */ - @Override - protected boolean hasDefinedRange(Enumeration reqRanges) { - return (reqRanges != null && reqRanges.hasMoreElements()); - } - /* ------------------------------------------------------------ */ /* Check modification date headers. */ @@ -670,23 +615,4 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso } } } - - /* ------------------------------------------------------------ */ - @Override - protected void writeOptionHeaders(HttpFields fields) { - if (_acceptRanges) { - fields.put(HttpHeaders.ACCEPT_RANGES_BUFFER, HttpHeaderValues.BYTES_BUFFER); - } - - } - - /* ------------------------------------------------------------ */ - /* - * @see javax.servlet.Servlet#destroy() - */ - @Override - public void destroy() { - - super.destroy(); - } } diff --git a/source/net/yacy/http/YaCyDefaultServlet.java b/source/net/yacy/http/YaCyDefaultServlet.java index 6858b94ee..fa9a665cb 100644 --- a/source/net/yacy/http/YaCyDefaultServlet.java +++ b/source/net/yacy/http/YaCyDefaultServlet.java @@ -98,6 +98,10 @@ import org.eclipse.jetty.util.resource.ResourceFactory; * * welcomeFile name of the welcome file (default is "index.html", "welcome.html") * + * gzip If set to true, then static content will be served as + * gzip content encoded if a matching resource is + * found ending with ".gz" + * * resourceBase Set to replace the context resource base * * resourceCache If set, this is a context attribute name, which the servlet @@ -123,6 +127,7 @@ public abstract class YaCyDefaultServlet extends HttpServlet implements Resource protected boolean _dirAllowed = true; protected boolean _pathInfoOnly = false; protected boolean _etags = false; + protected boolean _gzip = true; protected Resource _resourceBase; protected MimeTypes _mimeTypes; protected String[] _welcomes; @@ -168,7 +173,8 @@ public abstract class YaCyDefaultServlet extends HttpServlet implements Resource } _etags = getInitBoolean("etags", _etags); - + _gzip=getInitBoolean("gzip",_gzip); + if (ConcurrentLog.isFine("YaCyDefaultServlet")) { ConcurrentLog.fine("YaCyDefaultServlet","resource base = " + _resourceBase); } @@ -331,7 +337,7 @@ public abstract class YaCyDefaultServlet extends HttpServlet implements Resource String welcomeFileName = getWelcomeFile (pathInContext); if (welcomeFileName != null) { RequestDispatcher rd = request.getRequestDispatcher(welcomeFileName); - rd.forward(request, response); + if (rd != null) rd.forward(request, response); } else { // send directory listing content = new HttpContent.ResourceAsHttpContent(resource, _mimeTypes.getMimeByExtension(resource.toString()), _etags); if (included.booleanValue() || passConditionalHeaders(request, response, resource, content)) { @@ -554,10 +560,10 @@ public abstract class YaCyDefaultServlet extends HttpServlet implements Resource templateMethodCache.put(classFile, new SoftReference(m)); } catch (final ClassNotFoundException e) { - ConcurrentLog.severe("TemplateHandler", "class " + classFile + " is missing:" + e.getMessage()); + ConcurrentLog.severe("YaCyDefaultServlet", "class " + classFile + " is missing:" + e.getMessage()); throw new InvocationTargetException(e, "class " + classFile + " is missing:" + e.getMessage()); } catch (final NoSuchMethodException e) { - ConcurrentLog.severe("TemplateHandler", "method 'respond' not found in class " + classFile + ": " + e.getMessage()); + ConcurrentLog.severe("YaCyDefaultServlet", "method 'respond' not found in class " + classFile + ": " + e.getMessage()); throw new InvocationTargetException(e, "method 'respond' not found in class " + classFile + ": " + e.getMessage()); } return m; @@ -737,7 +743,7 @@ public abstract class YaCyDefaultServlet extends HttpServlet implements Resource if (q > 0) { final String path = in.toString(off + 22, q - off - 22); try { - RequestDispatcher dispatcher = request.getRequestDispatcher("/" + path); + RequestDispatcher dispatcher = request.getRequestDispatcher(path); dispatcher.include(request, response); response.flushBuffer(); } catch (Exception e) {