天天看点

快速学习Jetty-Jetty的高级运用

异步Servlet

异步 Servlet 是 Servlet3.0 出来的新特性
  • 应用场景:在并发量较大的情况下,若一个 Servlet 处理较慢,则会导致所有 Servlet 需要排队等待之前的 Servlet 线程处理完成后才能继续执行。
  • 在加入了异步 Servlet 之后,可以在处理时间较长的 Servlet 中增加单独的工作线程专门处理该业务,然后 Servlet 线程继续处理其他的 Servlet 请求。
嵌入式服务器
  • Jetty 有一个口号:不要把应用部署到 Jetty 上,要把 Jetty 部署到你的应用里。这句话的意思是把应用打成一个 war 包部署到
  • Jetty 上,不如将 Jetty 作为应用的一个组件。换种说法,用嵌入式的方式使用 Jetty,就意味着把 HTTP 模块放到你的应用里,使用这种方式,既降低了我们部署的复杂度,也可以让我们的一个普通应用快速的拥有 HTTP 服务的功能。

将Jetty嵌入项目

创建嵌入式应用的步骤:
  1. 导入 maven 依赖
  2. 创建启动程序
  3. 使用 maven 打包
  4. 运行解压后 bin 目录下的脚本
开发版引导程序创建步骤:
  1. 创建 Server 对象
  2. 创建 ServerConnector 对象,并传入 Server 对象

    2.1 设置服务端口

    2.2 设置重用地址为 false

  3. 将 connector 对象放入 server 中
  4. 创建 WebAppContext 对象,传入 webapp 和上下文路径

    4.1 设置 web.xml 文件路径

    4.2 设置项目跟路径

    4.3 设置类加载器

  5. 将 webAppContext 放入 server
  6. 启动 server
  7. 将 Server 加入当前线程
部署版引导程序创建步骤:
  1. 拿到当前的 war 文件路径
  2. 创建 webCtx 对象,设置 war 路径与上下文路径
  3. 获取到当前 war 文件所在的文件夹
  4. 创建一个临时的工作空间
  5. 将该临时空间设置到 webCtx
  6. 将当前的 webCtx 设置到 server 的 handler 中