Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/DeviceDesktopTest/src/org/litesoft/jetty/EmbeddedJetty.java

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