在应用程序内使用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
相关推荐
这通常涉及使用Spring MVC作为控制器层,内嵌Jetty作为Web服务器,以及Maven作为项目管理工具。下面将详细解释这些关键知识点: 1. **Spring MVC**: Spring MVC是Spring框架的一部分,它提供了一个用于构建Web...
内置 Jetty 服务器是 Spring Boot 的一个重要特性,允许开发者快速启动和运行 web 应用,而无需手动配置服务器。Jetty 是一个轻量级、高性能的开源 HTTP 服务器和 Java Servlet 容器,它被广泛用于各种类型的 web ...
总结来说,Jetty内嵌实现是一种快速启动Web服务的方式,特别适合开发和测试环境。通过Maven管理依赖,编写简单的Java代码即可启动服务器。这种方式提高了开发效率,降低了部署复杂度,使得我们可以更加专注于应用的...
支持web接口的批处理框架 在eclipse中导出为可执行的jar,无需部署到任何web容器中。直接通过bat或shell启动即可。...mybatis3.4.1 druid1.0.17 smg3(决策引擎) jetty8.1.5 fastjson1.2.7 springjdbc3.2.14
在该方法中,Spring Boot支持三种内嵌容器的定制化配置,即Tomcat、Jetty、Undertow。 三、TomcatEmbeddedServletContainerFactory TomcatEmbeddedServletContainerFactory是Spring Boot中用于创建Tomcat内嵌容器...
- 在Spring Boot中,Jetty是默认的嵌入式服务器选项之一,简化了Spring应用的部署。 通过以上内容,我们可以了解到Jetty在Java Web开发中的重要地位和优势。无论是小型项目还是复杂的分布式系统,Jetty都能提供...
内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 在Jetty中部署应用 部署管理器 部署绑定 热部署 Context提供者 如何部署web应用 webApp提供者 如何部署第三方产品 部署...
标题中的“嵌入jetty的springMVC可运行jar的REST+”指的是使用Jetty作为嵌入式服务器来运行一个包含Spring MVC的Java Web应用程序,该应用提供了RESTful API服务。这种架构允许开发者将Web服务器与应用代码打包成...
Spring MVC嵌入式码头示例 使用嵌入式Jetty 9服务器的基本Spring MVC 4应用程序。 无xml配置。 包括API REST服务,Freemarker和JSP示例。 与Mongo DB集成。 要求
5. **Spring Data JPA**:Spring Boot与Spring Data JPA的集成,使得数据库操作变得更加便捷,支持ORM框架如Hibernate,提供了一种声明式的方式来完成数据访问。 6. **Spring Cloud**:Spring Boot可以很好地与...
总之,Spring Boot整合Ureport2提供了一种高效、便捷的报表开发方式,利用Spring Boot的自动化配置和Ureport2的报表设计能力,可以帮助开发者快速构建出满足业务需求的报表系统。在实际项目中,可以根据具体业务场景...
安装 Spring Boot 有两种主要方式:一是针对 Java 开发者的安装指导,包括使用 Maven 或 Gradle;二是使用 Spring Boot CLI(命令行工具)。具体安装步骤如下: - Maven 安装:通过添加 Maven 仓库中的依赖来使用 ...
- **起步依赖**:Spring Boot 通过“起步依赖”(Starter POMs)提供了一种简单的方式来添加功能模块,如 Web、Data JPA、Security 等。 - **内嵌服务器**:Spring Boot 支持内嵌 Tomcat、Jetty 或 Undertow 服务器...
它使用特定的方式来进行配置(properties 或 yml 文件),创建独立的 Spring 引用程序 main 方法运行,并嵌入 Tomcat,无需部署 war 文件。 2. 什么是 JavaConfig? JavaConfig 是 Spring 社区的产品,提供了配置 ...
- **内嵌服务器**:默认情况下,Spring Boot会使用Tomcat作为嵌入式容器,同时也支持Jetty、Undertow等其他容器。 - **简化Maven配置**:Spring Boot通过Starters简化了依赖管理,只需添加少量依赖即可获得完整的...
2. **起步依赖**:Spring Boot的起步依赖(Starter POMs)是一种智能的依赖管理方式,使得开发者只需声明一个起步依赖,就能引入一系列相关依赖,极大地简化了项目的构建配置。 3. **命令行界面**:Spring Boot提供...
- 另一种在macOS上安装Spring Boot的方式。 - **10.2.5. 命令行实现** - 直接使用命令行来安装和管理Spring Boot CLI。 - **10.2.6. Spring CLI示例快速入门** - 通过示例来快速上手Spring Boot CLI。 **11. ...
Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...
它使用了特定的方式来进行配置,使得开发者能够快速启动和运行Spring应用程序,几乎不需要什么配置就可以快速启动和运行。Spring Boot可以看作是快速搭建基于Spring的应用程序脚手架。 #### 1.2. 为什么要学习...