`

使用Spring启动内嵌Jetty的2种方式

阅读更多

在应用程序内使用Spring启动内嵌的Jetty服务总共有2种方式:

1. 一种是启动一个独立运行的Jetty服务,使用独立的Spring配置,跟应用之间完全独立

2. 一种是启动一个与应用共享ApplicationContext的服务,可以访问应用的全部内容

 

对于第一种独立的Jetty服务:

 

        Server server = new Server();
        SelectChannelConnector connector = new SelectChannelConnector(); 
        connector.setPort(12345); 
        server.addConnector(connector); 
       

        final ServletHolder servletHolder = new ServletHolder(new CXFServlet());
        final ServletContextHandler context = new ServletContextHandler();
        context.setContextPath("/data-service");
        context.addServlet(servletHolder, "/*");

        context.addEventListener(new ContextLoaderListener());
        context.setInitParameter("contextConfigLocation", "classpath:spring-server.xml");
        
        //设置字符编码,否则默认是使用机器的编码,一般是ISO-8859
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
	filter.setEncoding("UTF-8");
	filter.setForceEncoding(true);
	context.addFilter(new FilterHolder(filter), "/*", EnumSet.allOf(DispatcherType.class));
         
        server.setHandler(contextHandler);
        server.start();
        server.join();

 

对于第二种方式,在构造ContextHandler时,稍微有所不同,同时需要注入当前应用的ApplicationContext

public class EmbedDataServiceServer implements ApplicationContextAware {
   private ApplicationContext applicationContext;
   public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {  
        this.applicationContext = applicationContext;  
    }

   public void start() throws Exception {
        Server server = new Server();
        SelectChannelConnector connector = new SelectChannelConnector(); 
        connector.setPort(12345); 
        server.addConnector(connector); 
       

        final WebAppContext context = new WebAppContext();
	context.setContextPath("/" + config.getCallbackContextPath());
	context.setConfigurationDiscovered(true);
	context.setParentLoaderPriority(true);
	context.setResourceBase("web");
        context.addServlet(CXFServlet.class, "/*");

	context.setClassLoader(applicationContext.getClassLoader());	
	XmlWebApplicationContext xmlWebAppContext = new XmlWebApplicationContext();
	xmlWebAppContext.setParent(applicationContext);
	xmlWebAppContext.setConfigLocation("");
	xmlWebAppContext.setServletContext(context.getServletContext());
	xmlWebAppContext.refresh();
		
	context.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, xmlWebAppContext);
        
        //设置字符编码,否则默认是使用机器的编码,一般是ISO-8859
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
	filter.setEncoding("UTF-8");
	filter.setForceEncoding(true);
	context.addFilter(new FilterHolder(filter), "/*", EnumSet.allOf(DispatcherType.class));
         
        server.setHandler(contextHandler);
        server.start();
        server.join();
   }
}

 

Java版本: JDK 1.7

使用jar包版本:

spring 4.1.4.RELEASE

cxf 2.7.6

jetty  8.1.17.v20150415

 

这里参考了另外一位老兄的记录整理而来,参考地址:

http://blog.csdn.net/danieluk/article/details/18750115

分享到:
评论

相关推荐

    自己构建微服务(springmvc+内嵌jetty+maven 环境配置)

    NULL 博文链接:https://fuaotech.iteye.com/blog/2292707

    springbatch_嵌入式jetty_动态控制的quartz

    支持web接口的批处理框架 在eclipse中导出为可执行的jar,无需部署到任何web容器中。直接通过bat或shell启动即可。...mybatis3.4.1 druid1.0.17 smg3(决策引擎) jetty8.1.5 fastjson1.2.7 springjdbc3.2.14

    Jetty中文手册

    内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 在Jetty中部署应用 部署管理器 部署绑定 热部署 Context提供者 如何部署web应用 webApp提供者 如何部署第三方产品 部署...

    spring-jetty-example:Spring MVC 4示例应用程序

    Spring MVC嵌入式码头示例 使用嵌入式Jetty 9服务器的基本Spring MVC 4应用程序。 无xml配置。 包括API REST服务,Freemarker和JSP示例。 与Mongo DB集成。 要求

    spring杂谈 作者zhang KaiTao

    1.27 idea内嵌jetty运行springmvc项目报ConversionFailedException 1.28 springmvc 3.2 @MatrixVariable注解 1.29 spring3.2 带matrix变量的URL匹配问题 1.30 Shiro+Struts2+Spring3 加上@RequiresPermissions 后@...

    Spring Boot是一个基于Spring框架的开源项目,旨在简化Spring应用的初始搭建以及开发过程 以下是对Spring

    其次,Spring Boot支持内嵌的Servlet容器(如Tomcat、Jetty、Undertow等),这意味着你可以将应用程序打包为一个可执行的JAR文件,并直接运行,无需单独安装和配置外部容器。这大大简化了应用的部署过程,提高了开发...

    spring系列框架之SpringBoot框架

    内嵌的容器:Spring Boot 可以打包成一个独立的 JAR 文件,并且内置了 Tomcat、Jetty 或 Undertow 等容器,使得应用程序可以直接运行,而无需外部容器的支持。 自动化的依赖管理:Spring Boot 通过 Starter POMs ...

    springboot参考指南

    使用Spring Boot v. 5. 了解Spring Boot特性 vi. 6. 迁移到生存环境 vii. 7. 高级主题 3. II. 开始 i. 8. Spring Boot介绍 ii. 9. 系统要求 i. 9.1. Servlet容器 iii. 10. Spring Boot安装 i. 10.1. 为Java开发者...

    49道Spring Boot面试题带答案(很全)

    Spring Boot是一个用于简化Spring应用程序创建和开发过程的框架。它的设计目标是通过...内嵌Servlet容器:Spring Boot的应用程序内嵌了Tomcat或Jetty等Servlet容器,使得开发人员无需单独部署和配置应用程序的容器。

    完结16章SpringBoot2 仿B站高性能前端+后端项目

    2、内嵌服务器:Spring Boot 提供内嵌的 Tomcat、Jetty 和 Undertow 等 Web 服务器,使得应用程序的部署变得非常简单,开发人员只需要将应用程序打包成一个jar文件,即可在任何地方运行应用程序 3、简化依赖...

    简单易用、灵活高效springboot简单易用、灵活高效springboot

    springboot ...2. 内嵌服务器:Spring Boot内置了多种常用的服务器,如Tomcat、Jetty等,无需额外配置,即可启动和行应用。 3. 自动化依赖管理: Boot的起步依赖简化了依赖管理的工作,只需在配置文件

    SpringBoot2 仿B站高性能前端+后端项目[24年3月完结16章]

    Spring能做什么 Spring具有哪些能力呢?这点在Spring的官网上有比较详情的描述,我们可以在Spring的项目 里看到Spring的生态涵盖了web开发、数据访问、安全控制、分布式、消息服务、移动开发、批处理等等 ...

    springboot基础pdf

    内嵌服务器:支持内嵌Tomcat、Jetty或Undertow等Web服务器,减少了部署的复杂性。 生产就绪特性:具备监控、度量和健康检查等功能,适合生产环境使用。 Spring Boot的开发工具: Spring Tool Suite (STS):这是...

    spring-source-study:spring原始学习

    SpringBoot实际上就是一个整合很多可插拔的组件(框架),内嵌了使用工具(诸如内嵌了Tomcat,Jetty等),方便开发人员快速建造和开发的一个框架。 IoC ( Inversion of Control ,控制倒转)。这是spring的核心,...

    SpringBoot框架学习

    (2)内嵌Tomcat或Jetty等Servlet容器; (3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置; (4)尽可能自动配置Spring容器; (5)提供准备好的特性,如指标、健康检查和外部化配置; (6)...

    SpringBoot应用回顾

    2. 内嵌服务器:Spring Boot默认内嵌了常用的Web服务器(如Tomcat、Jetty等),无需手动部署到独立的服务器上,可以直接运行。 3. 自动化依赖管理:Spring Boot提供了一个强大的依赖管理工具,可以根据项目的需求...

    spring-async-perftest

    应用服务器jetty, 内嵌在Spring-Boot里. 准备测试一下几种matrix 方式 HTTP线程池 工作线程池 工作线程等待时间 异步 16 16 1s 异步 16 16 0.1s 同步 16 16 1s 同步 16 16 0.1s 同步 100 16 1s 同步 200 16 1s 并发...

    Grails1.1中文文档

    因此我们要以一种新的思维方式来重新思考Web开发,Rails、Django和TurboGears这样的动态框架给我们铺平了道路。Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,...

    spring-boot-war-selfrun

    spring boot项目,生成war文件,支持java -jar的方式启动项目,内嵌tomcat或者jetty容器。 软件架构 软件架构说明 安装教程 xxxx xxxx xxxx 使用说明 xxxx xxxx xxxx 参与贡献 Fork 本项目 新建 Feat_xxx 分支 提交...

    maven-archetype-springboot:Spring引导的Maven原型

    基于Spring Boot 1.5.9,内嵌Jetty 提供双重异常捕获,查看到Json,跨域访问等功能 提供Maven配置文件和Spring配置文件完美融合的解决方案 集成通用Mapper和PageHelper,添加BaseService,常用CRUD无需编写代码 集成...

Global site tag (gtag.js) - Google Analytics