Changeset b0c3c11


Ignore:
Timestamp:
Aug 9, 2015 1:36:24 PM (5 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
994b51b
Parents:
fde0ae8
Message:

Start work on Jetty 9
targetting 9.2.x for now
Requires Java 7

Location:
apps
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • apps/jetty/build.xml

    rfde0ae8 rb0c3c11  
    22<project basedir="." default="all" name="jetty">
    33
    4     <property name="jetty.ver" value="8.1.17.v20150415" />
     4    <!-- unused until we go to 9.3 -->
     5    <property name="jetty.branch" value="stable-9" />
     6    <property name="jetty.ver" value="9.2.13.v20150730" />
    57    <property name="jetty.base" value="jetty-distribution-${jetty.ver}" />
    6     <property name="jetty.sha1" value="ce7bcd1bdcdac4cf130467f6d55155b9e1517e71" />
     8    <property name="jetty.sha1" value="9368e431901c7102bb6a39172e905de30d360484" />
    79    <property name="jetty.filename" value="${jetty.base}.zip" />
     10    <!-- change jetty.ver to jetty.branch for 9.3 -->
    811    <property name="jetty.url" value="http://download.eclipse.org/jetty/${jetty.ver}/dist/${jetty.filename}" />
    912    <property name="verified.filename" value="verified.txt" />
     
    140143        </jar>
    141144        <jar destfile="jettylib/javax.servlet.jar" duplicate="preserve" filesetmanifest="mergewithoutmain" >
    142             <zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/servlet-api-3.0.jar" />
    143             <zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar" />
     145            <zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/servlet-api-3.1.jar" />
     146            <zipfileset excludes="about.html about_files about_files/* META-INF/ECLIPSEF.* META-INF/eclipse.inf plugin.properties" src="${jetty.base}/lib/jsp/javax.servlet.jsp-2.3.2.jar" />
    144147        </jar>
    145148      <!--
  • apps/jetty/java/src/net/i2p/jetty/I2PLogger.java

    rfde0ae8 rb0c3c11  
    260260        return "net.i2p.jetty.I2PLogger";
    261261    }
     262
     263    /**
     264     *  @since Jetty 9
     265     */
     266    public void debug(String msg, long arg) {
     267        debug(msg, Long.valueOf(arg), null);
     268    }
    262269}
  • apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java

    rfde0ae8 rb0c3c11  
    2525import javax.servlet.http.Cookie;
    2626
    27 import org.eclipse.jetty.http.HttpHeaders;
    2827import org.eclipse.jetty.http.PathMap;
    2928import org.eclipse.jetty.server.Request;
     
    277276                if (_preferProxiedForAddress)
    278277                {
    279                     addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR);
     278                    addr = request.getHeader("X-Forwarded-For");
    280279                }
    281280
     
    297296                    buf.append(_logDateCache.format(request.getTimeStamp()));
    298297                else
    299                     buf.append(request.getTimeStampBuffer().toString());
     298                    //buf.append(request.getTimeStampBuffer().toString());
     299                    // TODO SimpleDateFormat or something
     300                    buf.append(request.getTimeStamp());
    300301                   
    301302                buf.append("] \"");
     
    345346                synchronized(_writer)
    346347                {
    347                     buf.append(StringUtil.__LINE_SEPARATOR);
     348                    buf.append(System.getProperty("line.separator", "\n"));
    348349                    int l=buf.length();
    349350                    if (l>_copy.length)
     
    399400                    }
    400401
    401                     _writer.write(StringUtil.__LINE_SEPARATOR);
     402                    _writer.write(System.getProperty("line.separator", "\n"));
    402403                    _writer.flush();
    403404                }
     
    416417                               Writer writer) throws IOException
    417418    {
    418         String referer = request.getHeader(HttpHeaders.REFERER);
     419        String referer = request.getHeader("Referer");
    419420        if (referer == null)
    420421            writer.write("\"-\" ");
     
    426427        }
    427428       
    428         String agent = request.getHeader(HttpHeaders.USER_AGENT);
     429        String agent = request.getHeader("User-Agent");
    429430        if (agent == null)
    430431            writer.write("\"-\" ");
     
    442443        if (_logDateFormat!=null)
    443444        {       
    444             _logDateCache = new DateCache(_logDateFormat, _logLocale);
    445             _logDateCache.setTimeZoneID(_logTimeZone);
     445            _logDateCache = new DateCache(_logDateFormat, _logLocale, _logTimeZone);
    446446        }
    447447       
  • apps/jetty/java/src/net/i2p/jetty/JettyStart.java

    rfde0ae8 rb0c3c11  
    3030
    3131import org.eclipse.jetty.server.Connector;
     32import org.eclipse.jetty.server.NetworkConnector;
    3233import org.eclipse.jetty.server.Server;
    3334import org.eclipse.jetty.util.component.LifeCycle;
     
    128129                                Connector[] connectors = server.getConnectors();
    129130                                if (connectors.length > 0) {
    130                                     int port = connectors[0].getPort();
    131                                     if (port > 0) {
    132                                         _port = port;
    133                                         String host = connectors[0].getHost();
    134                                         if (host.equals("0.0.0.0") || host.equals("::"))
    135                                             host = "127.0.0.1";
    136                                         _context.portMapper().register(PortMapper.SVC_EEPSITE, host, port);
     131                                    Connector conn = connectors[0];
     132                                    if (conn instanceof NetworkConnector) {
     133                                        NetworkConnector nconn = (NetworkConnector) conn;
     134                                        int port = nconn.getPort();
     135                                        if (port > 0) {
     136                                            _port = port;
     137                                            String host = nconn.getHost();
     138                                            if (host.equals("0.0.0.0") || host.equals("::"))
     139                                                host = "127.0.0.1";
     140                                            _context.portMapper().register(PortMapper.SVC_EEPSITE, host, port);
     141                                        }
    137142                                    }
    138143                                }
  • apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java

    rfde0ae8 rb0c3c11  
    4141import org.eclipse.jetty.security.authentication.DigestAuthenticator;
    4242import org.eclipse.jetty.server.AbstractConnector;
     43import org.eclipse.jetty.server.ConnectionFactory;
    4344import org.eclipse.jetty.server.Connector;
     45import org.eclipse.jetty.server.HttpConfiguration;
     46import org.eclipse.jetty.server.HttpConnectionFactory;
    4447import org.eclipse.jetty.server.NCSARequestLog;
     48import org.eclipse.jetty.server.SecureRequestCustomizer;
    4549import org.eclipse.jetty.server.Server;
    46 import org.eclipse.jetty.server.bio.SocketConnector;
     50import org.eclipse.jetty.server.ServerConnector;
     51import org.eclipse.jetty.server.SslConnectionFactory;
    4752import org.eclipse.jetty.server.handler.ContextHandlerCollection;
    4853import org.eclipse.jetty.server.handler.DefaultHandler;
     
    5055import org.eclipse.jetty.server.handler.HandlerWrapper;
    5156import org.eclipse.jetty.server.handler.RequestLogHandler;
    52 import org.eclipse.jetty.server.nio.SelectChannelConnector;
    53 import org.eclipse.jetty.server.ssl.SslSocketConnector;
    54 import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
    5557import org.eclipse.jetty.servlet.ServletHandler;
    5658import org.eclipse.jetty.servlet.ServletHolder;
     
    328330     *                  RequestLogHandler (opt)
    329331     *</pre>
     332     *
     333     *  Porting to Jetty 9:
     334     *
     335     *  http://dev.eclipse.org/mhonarc/lists/jetty-dev/msg01952.html
     336     *  You are missing a few facts about Jetty 9.1 ...
     337     *  First, there are no longer any blocking connectors.
     338     *  Its all async / nio connectors now. (mainly because that's the direction that the servlet api 3.1 is taking)
     339     *
     340     *  Next, there is only 1 connector.   The ServerConnector.
     341     *  However, it takes 1 or more ConnectionFactory implementations to know how to handle the incoming connection.
     342     *  We have factories for HTTP (0.9 thru 1.1), SPDY, SSL-http, and SSL-npn so far.
     343     *  This list of factories will expand as the future of connectivity to web servers is ever growing (think HTTP/2)
     344     *
     345     *  Use the embedded examples for help understanding this.
     346     *  http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/ManyConnectors.java?id=jetty-9.1.0.RC0
     347     *
    330348     */
    331349    public void startConsole() {
     
    340358        // so Jetty can find WebAppConfiguration
    341359        System.setProperty("jetty.class.path", _context.getBaseDir() + "/lib/routerconsole.jar");
    342         _server = new Server();
    343         _server.setGracefulShutdown(1000);
     360        // FIXME
     361        // http://dev.eclipse.org/mhonarc/lists/jetty-users/msg03487.html
     362        //_server.setGracefulShutdown(1000);
    344363
    345364        // In Jetty 6, QTP was not concurrent, so we switched to
     
    373392            //System.out.println("INFO: Jetty concurrent ThreadPool unavailable, using QueuedThreadPool");
    374393            LinkedBlockingQueue<Runnable> lbq = new LinkedBlockingQueue<Runnable>(4*MAX_THREADS);
    375             QueuedThreadPool qtp = new QueuedThreadPool(lbq);
    376             // min and max threads will be set below
    377             //qtp.setMinThreads(MIN_THREADS);
    378             //qtp.setMaxThreads(MAX_THREADS);
    379             qtp.setMaxIdleTimeMs(MAX_IDLE_TIME);
     394            // min and max threads will be reset below
     395            QueuedThreadPool qtp = new QueuedThreadPool(MAX_THREADS, MIN_THREADS, MAX_IDLE_TIME, lbq);
    380396            qtp.setName(THREAD_NAME);
    381397            qtp.setDaemon(true);
    382             _server.setThreadPool(qtp);
     398            _server = new Server(qtp);
    383399        //}
    384400
     
    466482                            if (testSock != null) try { testSock.close(); } catch (IOException ioe) {}
    467483                        }
    468                         //if (host.indexOf(":") >= 0) // IPV6 - requires patched Jetty 5
    469                         //    _server.addListener('[' + host + "]:" + _listenPort);
    470                         //else
    471                         //    _server.addListener(host + ':' + _listenPort);
    472                         AbstractConnector lsnr;
    473                         if (SystemVersion.isJava6() && !SystemVersion.isGNU()) {
    474                             SelectChannelConnector slsnr = new SelectChannelConnector();
    475                             slsnr.setUseDirectBuffers(false);  // default true seems to be leaky
    476                             lsnr = slsnr;
    477                         } else {
    478                             // Jetty 6 and NIO on Java 5 don't get along that well
    479                             // Also: http://jira.codehaus.org/browse/JETTY-1238
    480                             // "Do not use GCJ with Jetty, it will not work."
    481                             // Actually it does if you don't use NIO
    482                             lsnr = new SocketConnector();
    483                         }
     484                        HttpConfiguration httpConfig = new HttpConfiguration();
     485                        // number of acceptors, (default) number of selectors
     486                        ServerConnector lsnr = new ServerConnector(_server, 1, 0,
     487                                                                   new HttpConnectionFactory(httpConfig));
     488                        //lsnr.setUseDirectBuffers(false);  // default true seems to be leaky
    484489                        lsnr.setHost(host);
    485490                        lsnr.setPort(lport);
    486                         lsnr.setMaxIdleTime(90*1000);  // default 10 sec
     491                        lsnr.setIdleTimeout(90*1000);  // default 10 sec
    487492                        lsnr.setName("ConsoleSocket");   // all with same name will use the same thread pool
    488                         lsnr.setAcceptors(1);          // default changed to 2 somewhere in Jetty 7?
    489493                        //_server.addConnector(lsnr);
    490494                        connectors.add(lsnr);
     
    542546                                if (testSock != null) try { testSock.close(); } catch (IOException ioe) {}
    543547                            }
    544                             // TODO if class not found use SslChannelConnector
    545                             AbstractConnector ssll;
    546                             if (SystemVersion.isJava6() && !SystemVersion.isGNU()) {
    547                                 SslSelectChannelConnector sssll = new SslSelectChannelConnector(sslFactory);
    548                                 sssll.setUseDirectBuffers(false);  // default true seems to be leaky
    549                                 ssll = sssll;
    550                             } else {
    551                                 // Jetty 6 and NIO on Java 5 don't get along that well
    552                                 SslSocketConnector sssll = new SslSocketConnector(sslFactory);
    553                                 ssll = sssll;
    554                             }
     548                            HttpConfiguration httpConfig = new HttpConfiguration();
     549                            httpConfig.setSecureScheme("https");
     550                            httpConfig.setSecurePort(sslPort);
     551                            httpConfig.addCustomizer(new SecureRequestCustomizer());
     552                            // number of acceptors, (default) number of selectors
     553                            ServerConnector ssll = new ServerConnector(_server, 1, 0,
     554                                                                       new SslConnectionFactory(sslFactory, "http/1.1"),
     555                                                                       new HttpConnectionFactory(httpConfig));
     556                            //sssll.setUseDirectBuffers(false);  // default true seems to be leaky
    555557                            ssll.setHost(host);
    556558                            ssll.setPort(sslPort);
    557                             ssll.setMaxIdleTime(90*1000);  // default 10 sec
     559                            ssll.setIdleTimeout(90*1000);  // default 10 sec
    558560                            ssll.setName("ConsoleSocket");   // all with same name will use the same thread pool
    559                             ssll.setAcceptors(1);          // default changed to 2 somewhere in Jetty 7?
    560561                            //_server.addConnector(ssll);
    561562                            connectors.add(ssll);
Note: See TracChangeset for help on using the changeset viewer.