| | |
| | | import java.lang.reflect.InvocationTargetException; |
| | | import java.lang.reflect.Method; |
| | | import java.net.InetSocketAddress; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URI; |
| | | import java.net.URISyntaxException; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | |
| | | import java.util.logging.Level; |
| | | import java.util.logging.Logger; |
| | | import de.uhilger.neon.Scanner.ScannerListener; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * Einen Neon-Server aus einer Beschreibungsdatei herstellen |
| | |
| | | IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException { |
| | | |
| | | Logger.getLogger(Factory.class.getName()).log(Level.FINER, System.getProperty("java.class.path")); |
| | | |
| | | |
| | | List<ServerDescriptor> serverList = d.server; |
| | | for (ServerDescriptor sd : serverList) { |
| | | HttpServer server = HttpServer.create(new InetSocketAddress(sd.port), 0); |
| | |
| | | server.setExecutor(Executors.newFixedThreadPool(10)); |
| | | server.start(); |
| | | } |
| | | fireInstanceStarted(); |
| | | |
| | | // List<WsServerDescriptor> wsserverList = d.wsserver; |
| | | // for (WsServerDescriptor wsd : wsserverList) { |
| | | // WebSocketServer wsserver = new SimpleWsServer(new InetSocketAddress(wsd.port)); |
| | | // fireWsServerCreated(wsserver); |
| | | // } |
| | | |
| | | fireInstanceStarted(); |
| | | |
| | | |
| | | } |
| | | |
| | | private Authenticator createAuthenticator(NeonDescriptor d) { |
| | | Logger.getLogger(Factory.class.getName()).log( |
| | | Level.FINER, "{0} ", new Object[]{"creating Authenticator"}); |
| | | Authenticator auth = null; |
| | | if (d.authenticator != null) { |
| | | try { |
| | | Logger.getLogger(Factory.class.getName()).log( |
| | | Level.FINER, "Authenticator className {0} ", new Object[]{d.authenticator.className}); |
| | | Object authObj = Class.forName(d.authenticator.className) |
| | | .getDeclaredConstructor().newInstance(); |
| | | if (authObj instanceof Authenticator) { |
| | | auth = (Authenticator) authObj; |
| | | Logger.getLogger(Factory.class.getName()).log( |
| | | Level.FINER, "Authenticator className {0} created", new Object[]{d.authenticator.className}); |
| | | return auth; |
| | | } |
| | | } catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
| | | | InstantiationException | IllegalAccessException | IllegalArgumentException |
| | | | InvocationTargetException ex) { |
| | | // Klasse nicht gefunden. Muss das geloggt oder sonstwie behandel werden? |
| | | Logger.getLogger(Factory.class.getName()).log( |
| | | Level.FINER, "Authenticator className {0} not created, error {1}", |
| | | new Object[]{d.authenticator.className, ex.getLocalizedMessage()}); |
| | | |
| | | return null; |
| | | } |
| | | } |
| | |
| | | Iterator<ActorDescriptor> i = actorList.iterator(); |
| | | while(i.hasNext()) { |
| | | ActorDescriptor actor = i.next(); |
| | | Logger.getLogger(Factory.class.getName()).log( |
| | | Level.FINER, "actorClassName {0} route {1}", |
| | | new Object[]{actor.getActorClassName(), actor.getRoute()}); |
| | | h.setActor(actor.getHttpMethod(), actor.getRoute(), actor.getActorClassName()); |
| | | } |
| | | } |
| | |
| | | l.serverCreated(server); |
| | | } |
| | | } |
| | | |
| | | //private void fireWsServerCreated(WebSocketServer wsserver) { |
| | | // for (WsFactoryListener l : listeners) { |
| | | // l.wsServerCreated(wsserver); |
| | | // } |
| | | //} |
| | | |
| | | |
| | | private void fireHandlerCreated(HttpContext ctx, HttpHandler h) { |
| | | for (FactoryListener l : listeners) { |