Dear all,
I am using JETTY 9.2.24 Embedded with various handlers and tried multiple
options to enable GZIP compression.
Can anybody help out in setting up GZIP ?Any feedback is appreciated since the
code below comes from Jetty 6 upgraded to 9.0.x and then latest distribution
The clients accepts the compression but the server does not provided it
Kind Regards,
Daniel
import org.eclipse.jetty.deploy.App;
import org.eclipse.jetty.deploy.DeploymentManager;
import org.eclipse.jetty.deploy.providers.WebAppProvider;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.webapp.WebAppContext;
import javax.servlet.ServletContext;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
public class TestServer {
private static Server mServer = null;
public static final String AUTH_DIR = "auth/";
public static final String WEBAPPS_DIR = "webapps/";
/**
* Starts the server
*/
public static void main(String[] args) {
new TestServer(args);
}
/**
*
* @param args the command line options
*/
public TestServer(String[] args) {
try {
startWebServer();
} catch (Exception e) {
System.exit(-1);
}
}
/**
* Starts the web server
*/
private void startWebServer() throws Exception {
// start the web server
mServer = new Server();
String mWapPath = "C:\\WAP";
// Make all WebContexts use the LST folder
File mLST = new File("c:\\LST"+ File.separator + "jetty");
if (!mLST.exists()) {
try {
mLST.mkdir();
}
catch(SecurityException ignored){
}
}
int mPort =8080;
int mSecurePort = 8443;
int mRequestHeaderSize = 32768;
if (mSecurePort <= 0) {
throw new IllegalArgumentException("Port number for HTTPS connector is
mandatory");
}
HttpConfiguration http_config = null;
if (mPort > 0) {
// HTTP Configuration
http_config = new HttpConfiguration();
http_config.setSecureScheme("https");
http_config.setSecurePort(mSecurePort);
http_config.setOutputBufferSize(32768);
http_config.setRequestHeaderSize(mRequestHeaderSize);
// HTTP connector
ServerConnector http = new ServerConnector(mServer, new
HttpConnectionFactory(http_config));
http.setPort(mPort);
http.setIdleTimeout(30000);
mServer.addConnector(http);
}
// SSL Context Factory for HTTPS (and SPDY)
String mKeyStorePath = "mypath";
SslContextFactory sslContextFactory = new SslContextFactory.Server();
sslContextFactory.setKeyStorePath(mKeyStorePath);
sslContextFactory.setKeyStorePassword("password");
sslContextFactory.setKeyManagerPassword("password");
// HTTPS Configuration
HttpConfiguration https_config = (http_config == null ? new
HttpConfiguration() : new HttpConfiguration(http_config));
https_config.setRequestHeaderSize(mRequestHeaderSize);
https_config.setOutputBufferSize(32768);
https_config.addCustomizer(new SecureRequestCustomizer());
// HTTPS connector
ServerConnector https = new ServerConnector(mServer,
new SslConnectionFactory(sslContextFactory, "http/1.1"),
new HttpConnectionFactory(https_config));
https.setPort(mSecurePort);
https.setIdleTimeout(500000);
mServer.addConnector(https);
WebAppContext mWapContext = new WebAppContext();
mWapContext.setAttribute(ServletContext.TEMPDIR, mLST);
mWapContext.setContextPath("/");
mWapContext.setDisplayName("[Server]");
mWapContext.setConfigurationClasses(new
String[]{"org.eclipse.jetty.annotations.AnnotationConfiguration","org.eclipse.jetty.webapp.WebXmlConfiguration"});
mWapContext.setLogUrlOnStart(true);
try {
mWapContext.setBaseResource(Resource.newResource(mWapPath));
} catch (IOException ignored) {
}
// Setup handlers
HandlerCollection mRootHandlers = new HandlerCollection();
// Handling Context(s)
ContextHandlerCollection mAppCtxHndCol = new ContextHandlerCollection();
mAppCtxHndCol.setHandlers(new Handler[]{ mWapContext });
mRootHandlers.addHandler(mAppCtxHndCol);
// Install WebApp Provider
String mWebAppDir = mWapPath + WEBAPPS_DIR;
WebAppProvider mAppProvider = new WebAppProvider(){
@Override
protected App createApp(String filename){
return super.createApp(filename);
}
};
mAppProvider.setMonitoredDirName(mWebAppDir);
/* The default descriptor is a web.xml format file that is applied to the
context
* before the standard WEB-INF/web.xml. Defaults to
WebAppContext.WEB_DEFAULTS_XML */
mAppProvider.setDefaultsDescriptor(null);
/* == Enable annotation processing. Servlet 3.0 API ==
*
* The 'web-app' element in the web.xml must contain
* the attribute: metadata-complete="false"
* So that the .war will be scanned for @ annotations for dependancy
injection
*/
/* ScanInterval pause between scans in seconds, or 0 for no scan after the
initial scan.*/
mAppProvider.setScanInterval(0);
/* For debug/testing */
mAppProvider.setExtractWars(true);
/* Classloader to use parent classes first, instead of bundeled ones.
non-default.. */
// mAppProvider.setParentLoaderPriority(true);
/* Setup Deployment manager */
DeploymentManager mDeployMgr = new DeploymentManager();
mDeployMgr.addAppProvider(mAppProvider);
mDeployMgr.setContextAttribute(ServletContext.TEMPDIR, mLST);
mDeployMgr.setContexts(mAppCtxHndCol);
// Set Classloader of Context to be sane (needed for JSTL)
// JSP requires a non-System classloader, this simply wraps the
// embedded System classloader in a way that makes it suitable
// for JSP to use
ClassLoader jspClassLoader = new URLClassLoader(new URL[0],
this.getClass().getClassLoader());
mWapContext.setClassLoader(jspClassLoader);
// Manually call JettyJasperInitializer on context startup
mWapContext.addBean(new JspStarter(mWapContext));
/* Setup & Run server */
mServer.addBean(mDeployMgr);
mServer.setHandler(mRootHandlers);
try {
mServer.start();
mServer.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://www.eclipse.org/mailman/listinfo/jetty-users