blob: 7ad0500d9e863a48e2f4ccade9a43f98ea87d8f0 [file] [log] [blame]
Michael Hanl72c7b832015-09-03 08:42:15 +02001package de.ids_mannheim.korap.web;
2
margaretha543f2002017-07-14 00:27:15 +02003import javax.servlet.ServletContextListener;
4
Michael Hanl72c7b832015-09-03 08:42:15 +02005import org.eclipse.jetty.server.Connector;
6import org.eclipse.jetty.server.Server;
7import org.eclipse.jetty.server.bio.SocketConnector;
Michael Hanl72c7b832015-09-03 08:42:15 +02008import org.eclipse.jetty.servlet.ServletContextHandler;
9import org.eclipse.jetty.servlet.ServletHolder;
margaretha543f2002017-07-14 00:27:15 +020010import org.springframework.web.context.ContextLoaderListener;
Michael Hanl72c7b832015-09-03 08:42:15 +020011
margarethaade7d4a2017-07-20 19:53:35 +020012import com.sun.jersey.spi.spring.container.servlet.SpringServlet;
13
14import de.ids_mannheim.korap.config.BeansFactory;
15import de.ids_mannheim.korap.config.KustvaktConfiguration;
16import lombok.Getter;
17import lombok.Setter;
18
Michael Hanl72c7b832015-09-03 08:42:15 +020019/**
20 * @author hanl
21 * @date 01/06/2015
22 */
Michael Hanlada713a2016-06-03 17:46:57 +020023public abstract class KustvaktBaseServer {
margaretha543f2002017-07-14 00:27:15 +020024
margaretha543f2002017-07-14 00:27:15 +020025 protected static String rootPackages;
margarethaade7d4a2017-07-20 19:53:35 +020026 protected static KustvaktArgs kargs;
margaretha543f2002017-07-14 00:27:15 +020027
Michael Hanlc0ed00f2016-06-23 14:33:10 +020028 public KustvaktBaseServer () {
29 KustvaktConfiguration.loadLogger();
30 }
31
32
Michael Hanl8abaf9e2016-05-23 16:46:35 +020033 protected KustvaktArgs readAttributes (String[] args) {
Michael Hanl72c7b832015-09-03 08:42:15 +020034 KustvaktArgs kargs = new KustvaktArgs();
35 for (int i = 0; i < args.length; i++) {
36 switch ((args[i])) {
Michael Hanl72c7b832015-09-03 08:42:15 +020037 case "--config":
38 kargs.setConfig(args[i + 1]);
39 break;
40 case "--port":
41 kargs.setPort(Integer.valueOf(args[i + 1]));
42 break;
Michael Hanlf21773f2015-10-16 23:02:31 +020043 case "--help":
44 StringBuffer b = new StringBuffer();
45
46 b.append("Parameter description: \n")
Michael Hanl19390652016-01-16 11:01:24 +010047 .append("--config <Path to spring configuration file> : Configuration file\n")
48 .append("--port <Server port> : Port under which the server is accessible \n")
Michael Hanld6eadd52015-11-11 18:30:33 +010049 // .append("--props <Path to kustvakt properties> : list of configuration properties\n")
Michael Hanlf21773f2015-10-16 23:02:31 +020050 .append("--help : This help menu\n");
51 System.out.println(b.toString());
52 System.out.println();
53 break;
Michael Hanlf1e85e72016-01-21 16:55:45 +010054 case "--init":
55 kargs.init = true;
56 break;
Michael Hanl72c7b832015-09-03 08:42:15 +020057 }
58 }
59 return kargs;
60 }
61
Michael Hanl00ef5462016-06-06 17:39:59 +020062 protected abstract void setup ();
63
margarethaade7d4a2017-07-20 19:53:35 +020064 protected void start(){
65 KustvaktConfiguration config = BeansFactory.getKustvaktContext().getConfiguration();
66
margaretha543f2002017-07-14 00:27:15 +020067 if (kargs.init){
68 setup();
69 }
70 if (kargs.port == -1){
margarethaade7d4a2017-07-20 19:53:35 +020071 kargs.setPort(config.getPort());
margaretha543f2002017-07-14 00:27:15 +020072 }
73
74 Server server = new Server();
margaretha543f2002017-07-14 00:27:15 +020075 ServletContextHandler contextHandler = new ServletContextHandler(
76 ServletContextHandler.NO_SESSIONS);
77 contextHandler.setContextPath("/");
margarethaf68daa62017-09-21 02:11:24 +020078 contextHandler.setInitParameter("contextConfigLocation", "classpath:"+kargs.getConfig());
margaretha543f2002017-07-14 00:27:15 +020079
80 ServletContextListener listener = new ContextLoaderListener();
81 contextHandler.addEventListener(listener);
82
83 ServletHolder servletHolder = new ServletHolder(new SpringServlet());
84 servletHolder.setInitParameter("com.sun.jersey.config.property.packages",
85 rootPackages);
86 servletHolder.setInitOrder(1);
margarethaea68a0a2017-09-21 03:09:49 +020087 contextHandler.addServlet(servletHolder, config.getBaseURL());
margaretha543f2002017-07-14 00:27:15 +020088
89 SocketConnector connector = new SocketConnector();
90 connector.setPort(kargs.port);
91 connector.setMaxIdleTime(60000);
92
93 server.setHandler(contextHandler);
94 server.setConnectors(new Connector[] { connector });
95 try {
96 server.start();
97 server.join();
98 }
99 catch (Exception e) {
100 System.out.println("Server could not be started!");
101 System.out.println(e.getMessage());
102 System.exit(-1);
103// e.printStackTrace();
104 }
105 }
106
Michael Hanl72c7b832015-09-03 08:42:15 +0200107 @Setter
108 public static class KustvaktArgs {
109
Michael Hanl72c7b832015-09-03 08:42:15 +0200110 @Getter
111 private String config;
112 private int port;
Michael Hanl482f30d2015-09-25 12:39:46 +0200113 private String[] rootPackages;
Michael Hanlf1e85e72016-01-21 16:55:45 +0100114 private boolean init;
Michael Hanl72c7b832015-09-03 08:42:15 +0200115
Michael Hanl8abaf9e2016-05-23 16:46:35 +0200116
117 public KustvaktArgs () {
Michael Hanl72c7b832015-09-03 08:42:15 +0200118 this.port = -1;
Michael Hanl72c7b832015-09-03 08:42:15 +0200119 this.config = null;
Michael Hanlf1e85e72016-01-21 16:55:45 +0100120 this.init = false;
Michael Hanl72c7b832015-09-03 08:42:15 +0200121 }
Michael Hanl72c7b832015-09-03 08:42:15 +0200122
Michael Hanlc4446022016-02-12 18:03:17 +0100123 }
124}