`

使用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 环境配置)

    这通常涉及使用Spring MVC作为控制器层,内嵌Jetty作为Web服务器,以及Maven作为项目管理工具。下面将详细解释这些关键知识点: 1. **Spring MVC**: Spring MVC是Spring框架的一部分,它提供了一个用于构建Web...

    spring boot内置jetty

    内置 Jetty 服务器是 Spring Boot 的一个重要特性,允许开发者快速启动和运行 web 应用,而无需手动配置服务器。Jetty 是一个轻量级、高性能的开源 HTTP 服务器和 Java Servlet 容器,它被广泛用于各种类型的 web ...

    jetty内嵌实现

    总结来说,Jetty内嵌实现是一种快速启动Web服务的方式,特别适合开发和测试环境。通过Maven管理依赖,编写简单的Java代码即可启动服务器。这种方式提高了开发效率,降低了部署复杂度,使得我们可以更加专注于应用的...

    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

    Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动

    在该方法中,Spring Boot支持三种内嵌容器的定制化配置,即Tomcat、Jetty、Undertow。 三、TomcatEmbeddedServletContainerFactory TomcatEmbeddedServletContainerFactory是Spring Boot中用于创建Tomcat内嵌容器...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    - 在Spring Boot中,Jetty是默认的嵌入式服务器选项之一,简化了Spring应用的部署。 通过以上内容,我们可以了解到Jetty在Java Web开发中的重要地位和优势。无论是小型项目还是复杂的分布式系统,Jetty都能提供...

    Jetty中文手册

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

    嵌入jetty的springMVC可运行jar的REST+

    标题中的“嵌入jetty的springMVC可运行jar的REST+”指的是使用Jetty作为嵌入式服务器来运行一个包含Spring MVC的Java Web应用程序,该应用提供了RESTful API服务。这种架构允许开发者将Web服务器与应用代码打包成...

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

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

    spring Boot 2精髓带源码带书签目录高清版

    5. **Spring Data JPA**:Spring Boot与Spring Data JPA的集成,使得数据库操作变得更加便捷,支持ORM框架如Hibernate,提供了一种声明式的方式来完成数据访问。 6. **Spring Cloud**:Spring Boot可以很好地与...

    Spring Boot 整合 Ureport2.zip

    总之,Spring Boot整合Ureport2提供了一种高效、便捷的报表开发方式,利用Spring Boot的自动化配置和Ureport2的报表设计能力,可以帮助开发者快速构建出满足业务需求的报表系统。在实际项目中,可以根据具体业务场景...

    spring-boot使用指南

    安装 Spring Boot 有两种主要方式:一是针对 Java 开发者的安装指导,包括使用 Maven 或 Gradle;二是使用 Spring Boot CLI(命令行工具)。具体安装步骤如下: - Maven 安装:通过添加 Maven 仓库中的依赖来使用 ...

    Spring Boot 教程、技术栈示例代码,快速简单上手教程。

    - **起步依赖**:Spring Boot 通过“起步依赖”(Starter POMs)提供了一种简单的方式来添加功能模块,如 Web、Data JPA、Security 等。 - **内嵌服务器**:Spring Boot 支持内嵌 Tomcat、Jetty 或 Undertow 服务器...

    架构师面试题系列之Spring Boot面试专题及答案(33题).docx

    它使用特定的方式来进行配置(properties 或 yml 文件),创建独立的 Spring 引用程序 main 方法运行,并嵌入 Tomcat,无需部署 war 文件。 2. 什么是 JavaConfig? JavaConfig 是 Spring 社区的产品,提供了配置 ...

    【42】使用dubbo、spring-boot等技术实现互联网后台服务项目架构视频教程 .txt

    - **内嵌服务器**:默认情况下,Spring Boot会使用Tomcat作为嵌入式容器,同时也支持Jetty、Undertow等其他容器。 - **简化Maven配置**:Spring Boot通过Starters简化了依赖管理,只需添加少量依赖即可获得完整的...

    Spring Boot参考指南

    2. **起步依赖**:Spring Boot的起步依赖(Starter POMs)是一种智能的依赖管理方式,使得开发者只需声明一个起步依赖,就能引入一系列相关依赖,极大地简化了项目的构建配置。 3. **命令行界面**:Spring Boot提供...

    十分钟上手spring boot

    - 另一种在macOS上安装Spring Boot的方式。 - **10.2.5. 命令行实现** - 直接使用命令行来安装和管理Spring Boot CLI。 - **10.2.6. Spring CLI示例快速入门** - 通过示例来快速上手Spring Boot CLI。 **11. ...

    Spring Boot in Action 英文版

    Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...

    Spring Boot讲义.pdf

    它使用了特定的方式来进行配置,使得开发者能够快速启动和运行Spring应用程序,几乎不需要什么配置就可以快速启动和运行。Spring Boot可以看作是快速搭建基于Spring的应用程序脚手架。 #### 1.2. 为什么要学习...

Global site tag (gtag.js) - Google Analytics