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

jetty服务器--嵌入式环境使用

阅读更多
jetty服务器是十分优秀的java web应用服务器,支持的java的 jsp和 servlet标准,跟tomcat一样很受欢迎,,另外jetty更轻量一些,允许将jetty嵌入到程序中执行,在某些场景下十分有用。

jetty嵌入式环境的使用

内置jetty服务器
package com.gbcom.frame.jetty.demo;


import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

/**
 * 创建服务器:
 * 启动服务,通过浏览器访问: http://localhost:8888/index 和 http://localhost:8888/hello
 * 
 * 
 * mvn 参考:2.0. 添加依赖

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty.aggregate</groupId>
      <artifactId>jetty-all</artifactId>
      <version>7.6.9.v20130131</version>
    </dependency>

如果在应用中使用到jsp的话需要添加jetty-jsp依赖,在jetty-all中并为聚合jetty-jsp模块。

 * @author SYZ
 * @date 2016-2-23 上午09:54:01
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.EmbedJettyServer
 */
public class EmbedJettyServer {

  public static void main(String[] args) throws Exception {
    // 创建Server
    Server server = new Server();

    // 添加ThreadPool
    QueuedThreadPool queuedThreadPool = new QueuedThreadPool();
    queuedThreadPool.setName("queuedTreadPool");
    queuedThreadPool.setMinThreads(10);
    queuedThreadPool.setMaxThreads(200);

    server.setThreadPool(queuedThreadPool);

    // 添加Connector
    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(8888);
    connector.setAcceptors(4);
    connector.setMaxBuffers(2048);
    connector.setMaxIdleTime(10000);

    server.addConnector(connector);

    // 添加Handler
    ContextHandlerCollection context = new ContextHandlerCollection();
    ContextHandler contextHandler = context.addContext("/", "/");
    contextHandler.setHandler(new DispatchHandler());

    Handler defaults = new DefaultHandler();

    HandlerCollection collection = new HandlerCollection();
    collection.setHandlers(new Handler[] { context, defaults });

    server.setHandler(collection);

    // 启动服务
    server.start();
    while (server.isStarted()) {
      System.out.println("server starting...");
      break;
    }
    System.out.println("server stared...");
    System.out.println("ContextHandlerCollectio.getServer() = "
        + context.getServer().hashCode());
    System.out.println("Server:" + server.hashCode());
    server.join();
  }
}



分发器:DispatchHandler
package com.gbcom.frame.jetty.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * 编写分发处理类DispatchHandler
 * 
 * @author SYZ
 * @date 2016-2-23 上午09:54:34
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.DispatchHandler
 */
public class DispatchHandler extends AbstractHandler {

  public void handle(String target, Request baseRequest,
      HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

    /**
     * 这里将是根据不同的请求来分发给不同的Handler来处理
     */
    if (target.equals("/index")) {
      new IndexHandler().handle(target, baseRequest, request, response);
    } else {
      new HelloHandler().handle(target, baseRequest, request, response);
    }
  }
}


业务处理
package com.gbcom.frame.jetty.demo;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * 编写相应的Handler(IndexHandler和HelloHandler)
 * 
 * @author SYZ
 * @date 2016-2-23 上午09:54:45
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.IndexHandler
 */
public class IndexHandler extends AbstractHandler {

	  @Override
	  public void handle(String target, Request baseRequest,
	      HttpServletRequest request, HttpServletResponse response)
	      throws IOException, ServletException {

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

	    PrintWriter out = response.getWriter();
	    out.write("<h3>Hello World Jetty!</h3>");
	    out.write(Calendar.getInstance().getTime().toString());
	    out.flush();
	    out.close();
	    
	    System.out.println("process http success!!!!");
	  }


	}


package com.gbcom.frame.jetty.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
/**
 * 编写相应的Handler(IndexHandler和HelloHandler)
 * @author SYZ
 * @date 2016-2-23 上午09:54:55
 * @version 1.0.0
 * @see com.gbcom.frame.jetty.demo.HelloHandler
 */
public class HelloHandler extends AbstractHandler {

	  public void handle(String target, Request baseRequest,
	      HttpServletRequest request, HttpServletResponse response)
	      throws IOException, ServletException {

	    response.setContentType("text/html;charset=UTF-8");
	    PrintWriter out = response.getWriter();
	    out.write("<h3>This is a HelloHandler and contextPath is '/hello'.</h3>");
	    out.flush();
	    out.close();
	  }
	}



分享到:
评论

相关推荐

    maven集成jetty所需jar包maven-jetty-plugin,多版本

    它允许开发者在开发环境中快速启动Jetty服务器,自动部署项目,并且能够随着代码的修改实时热加载,大大提升了开发效率。 3. Maven-Jetty-Plugin的使用: 要在Maven项目中使用`maven-jetty-plugin`,首先需要在...

    jetty-distribution-9.4.12.v20180830

    - **嵌入式使用**:Jetty更常用于嵌入到其他应用中,而Tomcat更多作为独立的服务器使用。 - **配置复杂度**:Jetty的配置相对简单,而Tomcat的配置可能更复杂,尤其是对于大型企业应用。 - **社区支持**:Tomcat...

    jetty服务器 jetty-distribution-7.3.0.v20110203

    综上所述,Jetty服务器7.3.0.v20110203版本是一个功能强大且灵活的Web服务器,尤其适合对性能有高要求、资源有限的环境。其丰富的特性使其在开发和部署Java Web应用时具有显著优势。通过了解和掌握这些知识点,...

    jetty-6.1.26.zip

    总的来说,Jetty 6.1.26虽然相对较老,但它体现了Jetty服务器的核心设计理念和优势,如轻量级、高性能和灵活性。尽管现代开发可能更倾向于使用更新的版本,但对于了解Jetty的历史和原理,以及在某些场景下部署旧项目...

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

    - Jetty提供了一系列的工具和命令行工具,如`jetty-start.jar`,用于快速启动和配置Jetty服务器。 - `jetty-maven-plugin`可以集成到Maven项目中,便于开发和测试。 6. **示例代码** ```java Server server = ...

    jetty嵌入式服务器必须的jar包

    jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...

    jetty-distribution-9.2.29.v20191105.zip

    2. **嵌入式部署**:Jetty的一个显著特点是它可以被轻松地嵌入到其他Java应用中,无需独立的服务器进程。这使得开发者能够更加灵活地控制Web服务的启动和停止,便于集成到现有的系统架构中。 3. **HTTP/2支持**:...

    Android-I-Jetty服务器

    本文将详细介绍Jetty服务器以及如何在Android平台上集成和使用它。 ### 1. Jetty简介 Jetty是一款开源的、高性能的Java Web服务器和Servlet容器,由Eclipse基金会维护。它支持HTTP、HTTPS、WebSocket等协议,并且...

    jetty.project-jetty-9.4.35.v20201120.rar

    Jetty作为一个Servlet容器,提供了快速、稳定且可嵌入的特性,开发者可以直接将Jetty服务器与应用程序打包在一起,无需额外的服务器部署步骤。 Jetty 9.4.35是该系列的一个稳定版本,修复了之前版本的一些已知问题...

    jetty-distribution-9.0.6.v20130930

    - **命令行工具**:提供了一系列的命令行工具,如`jetty-start.jar`,用于启动、停止和管理Jetty服务器。 - **JMX支持**:通过JMX(Java Management Extensions),可以远程监控和管理Jetty实例。 5. **扩展与...

    jetty-distribution-9.4.31.v20200723_安装包.rar

    5. **嵌入式使用**:Jetty可以很容易地被嵌入到其他Java应用程序中,无需额外的服务器进程,这对于微服务架构尤其有用。 6. **配置灵活性**:Jetty的配置非常灵活,可以通过XML或Java代码进行,这使得开发者可以...

    cometd-archetype-spring-dojo-jetty7-2.8.0-RC1.zip

    Jetty 7是一个轻量级的Java Web服务器和Servlet容器,适合小型和嵌入式应用,它的性能优秀且易于配置。 【描述】中的"sshoogr-gradle.zip" 描述了一个Gradle插件,用于管理和操作远程SSH服务器。Gradle是一个强大的...

    jetty-distribution-9.3.12.v20160915.tar.gz

    1. **bin**:包含启动和停止Jetty服务器的脚本,如`start.jar`和`jetty.sh`,它们允许你在不同操作系统上轻松管理Jetty实例。 2. **lib**:存放Jetty服务器自身及其依赖的JAR文件,这些文件支持Jetty的核心功能和...

    jetty-distribution-7.6.17.v20150415

    这个版本包含了Jetty服务器的所有组件和必要的配置文件,使得用户可以直接使用而无需从源代码编译。 在Jetty 7.6.x系列中,重点在于提供稳定的服务器平台,支持Servlet 3.0规范,该规范引入了许多新特性,如异步...

    嵌入式jetty服务器开发所有的依赖jar包

    嵌入式Jetty服务器开发是Java应用程序中常用的一种轻量级Web服务器实现,它允许开发者在无需外部服务器的情况下,直接将Web服务功能嵌入到应用中。本压缩包提供了进行嵌入式Jetty开发所需的所有关键依赖jar包,极大...

    jetty-distribution-9.4.31.v20200723.zip

    - **启动与停止**:通过执行`start.jar`可以启动Jetty服务器,配置文件通常位于`etc`目录下,可以通过修改这些配置文件来定制服务器行为。 - **Web应用部署**:将WAR文件放入`webapps`目录下,Jetty会自动检测并...

    jetty-distribution-9.4.3

    这个发行版包含了运行Jetty服务器所需的所有组件和配置文件,使得用户可以快速搭建和管理Web服务。 在Jetty 9.4.3版本中,有以下几个关键知识点: 1. **模块化设计**:Jetty的核心特性之一是其模块化的架构,允许...

    jetty6.1.6-1

    4. **启动Jetty**:通过执行特定的启动脚本或Java命令来启动Jetty服务器。 5. **部署应用**:将你的Web应用程序(通常是WAR文件)放入Jetty的webapps目录下,Jetty会自动检测并部署应用。 6. **监控和调试**:使用...

    实战 Jetty--让你快速速学会jetty

    这使得Jetty成为一个理想的嵌入式Web服务器选择,可以在各种复杂的应用环境中扮演关键角色。 部署Jetty应用程序非常直观。通常,将WAR包放置在Jetty的Webapps目录下,然后通过运行`java -jar start.jar`启动服务器...

    jetty 8及依赖包

    Jetty 8在设计时特别强调了性能和可扩展性,它使用了Java NIO(New I/O)API来处理网络通信,相比于传统的基于BIO( Blocking I/O)的服务器,NIO能更好地处理高并发场景。NIO允许单个线程服务多个连接,通过选择器...

Global site tag (gtag.js) - Google Analytics