嵌入式jetty9启动标准webapp目录

主体代码:
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 [email protected]{/,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 [email protected]{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 [email protected]{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 [email protected]{/,file:///home/doctor/workspace-sts-3.6.2.RELEASE/doctor/springmvc-practice/target/test-classes/embeddedJettyServer4ForWebapp/,UNAVAILABLE}

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

时间: 2024-10-13 16:19:08

嵌入式jetty9启动标准webapp目录的相关文章

.嵌入式jetty启动spring(java配置方式),junit测试用.标准spring 配置(java config) 嵌入式jetty9启动

package com.doctor.embeddedjetty; import java.util.concurrent.TimeUnit; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.springframework.web.con

嵌入式Linux启动时网络参数配置

明白了嵌入式Linux启动时网络参数配置的流程,就会对网络这一部分了然于胸,以后出现网络不通的情况,就有了解决问题的思路. 1.网络参数配置的入口: /etc/init.d/rcS,如下两行 # 配置换回lo地址 /sbin/ifconfig lo 127.0.0.1 # 配置以太网eth0地址 /etc/init.d/ifconfig-eth0 2.进入ifconfig-eth0文件: #!/bin/sh echo -n Try to bring eth0 interface up......

【转】嵌入式Linux启动配置文件及脚本

原文网址:http://blog.csdn.net/shuaishuai80/article/details/6202497 使用Busybox制作根文件系统时,/etc目录非常重要,它包含了嵌入式Linux启动所需的配置文件及脚本.由于init进程,或者说linuxrc程序会解析inittab文件,因此就从/etc/inittab文件开始说起.(1)文件/etc/inittab   该文件是init进程需要解析的文件,它的每个条目都是一个脚本或可执行程序,详见博客"inittab文件"

Python Anaconda2 (64-bit) 安装后启动jupyter-notebook默认目录更改

看了网上很多关于更改 python notebook的,好麻烦,所以想了一招. python notebook 现在改名叫 jupyter-notebook ,被集成在Anaconda中. Anaconda集成了python.Spyder.jupyter等python的编辑器,也集成了很多科学计算的lib库,当然有些库没有被集成进去 1.下载Anaconda 网址:https://www.continuum.io/downloads 下载python27版本 64位 如果需要免费的学术licen

访问webapp目录报404错误

spring boot打包后,访问webapp目录报了404.并且java包中没有前端代码 解决办法: 1. 配置pom.xml <build> <resources> <resource> <directory>src/main/webapp</directory> <!--注意此次必须要放在此目录下才能被访问到 --> <targetPath>META-INF/resources</targetPath>

SpringBoot添加webapp目录

一.文章简述 使用IDEA工具创建的SpringBoot项目本身是没有webapp目录的.如果我们想要添加webapp目录的话,可以手动添加. 二.操作步骤 1)点击IDEA右上角的Project Structure 2)先点击下图中的+号,再点击Web 3)修改Web模板的位置 ①web模板未修改前的位置如下: ②先修改Path路径(点击上图中path框右边的小铅笔图标即可编辑),再修改Web Resource Directory 注意:本项目是把webapp放置在main目录底下.大家可以根

转:嵌入式linux启动时运行的inittab文件

嵌入式系统下的linux启动配置文件,不同与普通的PC linux启动配置,启动相关文件与文件的内容也要少得多.嵌入式系统下的linux启动过程一般是: 1 在bootloader中制定各种要求传给linux内核的参数,制作ramdisk或ramfs文件系统,并在开机后首先mount上,该文件系统主要负责包含启动运行的配置文件,嵌入式系统主要是/etc/inittab和/etc/rc文件: 2 在init进程启动后,进程首先执行/etc/inittab文件,该文件语法下面介绍,一般包括三项内容就

服务器启动时Webapp的web.xml中配置的加载顺序

一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Lo

简述嵌入式Linux启动过程

首先上电以后芯片会在固化好的一个地址寻找第一个启动程序,完成初始化工作,然后转跳到预定的一个地址来执行裸机程序或者UBOOT程序,在UBOOT中按照设置好的内核启动参数来启动内核,告诉内核怎么样加载,怎么样初始化,和第一个程序,根文件系统的位置.然后内核启动好了以后,挂载根文件系统,执行第一个程序init,然后init启动其他的程序,挂载相应的文件系统,init程序作为守护进程,会守护它启动的进程,使其不会退出或者及时重启.程序启动,文件系统挂载完成Linux就可以使用了.