1 package org.simantics.audit.server;
3 import org.eclipse.jetty.server.Connector;
4 import org.eclipse.jetty.server.Server;
5 import org.eclipse.jetty.server.ServerConnector;
6 import org.eclipse.jetty.servlet.ServletContextHandler;
7 import org.eclipse.jetty.servlet.ServletHolder;
8 import org.glassfish.jersey.jackson.JacksonFeature;
9 import org.glassfish.jersey.server.ResourceConfig;
10 import org.glassfish.jersey.servlet.ServletContainer;
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
14 public class AuditLoggingServer {
16 private static final Logger LOGGER = LoggerFactory.getLogger(AuditLoggingServer.class);
18 private static AuditLoggingServer INSTANCE = null;
19 private static Server server;
20 private static ServiceServerThread serverThread;
22 private AuditLoggingServer(String token, int preferablePort) {
23 ResourceConfig config = new ResourceConfig();
24 // JSON serialization/deserialization
25 config.register(JacksonFeature.class);
27 config.register(AuditLoggingAPI.class);
29 // config.register(new AuthorizationFilter(token));
31 ServletHolder holder = new ServletHolder(new ServletContainer(config));
33 server = new Server();
34 ServerConnector connector = new ServerConnector(server);
35 connector.setPort(preferablePort);
37 server.setConnectors(new Connector[] { connector });
39 ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS);
40 context.addServlet(holder, "/*");
43 private static class ServiceServerThread extends Thread {
50 } catch (Exception e) {
51 LOGGER.error("Could not start server ", e);
56 private static synchronized AuditLoggingServer getInstance(String token, int port) {
58 if (INSTANCE == null) {
59 INSTANCE = new AuditLoggingServer(token, port);
61 } catch (Exception e) {
62 LOGGER.error("Could not initialize SCL REST server", e);
67 public static synchronized void start(String token, int port) throws Exception {
68 // Ensure that an instance is created
69 getInstance(token, port);
70 if (serverThread == null && server != null) {
71 serverThread = new ServiceServerThread();
76 public static synchronized void stop() throws Exception {