您的位置:首页 > 移动开发 > WebAPP

嵌入式jetty9启动标准webapp目录

2016-02-25 18:40 686 查看
主体代码:


package com.doctor.embeddedjetty;

import java.net.URISyntaxException;
import java.util.concurrent.TimeUnit;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

/**
* 标准spring 配置(java config) 嵌入式jetty9启动,支持jsp试图,标准webapp目录,测试用例看
* {@link EmbeddedJettyServer4ForWebappTest} EmbeddedJettyServer4ForWebappTest
* @author doctor
*
* @since 2015年1月6日 下午10:40:16
*/
public class EmbeddedJettyServer4ForWebapp {
private int port;
private String resourceBase;

private Server server;

public EmbeddedJettyServer4ForWebapp(String resourceBase) {
this(8080, resourceBase);
}

public EmbeddedJettyServer4ForWebapp(int port,String resourceBase) {
this.resourceBase = resourceBase;
this.port = port;
init();
}

/**
*
* @param port
* @param resourceBase 注:这里是相对路径,web src/test/resources路径,绝对路径没判断
* @param springRootConfiguration
* @param springMvcConfiguration
*/

public void init() {
server = new Server(port);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
try {
context.setResourceBase(this.getClass().getResource(resourceBase).toURI().toASCIIString());
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
server.setHandler(context);

}

public void start() throws Exception {
if (server != null) {
if (server.isStarting() || server.isStarted() || server.isRunning()) {
return;
}
}
TimeUnit.SECONDS.sleep(3);
server.start();
}

public void stop() throws Exception {
if (server != null) {
if (server.isRunning()) {
server.stop();
}
}
}

public void join() throws InterruptedException {
if (server != null) {
server.join();
}
}
}


测试用例


<pre name="code" class="java">package com.doctor.embeddedjetty;

import org.apache.http.client.fluent.Request;
import org.apache.http.client.fluent.Response;
import org.junit.Test;

public class EmbeddedJettyServer4ForWebappTest {

@Test
public void test() throws Throwable{
EmbeddedJettyServer4ForWebapp server = new EmbeddedJettyServer4ForWebapp(8789,"/embeddedJettyServer4ForWebapp");
server.start();
Response response = Request.Get("http://localhost:8789/jetty/test.html").execute();
System.out.println(response.returnContent().asString());

response = Request.Get("http://localhost:8789/jetty/test.json").execute();
System.out.println(response.returnContent().asString());
server.stop();
}

}


输出:

01-10 10:23:36.627 main  INFO  o.e.j.u.log -
Logging initialized @503ms
01-10 10:23:39.728 main  INFO  o.e.j.s.Server -
jetty-9.3.0.M1
01-10 10:23:39.850 main  INFO  / -
Initializing Spring root WebApplicationContext
01-10 10:23:39.850 main  INFO  o.s.w.c.ContextLoader -
Root WebApplicationContext: initialization started
01-10 10:23:39.939 main  INFO  o.s.w.c.s.XmlWebApplicationContext -
Refreshing Root WebApplicationContext: startup date [Sat Jan 10 10:23:39 CST 2015]; root of context hierarchy
01-10 10:23:39.995 main  INFO  o.s.b.f.x.XmlBeanDefinitionReader -
Loading XML bean definitions from class path resource [embeddedJettyServer4ForWebapp/config/spring-context.xml]
01-10 10:23:40.099 main  INFO  o.s.w.c.ContextLoader -
Root WebApplicationContext: initialization completed in 249 ms
01-10 10:23:40.211 main  INFO  / -
Initializing Spring FrameworkServlet 'dispatcherServlet'
01-10 10:23:40.211 main  INFO  o.s.w.s.DispatcherServlet -
FrameworkServlet 'dispatcherServlet': initialization started
01-10 10:23:40.214 main  INFO  o.s.w.c.s.XmlWebApplicationContext -
Refreshing WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Sat Jan 10 10:23:40 CST 2015]; parent: Root WebApplicationContext
01-10 10:23:40.215 main  INFO  o.s.b.f.x.XmlBeanDefinitionReader -
Loading XML bean definitions from class path resource [embeddedJettyServer4ForWebapp/config/spring-controller.xml]
01-10 10:23:40.718 main  INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping -
Mapped "{[/jetty/test.html || /jetty/test.json],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.doctor.embeddedjetty.EmbeddedJettyServerController.test2()
01-10 10:23:40.721 main  INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping -
Mapped "{[/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.doctor.embeddedjetty.SimpleController.hello()
01-10 10:23:40.722 main  INFO  o.s.w.s.m.m.a.RequestMappingHandlerMapping -
Mapped "{[/embeddedJettyServer2Test],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.doctor.embeddedjetty.SImpleController2.getMessage()
01-10 10:23:40.841 main  INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter -
Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Sat Jan 10 10:23:40 CST 2015]; parent: Root WebApplicationContext
01-10 10:23:40.882 main  INFO  o.s.w.s.m.m.a.RequestMappingHandlerAdapter -
Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Sat Jan 10 10:23:40 CST 2015]; parent: Root WebApplicationContext
01-10 10:23:40.935 main  INFO  o.s.w.s.h.SimpleUrlHandlerMapping -
Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController]
01-10 10:23:41.020 main  INFO  o.s.w.s.DispatcherServlet -
FrameworkServlet 'dispatcherServlet': initialization completed in 808 ms
01-10 10:23:41.020 main  INFO  o.e.j.s.h.ContextHandler -
Started o.e.j.w.WebAppContext@63787180{/,file:///home/doctor/workspace-sts-3.6.2.RELEASE/doctor/springmvc-practice/target/test-classes/embeddedJettyServer4ForWebapp/,AVAILABLE}
01-10 10:23:41.026 main  INFO  o.e.j.s.ServerConnector -
Started ServerConnector@24111ef1{HTTP/1.1,[http/1.1]}{0.0.0.0:8789}
01-10 10:23:41.027 main  INFO  o.e.j.s.Server -
Started @4905ms

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
hello jetty test for webapp /jettytest/test/jsp
</body>
</html>
{"hashMap":{"test":"json","test-html":"html","what":"what"}}
01-10 10:23:42.001 main  INFO  o.e.j.s.ServerConnector -
Stopped ServerConnector@24111ef1{HTTP/1.1,[http/1.1]}{0.0.0.0:8789}
01-10 10:23:42.002 main  INFO  / -
Destroying Spring FrameworkServlet 'dispatcherServlet'
01-10 10:23:42.002 main  INFO  o.s.w.c.s.XmlWebApplicationContext -
Closing WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Sat Jan 10 10:23:40 CST 2015]; parent: Root WebApplicationContext
01-10 10:23:42.012 main  INFO  / -
Closing Spring root WebApplicationContext
01-10 10:23:42.013 main  INFO  o.s.w.c.s.XmlWebApplicationContext -
Closing Root WebApplicationContext: startup date [Sat Jan 10 10:23:39 CST 2015]; root of context hierarchy
01-10 10:23:42.016 main  INFO  o.e.j.s.h.ContextHandler -
Stopped o.e.j.w.WebAppContext@63787180{/,file:///home/doctor/workspace-sts-3.6.2.RELEASE/doctor/springmvc-practice/target/test-classes/embeddedJettyServer4ForWebapp/,UNAVAILABLE}


原文:嵌入式jetty9启动标准webapp目录

相关:
jetty使用教程(嵌入eclipse开发)
Jetty的ServletHandler分析

下载jetty-hightide:http://wiki.eclipse.org/Jetty/Starting/Downloads
地址二:http://download.csdn.net/download/angel_he/4481221
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: