- DefaultServlet: remove static gzip option

YaCy doesn't use pre-gzip'ed static html pages 
- ProxyServlet: remove not neede procedure
- Server init: skip one overlaping servlet context
pull/1/head
reger 12 years ago
parent 1a6158e338
commit b26787dc2d

@ -72,13 +72,6 @@ public class Jetty8HttpServerImpl implements YaCyHttpServer {
YacyDomainHandler domainHandler = new YacyDomainHandler(); YacyDomainHandler domainHandler = new YacyDomainHandler();
domainHandler.setAlternativeResolver(sb.peers); domainHandler.setAlternativeResolver(sb.peers);
/* this is now handled by YaCyDefaultServlet
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[]{"index.html"});
resource_handler.setResourceBase("htroot/");
*/
//add SolrServlet //add SolrServlet
ServletContextHandler solrContext = new ServletContextHandler(ServletContextHandler.SESSIONS); ServletContextHandler solrContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
solrContext.setContextPath("/solr"); solrContext.setContextPath("/solr");
@ -93,7 +86,6 @@ public class Jetty8HttpServerImpl implements YaCyHttpServer {
ServletHolder sholder = new ServletHolder(Jetty8YaCyDefaultServlet.class); ServletHolder sholder = new ServletHolder(Jetty8YaCyDefaultServlet.class);
sholder.setInitParameter("resourceBase", "htroot"); sholder.setInitParameter("resourceBase", "htroot");
//sholder.setInitParameter("welcomeFile", "index.html"); // default is index.html, welcome.html //sholder.setInitParameter("welcomeFile", "index.html"); // default is index.html, welcome.html
sholder.setInitParameter("gzip","false");
htrootContext.addServlet(sholder,"/*"); htrootContext.addServlet(sholder,"/*");
// add proxy?url= servlet // add proxy?url= servlet
@ -104,15 +96,10 @@ public class Jetty8HttpServerImpl implements YaCyHttpServer {
ServletHolder gsaholder = new ServletHolder (GSAsearchServlet.class); ServletHolder gsaholder = new ServletHolder (GSAsearchServlet.class);
htrootContext.addServlet(gsaholder,"/gsa/search"); htrootContext.addServlet(gsaholder,"/gsa/search");
// assemble the servlet handlers
ContextHandlerCollection servletContext = new ContextHandlerCollection();
servletContext.setHandlers(new Handler[] { solrContext, htrootContext });
// define list of YaCy specific general handlers // define list of YaCy specific general handlers
HandlerList handlers = new HandlerList(); HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] handlers.setHandlers(new Handler[]
{domainHandler, new ProxyCacheHandler(), new ProxyHandler() {domainHandler, new ProxyCacheHandler(), new ProxyHandler()});
/*, resource_handler, new DefaultHandler() */});
// context handler for dispatcher and security (hint: dispatcher requires a context) // context handler for dispatcher and security (hint: dispatcher requires a context)
ContextHandler context = new ContextHandler(); ContextHandler context = new ContextHandler();
@ -123,7 +110,8 @@ public class Jetty8HttpServerImpl implements YaCyHttpServer {
// logic: 1. YaCy handlers are called if request not handled (e.g. proxy) then servlets handle it // logic: 1. YaCy handlers are called if request not handled (e.g. proxy) then servlets handle it
ContextHandlerCollection allrequesthandlers = new ContextHandlerCollection(); ContextHandlerCollection allrequesthandlers = new ContextHandlerCollection();
allrequesthandlers.addHandler(context); allrequesthandlers.addHandler(context);
allrequesthandlers.addHandler(servletContext); allrequesthandlers.addHandler(solrContext);
allrequesthandlers.addHandler(htrootContext);
allrequesthandlers.addHandler(new DefaultHandler()); // if not handled by other handler allrequesthandlers.addHandler(new DefaultHandler()); // if not handled by other handler
// wrap all handlers by security handler // wrap all handlers by security handler

@ -39,7 +39,6 @@ import net.yacy.cora.util.ConcurrentLog;
import net.yacy.kelondro.util.FileUtils; import net.yacy.kelondro.util.FileUtils;
import org.eclipse.jetty.http.HttpContent; import org.eclipse.jetty.http.HttpContent;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.http.HttpHeaders; import org.eclipse.jetty.http.HttpHeaders;
import org.eclipse.jetty.http.HttpMethods; import org.eclipse.jetty.http.HttpMethods;
import org.eclipse.jetty.io.Buffer; import org.eclipse.jetty.io.Buffer;
@ -77,9 +76,6 @@ import org.eclipse.jetty.util.resource.ResourceFactory;
* *
* welcomeFile name of the welcome file (default is "index.html", "welcome.html") * 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 * resourceBase Set to replace the context resource base
* *
@ -108,8 +104,8 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso
@Override @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
String servletPath = null; String servletPath;
String pathInfo = null; String pathInfo;
Enumeration<String> reqRanges = null; Enumeration<String> reqRanges = null;
boolean included = request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI) != null; boolean included = request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI) != null;
if (included) { if (included) {
@ -138,29 +134,8 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso
Resource resource = null; Resource resource = null;
HttpContent content = null; HttpContent content = null;
try { try {
// is gzip enabled?
String pathInContextGz = null;
boolean gzip = false;
if (!included && _gzip && reqRanges == null && !endsWithSlash) {
// Look for a gzip resource
pathInContextGz = pathInContext + ".gz";
resource = getResource(pathInContextGz);
// 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, HeaderFramework.ACCEPT_ENCODING);
// Does the client accept gzip?
String accept = request.getHeader(HeaderFramework.ACCEPT_ENCODING);
if (accept != null && accept.indexOf(HeaderFramework.CONTENT_ENCODING_GZIP) >= 0) {
gzip = true;
}
}
}
// find resource // find resource
if (!gzip) resource = getResource(pathInContext); resource = getResource(pathInContext);
// Look for a class resource // Look for a class resource
boolean hasClass = false; boolean hasClass = false;
@ -204,13 +179,6 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso
handleTemplate(pathInfo, request, response); handleTemplate(pathInfo, request, response);
} else { } else {
if (included || passConditionalHeaders(request, response, resource, content)) { if (included || passConditionalHeaders(request, response, resource, content)) {
if (gzip) {
response.setHeader(HeaderFramework.CONTENT_ENCODING, HeaderFramework.CONTENT_ENCODING_GZIP);
String mt = _servletContext.getMimeType(pathInContext);
if (mt != null) {
response.setContentType(mt);
}
}
sendData(request, response, included, resource, content, reqRanges); sendData(request, response, included, resource, content, reqRanges);
} }
} }
@ -412,9 +380,8 @@ public class Jetty8YaCyDefaultServlet extends YaCyDefaultServlet implements Reso
content_length = content.getContentLength(); content_length = content.getContentLength();
} }
// Get the output stream (or writer) // Get the output stream (or writer)
OutputStream out = null; OutputStream out;
boolean written; boolean written;
try { try {
out = response.getOutputStream(); out = response.getOutputStream();

@ -127,7 +127,7 @@ public abstract class YaCyDefaultServlet extends HttpServlet {
protected boolean _dirAllowed = true; protected boolean _dirAllowed = true;
protected boolean _pathInfoOnly = false; protected boolean _pathInfoOnly = false;
protected boolean _etags = false; protected boolean _etags = false;
protected boolean _gzip = true; // protected boolean _gzip = true;
protected Resource _resourceBase; protected Resource _resourceBase;
protected MimeTypes _mimeTypes; protected MimeTypes _mimeTypes;
protected String[] _welcomes; protected String[] _welcomes;
@ -176,7 +176,7 @@ public abstract class YaCyDefaultServlet extends HttpServlet {
} }
_etags = getInitBoolean("etags", _etags); _etags = getInitBoolean("etags", _etags);
_gzip=getInitBoolean("gzip",_gzip); // _gzip=getInitBoolean("gzip",_gzip);
if (ConcurrentLog.isFine("FILEHANDLER")) { if (ConcurrentLog.isFine("FILEHANDLER")) {
ConcurrentLog.fine("FILEHANDLER","YaCyDefaultServlet: resource base = " + _resourceBase); ConcurrentLog.fine("FILEHANDLER","YaCyDefaultServlet: resource base = " + _resourceBase);

@ -191,16 +191,15 @@ public class YaCyProxyServlet extends ProxyServlet implements Servlet {
final Pattern p = Pattern.compile("(href=\"|src=\")([^\"]+)|(href='|src=')([^']+)|(url\\(')([^']+)|(url\\(\")([^\"]+)|(url\\()([^\\)]+)"); final Pattern p = Pattern.compile("(href=\"|src=\")([^\"]+)|(href='|src=')([^']+)|(url\\(')([^']+)|(url\\(\")([^\"]+)|(url\\()([^\\)]+)");
final Matcher m = p.matcher(sbuffer); final Matcher m = p.matcher(sbuffer);
final StringBuffer result = new StringBuffer(80); final StringBuffer result = new StringBuffer(80);
String init, url;
Switchboard sb = Switchboard.getSwitchboard(); Switchboard sb = Switchboard.getSwitchboard();
while (m.find()) { while (m.find()) {
init = null; String init = null;
if (m.group(1) != null) { init = m.group(1); } if (m.group(1) != null) { init = m.group(1); }
if (m.group(3) != null) { init = m.group(3); } if (m.group(3) != null) { init = m.group(3); }
if (m.group(5) != null) { init = m.group(5); } if (m.group(5) != null) { init = m.group(5); }
if (m.group(7) != null) { init = m.group(7); } if (m.group(7) != null) { init = m.group(7); }
if (m.group(9) != null) { init = m.group(9); } if (m.group(9) != null) { init = m.group(9); }
url = null; String url = null;
if (m.group(2) != null) { url = m.group(2); } if (m.group(2) != null) { url = m.group(2); }
if (m.group(4) != null) { url = m.group(4); } if (m.group(4) != null) { url = m.group(4); }
if (m.group(6) != null) { url = m.group(6); } if (m.group(6) != null) { url = m.group(6); }
@ -314,40 +313,16 @@ public class YaCyProxyServlet extends ProxyServlet implements Servlet {
/** /**
* get a destination url from a querysting with parameter &url=_destinationurl_ * get destination url (from query parameter &url=http://....)
* override to prevent calculating destination url from request
* *
* @param querystring * @param request
* @return destinationURL * @param uri not used
* @return destination url from query parameter &url=_destinationurl_
* @throws MalformedURLException * @throws MalformedURLException
*/ */
protected HttpURI proxyHttpURIfromQueryString(String querystring) throws MalformedURLException {
URL newurl = null;
String strARGS = querystring;
String action;
if (strARGS.startsWith("action=")) {
int detectnextargument = strARGS.indexOf("&");
action = strARGS.substring(7, detectnextargument);
strARGS = strARGS.substring(detectnextargument + 1);
}
if (strARGS.startsWith("url=")) {
final String strUrl = strARGS.substring(4); // strip url=
try {
newurl = new URL(strUrl);
} catch (final MalformedURLException e) {
}
}
int port = newurl.getPort();
if (port < 1) {
port = newurl.getDefaultPort();
}
return proxyHttpURI(newurl.getProtocol(), newurl.getHost(), port, newurl.getPath());
}
@Override @Override
protected HttpURI proxyHttpURI(HttpServletRequest request, String uri) throws MalformedURLException { protected HttpURI proxyHttpURI(HttpServletRequest request, String uri) throws MalformedURLException {
URL newurl = null;
String strARGS = request.getQueryString(); String strARGS = request.getQueryString();
if (strARGS.startsWith("action=")) { if (strARGS.startsWith("action=")) {
int detectnextargument = strARGS.indexOf("&"); int detectnextargument = strARGS.indexOf("&");
@ -357,16 +332,17 @@ public class YaCyProxyServlet extends ProxyServlet implements Servlet {
final String strUrl = strARGS.substring(4); // strip url= final String strUrl = strARGS.substring(4); // strip url=
try { try {
newurl = new URL(strUrl); URL newurl = new URL(strUrl);
} catch (final MalformedURLException e) {
}
}
int port = newurl.getPort(); int port = newurl.getPort();
if (port < 1) { if (port < 1) {
port = newurl.getDefaultPort(); port = newurl.getDefaultPort();
} }
return proxyHttpURI(newurl.getProtocol(), newurl.getHost(), port, newurl.getPath()); return proxyHttpURI(newurl.getProtocol(), newurl.getHost(), port, newurl.getPath());
} catch (final MalformedURLException e) {
ConcurrentLog.fine("PROXY", "url parameter missing");
}
}
return null;
} }
@Override @Override

Loading…
Cancel
Save