diff --git a/pom.xml b/pom.xml index 9814911..d3920cd 100644 --- a/pom.xml +++ b/pom.xml @@ -23,6 +23,7 @@ 2.5 4.3.7.RELEASE 1.10.1.RELEASE + 9.4.0.v20161208 @@ -83,6 +84,25 @@ + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + + + + + org.springframework + spring-webmvc + ${spring.version} + + commons-io diff --git a/src/main/java/kinosearch/kinosearch3/webpp/Main.java b/src/main/java/kinosearch/kinosearch3/webpp/Main.java new file mode 100644 index 0000000..81af9b2 --- /dev/null +++ b/src/main/java/kinosearch/kinosearch3/webpp/Main.java @@ -0,0 +1,16 @@ +/* + * DmitriyMX + * 2017-04-09 + */ +package kinosearch.kinosearch3.webpp; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +public class Main { + public static void main(String[] args) { + ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class); + WebApp webApp = ctx.getBean("webapp", WebApp.class); + webApp.start(); + } +} diff --git a/src/main/java/kinosearch/kinosearch3/webpp/SpringConfig.java b/src/main/java/kinosearch/kinosearch3/webpp/SpringConfig.java new file mode 100644 index 0000000..77d17b6 --- /dev/null +++ b/src/main/java/kinosearch/kinosearch3/webpp/SpringConfig.java @@ -0,0 +1,19 @@ +/* + * DmitriyMX + * 2017-04-09 + */ +package kinosearch.kinosearch3.webpp; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:/application.properties") +public class SpringConfig { + @Bean + public WebApp webapp(@Value("${webapp.host}") String host, @Value("${webapp.port}") int port) { + return new WebApp(host, port); + } +} \ No newline at end of file diff --git a/src/main/java/kinosearch/kinosearch3/webpp/SpringMvcConfig.java b/src/main/java/kinosearch/kinosearch3/webpp/SpringMvcConfig.java new file mode 100644 index 0000000..846b21b --- /dev/null +++ b/src/main/java/kinosearch/kinosearch3/webpp/SpringMvcConfig.java @@ -0,0 +1,14 @@ +/* + * DmitriyMX + * 2017-04-09 + */ +package kinosearch.kinosearch3.webpp; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +@EnableWebMvc +public class SpringMvcConfig extends WebMvcConfigurerAdapter { +} diff --git a/src/main/java/kinosearch/kinosearch3/webpp/WebApp.java b/src/main/java/kinosearch/kinosearch3/webpp/WebApp.java new file mode 100644 index 0000000..696b77e --- /dev/null +++ b/src/main/java/kinosearch/kinosearch3/webpp/WebApp.java @@ -0,0 +1,60 @@ +/* + * DmitriyMX + * 2017-04-09 + */ +package kinosearch.kinosearch3.webpp; + +import lombok.Getter; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.log.Log; +import org.eclipse.jetty.util.log.Slf4jLog; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import java.net.InetSocketAddress; + +public class WebApp { + private final Logger logger = LoggerFactory.getLogger(WebApp.class); + @Getter + private final String host; + @Getter + private final int port; + + public WebApp(String host, int port) { + this.host = host; + this.port = port; + } + + void start() { + Log.setLog(new Slf4jLog("Jetty.Logger")); + Server server = new Server(new InetSocketAddress(host, port)); + server.setHandler(getServletContextHandler(getContext())); + try { + server.start(); + server.join(); + } catch (Exception e) { + logger.error("Start server", e); + } + } + + private ServletContextHandler getServletContextHandler(WebApplicationContext context) { + ServletContextHandler contextHandler = new ServletContextHandler(); + contextHandler.setErrorHandler(null); + contextHandler.setContextPath("/"); + contextHandler.addServlet(new ServletHolder(new DispatcherServlet(context)), "/*"); + contextHandler.addEventListener(new ContextLoaderListener(context)); + return contextHandler; + } + + private WebApplicationContext getContext() { + AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); + context.setConfigLocation("kinosearch.kinosearch3.webpp"); + return context; + } +} diff --git a/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java b/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java new file mode 100644 index 0000000..00fa0d2 --- /dev/null +++ b/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java @@ -0,0 +1,19 @@ +/* + * DmitriyMX + * 2017-04-09 + */ +package kinosearch.kinosearch3.webpp; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class WebAppController { + @RequestMapping(value = "/", method = RequestMethod.GET) + @ResponseBody + public String hello() { + return "hello...?"; + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 3b1b093..10b614c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,7 @@ mongo.host=127.0.0.1 mongo.port=27017 mongo.db=kinosearch -saveRootDir=R:\\ \ No newline at end of file +saveRootDir=R:\\ + +webapp.host=127.0.0.1 +webapp.port=8080 \ No newline at end of file