`
m635674608
  • 浏览: 5054961 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

将Jetty做为内嵌的服务器使用

    博客分类:
  • java
 
阅读更多

 Jetty的优良特点在于,它可以嵌入到任意的java程序中。并且使用jetty可以快速的开发自己的应用服务器。

1、准备开发嵌入式的jetty服务器jar

//以下这些包,在jetty_home\lib目录下都可以找到:

jetty-continuation-7.6.2.v20120308.jar

jetty-http-7.6.2.v20120308.jar

jetty-io-7.6.2.v20120308.jar

jetty-security-7.6.2.v20120308.jar

jetty-server-7.6.2.v20120308.jar

jetty-servlet-7.6.2.v20120308.jar

jetty-util-7.6.2.v20120308.jar

jetty-webapp-7.6.2.v20120308.jar

jetty-xml-7.6.2.v20120308.jar

//以下是Servlet项目所需要的包,在tomcat_home\lib的安装目录下都可以找到

servlet-api-2.5.jar

jsp-api.jar

jasper.jar

jasper-el.jar

el-api.jar

ecj-3.7.1.jar   (此包非常重要是在Eclipse环境下编译JSP文件、Servlet文件用的)

//以下在tomcat_home\bin目录下可以找到,虽然它是以tomcat命名,但它是一个公共包,主要是用于服务器的日志输出

tomcat-juli.jar

2、书写第一个jetty服务器

    以下代码,创建了一个jetty服务器,并发布了一两个Servlet。且设置支持Session

import org.eclipse.jetty.server.Server;   //此类是jetty的服务器类用于指定绑定的服务器和端口。

import org.eclipse.jetty.server.SessionManager;  //此类用于管理服务器的Session

import org.eclipse.jetty.server.session.HashSessionManager;  //此类是SessionManager的子类,用hash算法生成Session

import org.eclipse.jetty.server.session.SessionHandler; //此类用于将SessionManager注册到服务器

import org.eclipse.jetty.servlet.ServletContextHandler; //此类用于管理Servlet,可以管理多个Servlet.

import org.eclipse.jetty.servlet.ServletHolder;  //此类用于将Servlet注册到服务器

import org.eclipse.jetty.webapp.WebAppContext;   //此类,可以用于加载任意一个JavaEE项目。后面会用到

以下是访问内部的代码,类名请你自己添加:

@Test

    public void jettyServer2() throws Exception{

       Server server = new Server(9090);//声明服务器

        ServletContextHandler hand = new ServletContextHandler();//声明ServletContextHandler

        hand.addServlet(new ServletHolder(new HttpServlet() {    //分别添加两个Servlet

        public void doGet(HttpServletRequest req,

                HttpServletResponse response) throws ServletException,

                IOException {

                response.setContentType("text/html;charset=utf-8"); 

               response.setStatus(HttpServletResponse.SC_OK);  

               response.getWriter().println("<h1>Hello World第二个</h1>"); 

               HttpSession s = req.getSession();

               String name = (String) s.getAttribute("name");

               response.getWriter().println("<h1>Session is:</h1>"+s+","+name); 

               response.getWriter().print("<br/>"+this.getServletContext().getRealPath("/"));

              

        }

       }), "/a");

        hand.addServlet(new ServletHolder(new HttpServlet() {

        public void doGet(HttpServletRequest req,

                HttpServletResponse response) throws ServletException,

                IOException {

            response.setContentType("text/html;charset=utf-8"); 

               response.setStatus(HttpServletResponse.SC_OK);  

               response.getWriter().println("<h1>Hello World第一个</h1>");

               HttpSession s = req.getSession();

               s.setAttribute("name""Jack");

               response.getWriter().print("<br/><a href='a'>去第二个</a>");

        }

       }), "/");

        //设置内嵌的jetty支持session.默认情况下不支持session

        SessionManager sm = new HashSessionManager();

        hand.setSessionHandler(new SessionHandler(sm));

       server.setHandler(hand);//设置

       server.start();//启动

       server.join();

    }

3、使用jetty的管理器管理一个完整的JavaEE应用

       Jetty可以非常方便的管理一个JavaEE应用程序。关键点就在于使用WebAppContext来发布一个JavaEE应用:

/**

     * 指定一个现有的项目发布,方式一。

     * 以下情况下,默认支持容器的所有对象如:

     * request,session,application,

     */

    public static void main(String[] args) throws Exception {

       String webapp = "D:\\programfiles\\MyEclipse10\\wk3\\day04\\WebRoot";//声明项目所在的目录

       Server server = new Server(80);                                //声明端口

       WebAppContext context = new WebAppContext();                   //声明上下文对象

       context.setDescriptor(webapp + "/WEB-INF/web.xml");                //指定web.xml文件,可选

       context.setResourceBase(webapp);                               //设置项目路径

       context.setContextPath("/");                                   //设置上下文根,可以任意的值

       server.setHandler(context);                                    //设置句柄

       server.start();                                                //启动

       server.join();

    }

       也可以使用以下方式发布:

    /**

     * 指定一个现有的项目发布,方式二

     * @throws Exception

     */

    @Test

    public void jettyServer() throws Exception{

       String webapp = "D:\\programfiles\\MyEclipse10\\wk3\\day04\\WebRoot";

       Server server = new Server(80);

       WebAppContext context = new WebAppContext(webapp,"/abc");

       server.setHandler(context);

       server.start();

       server.join();

    }

 

http://www.genshuixue.com/i-cxy/p/11578496

分享到:
评论

相关推荐

    Jetty内嵌服务器实例

    在“Jetty内嵌服务器实例”中,我们可以学习到以下关键知识点: 1. **Jetty服务器基础**:了解Jetty的基本架构和功能,包括它如何处理HTTP请求和响应,以及如何加载和执行Servlet。 2. **内嵌Jetty的实现**:学习...

    jetty内嵌到java代码启动

    让我们深入探讨如何将Jetty内嵌到Java代码中,以及这一过程涉及的关键知识点。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,支持最新的Servlet规范,如Servlet 4.0。 - 它以其轻量级、模块化...

    jetty8+ 内嵌式启动运行demo

    压缩包文件`jettydemo`可能包含了一个完整的Jetty内嵌式运行的示例项目。这个项目可能包括了Java源代码、Web应用资源(如HTML、CSS、JavaScript文件)以及必要的配置文件。解压后,你可以通过阅读代码来理解如何设置...

    jetty内嵌实现

    在"jetty内嵌实现"的场景下,我们可以直接将Jetty集成到我们的Java应用中,避免了传统方式下需要将应用部署到独立的Web服务器(如Tomcat)的步骤。这种方式尤其适用于测试、开发环境,甚至小型生产环境,因为它简化...

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

    本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - Jetty是由Eclipse基金会维护的开源项目,它提供了HTTP服务器、Servlet容器和WebSocket服务器等功能。 - 与Tomcat等其他...

    使用jetty内嵌方式发布jsf的demo

    由于以前写了个jetty内嵌的服务器,需要在其上面添加JSF的东西 试了好久,终于调通了,拿出来给大家分享一下 本demo是使用jetty内嵌的方式发布的jsf的demo 整个demo是工程整个打包,包含所有的jar包,包括使用的...

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

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

    spring boot内置jetty

    使用 Spring Boot 内置的 Jetty 服务器,开发者可以轻松地实现一些基础功能,例如: 1. **文件上传下载**:Spring Boot 提供了 `MultipartFile` 类来处理文件上传,配合 `Controller` 层的接口,可以实现用户上传...

    jetty嵌入式实例

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,特别是作为嵌入式服务器使用。嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的...

    Eclipse+Maven创建webapp项目集成jetty服务器

    这篇博客“Eclipse+Maven创建webapp项目集成jetty服务器”将指导你如何将这些工具结合在一起,创建一个可以快速运行和调试的Web应用环境。 首先,让我们详细了解一下每个组件: 1. **Eclipse**:Eclipse是一款强大...

    在嵌入式jetty环境下运行struts2Annotation项目

    嵌入式Jetty允许我们将Jetty直接集成到应用程序中,无需单独部署或管理服务器进程。 2. **Struts2**:这是一个流行的MVC(Model-View-Controller)框架,用于构建Java Web应用程序。Struts2引入了Action类和注解,...

    Jetty中文手册

    内嵌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服务器与应用代码打包成...

    jetty-6.1.14包

    jetty-6.1.14包,应用程序内嵌服务器包

    Jetty 7.0 API 和 源文件解析

    - **HTTP服务器**:Jetty作为HTTP服务器,负责处理HTTP请求和响应,为Web应用提供基础服务。 - **Servlet容器**:Jetty也是一款Servlet容器,能够运行符合Servlet规范的Java Web应用。 - **内嵌式**:Jetty的一个...

    jetty-hightide-8.1.15.v20140411.zip

    4. **Embedding API**:Jetty提供了一组API,使得在Java应用程序中轻松地内嵌和控制Jetty服务器成为可能。 5. **Admin Console**:Hightide通常包括一个管理控制台,用于监控和管理Jetty服务器,包括查看日志、配置...

    jetty tools

    Jetty Tools是一个专门为Java开发人员设计的嵌入式Web服务器和HTTP服务器,它以其轻量级、高效和灵活的特点在IT行业中备受青睐。这个工具集允许开发者将Web服务器功能直接集成到他们的应用程序中,从而避免了传统...

    jetty 测试程序

    Jetty可以通过内嵌H2数据库,为Web应用程序提供数据存储服务。这通常涉及到配置一个`ServletContextHandler`,加载一个名为`DBServlet`的Servlet,该Servlet可以直接与H2数据库进行交互。 在测试Jetty程序时,你...

    基于jetty嵌入式容器的java性能分析工具,内嵌H2 database,以图表形式直观展.zip

    此外,使用Jetty作为嵌入式容器,意味着该工具可以直接与应用程序结合,而无需独立部署或配置服务器。这对于开发者来说是一种非常便捷的解决方案,尤其是在本地开发和调试环境中。Jetty的轻量级特性和低资源消耗也使...

    jsf-jetty:这是一个JSF Web项目,内嵌了Jetty服务器;

    通过这个"jsf-jetty"项目,开发者可以学习如何配置JSF和Jetty,理解如何将JSF的组件与Jetty的服务器环境整合,以及如何使用Maven管理项目依赖和构建流程。此外,这个项目也可以作为一个模板,用于快速搭建自己的JSF ...

Global site tag (gtag.js) - Google Analytics