litesoft
@ 943
litesoft / trunk / DeviceDesktopTest / src / org / litesoft / jetty / EmbeddedJetty.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
package org.litesoft.jetty; import org.eclipse.jetty.http.*; import org.eclipse.jetty.server.*; import org.eclipse.jetty.server.handler.*; import org.eclipse.jetty.servlet.*; import java.sql.*; import java.util.*; public final class EmbeddedJetty { private Server[] mServers; public EmbeddedJetty( PortServlets pPortServlet0, PortServlets... pPortServlets ) { List<Server> zServers = new ArrayList<>(); zServers.add( createServer( pPortServlet0 ) ); for ( PortServlets zPortServlet : pPortServlets ) { zServers.add( createServer( zPortServlet ) ); } mServers = zServers.toArray( new Server[zServers.size()] ); } private Server createServer( PortServlets pPortServlet ) { ServletHandler zServletHandler = new ServletHandler(); for ( ServletSpec zServletSpec : pPortServlet.getServletSpecs() ) { zServletHandler.addServletWithMapping( new ServletHolder( zServletSpec.getServlet() ), zServletSpec.getPathSpec() ); } ContextHandler zContextHandler = new ServletContextHandler(); zContextHandler.setMimeTypes( getMimeTypes( pPortServlet.getAdditionalMimeTypes() ) ); zContextHandler.setHandler( zServletHandler ); Server zServer = new Server( pPortServlet.getPort() ); zServer.setHandler( zContextHandler ); zServer.setStopTimeout( 1000 ); zServer.setStopAtShutdown( true ); return zServer; } protected MimeTypes getMimeTypes( String... pAdditionalMimeTypes ) { // Handle files encoded in UTF-8 MimeTypes zMimeTypes = new MimeTypes(); if ( pAdditionalMimeTypes != null ) { for ( int i = 1; i < pAdditionalMimeTypes.length; i += 2 ) { String zExtension = pAdditionalMimeTypes[i - 1]; String zType = pAdditionalMimeTypes[i]; zMimeTypes.addMimeMapping( zExtension, zType ); } } return zMimeTypes; } public int run() throws Exception { ServerKiller zKiller = new ServerKiller(); Shutdown.Instance.set( zKiller ); start(); while ( !isRunning() ) { if ( isStopped() ) { throw new Error( "Stopped on start!" ); } if ( isFailed() ) { throw new Error( "Failed on start!" ); } Thread.sleep( 50 ); } report( "running", "" ); join(); int zExitCode = zKiller.mExitCode; report( "exiting", " with: " + zExitCode ); return zExitCode; } private void start() throws Exception { for ( Server zServer : mServers ) { zServer.start(); } } private void stop() throws Exception { for ( Server zServer : mServers ) { zServer.stop(); } } private void join() throws InterruptedException { for ( Server zServer : mServers ) { zServer.join(); } } private boolean isFailed() { for ( Server zServer : mServers ) { if ( zServer.isFailed() ) { return true; } } return false; } private boolean isStopped() { for ( Server zServer : mServers ) { if ( zServer.isStopped() ) { return true; } } return false; } private boolean isRunning() { for ( Server zServer : mServers ) { if ( !zServer.isRunning() ) { return false; } } return true; } private void report( String pWhat, String pTail ) { System.out.println( "EmbeddedJetty Server " + pWhat + " @ '" + new Timestamp( System.currentTimeMillis() ) + "'" + pTail ); } private class ServerKiller implements Shutdown { private volatile int mExitCode; @Override public void request( int pExitCode ) { if ( pExitCode != 0 ) { mExitCode = pExitCode; } new Thread( new Runnable() { @Override public void run() { try { Thread.sleep( 100 ); stop(); } catch ( Exception e ) { e.printStackTrace(); } } } ).start(); } } } |
Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/jetty/EmbeddedJetty.java
Revision | Author | Commited | Message |
---|---|---|---|
943 Diff | GeorgeS | Tue 03 Jun, 2014 04:25:50 +0000 | Extracting commonfoundation |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
935 Diff | GeorgeS | Fri 30 May, 2014 20:28:08 +0000 | Reformatted. |
927 Diff | GeorgeS | Mon 17 Mar, 2014 03:58:40 +0000 | Template system and index.html as a resource... |
924 Diff | GeorgeS | Fri 14 Mar, 2014 22:02:56 +0000 | Drop IWS |
923 Diff | GeorgeS | Fri 21 Feb, 2014 00:03:57 +0000 | Multi-Port Jetty |
922 Diff | GeorgeS | Tue 18 Feb, 2014 16:18:01 +0000 | Mini App ready for packaging... |
920 | GeorgeS | Sun 16 Feb, 2014 19:06:51 +0000 | DDT w/ Jetty |