用 Groovy+Jetty 快速实现 Web 异步编程

为什么要异步编程

在现在大规模高并发的 WEB 应用中,由于硬件及网络的限制,I/O 处理速度相当较慢,往往 成为 WEB 系统的性能瓶颈。Node.js 通过非阻塞的 IO 和事件驱动很好的缓解了 Web 服务器在高并发时的资源占用,极大 的提高了 WEB 服务器对高并发的处理能力。同时 Node.js 带来的轻量快捷的异步编程给 WEB 开发带来了一股清新的空气 。那么对于广大的 Java 开发者来说,是否可以实现类似的 WEB 开发呢,答案是肯定的。利用 Groovy 动态语言、Jetty 等轻量的 WEB 服务器,可以很方便的进行 WEB 的异步编程。

Groovy 简介

Groovy 是一个基于 Java 虚拟机 的动态语言。Groovy 代码能够与 Java 代码很好地结合。为 Java 开发者提供了现代流行的动态编程语言特性,而且学习 成本很低。目前最新的发布版本是 1.8. 我们下面示例的代码就是使用这一版本。

Jetty 简介

Jetty 是一个 用 Java 实现、开源、基于标准的,并且具有丰富功能的 HTTP 服务器和 Web 容器,可以免费的用于商业。现在已经有非 常多的成功产品基于 Jetty,比如 Apache Geromino、Eclipse、Google AppEngine 等。Jetty 可以用来作为一个传统的 Web 服务器,也可以作为一个动态的内容服务器,并且 Jetty 可以非常容易的嵌入到 Java 应用程序当中。目前最新版是 8.1. 我们下面示例的代码就是使用这一版本。

怎样使用 Jetty 快速开发轻量 WEB 服务

Jetty 可以非常方 便的嵌入到应用程序当中,就像使用一般的类库一样。示例代码如下:

清单 1. 用 Jetty 快速开发轻量 WEB 服务

class DefaultHandler extends AbstractHandler {
         void handle(String target, Request baseRequest,
         HttpServletRequest request,HttpServletResponse response) {
                  response.contentType = "text/html;charset=utf-8"
                  response.status = HttpServletResponse.SC_OK
                  baseRequest.handled = true
                  response.writer.println "<h1>Hello World!</h1>"
         }
 }
 Server server = new Server( 8080 )
 server.setHandler( new DefaultHandler() ) 

 server.start()
 server.join()

从代码我们可以看到先实例化一个 Server 对象,并指定 Server 监听的端口是 8080。然后为 Server 设定一个处理 Web 请求的 Handler,我们这里是 DefaultHandler,最后调用 start 方法启动 Server。这样一个 简单的 Web 服务器就可以使用了,只需要简单的几行代码。

在浏览器中访问 URL:http://localhost:8080,会得 到下面的响应 :

图 1. Web 页面响应

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索服务器
, server
, 高并发
, 代码
, jetty
, web server
, web编程
, jetty 空指针
, jetty http client
一个
jetty 异步servlet、jetty 异步、soapui的groovy编程、groovy 函数式编程、groovy编程语言,以便于您获取更多的相关知识。

时间: 2024-11-01 01:41:51

用 Groovy+Jetty 快速实现 Web 异步编程的相关文章

基于异步Servlet通过Java实现Web的异步编程

为什么要异步编程 在现在大规模高并发的 WEB 应用中,由于硬件及网络的限制,I/O 处理速度相当较慢,往往成为 WEB 系统的性能瓶颈.http://www.aliyun.com/zixun/aggregation/13375.html">Node.js 通过非阻塞的 IO 和事件驱动很好的缓解了 Web 服务器在高并发时的资源占用,极大的提高了 WEB 服务器对高并发的处理能力.同时 Node.js 带来的轻量快捷的异步编程给 WEB 开发带来了一股清新的空气.那么对于广大的 Java

[Java]如何提高Web服务端并发效率的异步编程技术?

[编者按]在Java里开发多线程最强有力的实践就是做服务端的并发处理,本文作者阐述了实施多线程的具体实践方法,要真的掌握某种技术你就必须要知其所以然.笔者转发至此,希望对Web开发者有所帮助. 全文如下: 作为一名Web工程师都希望自己做的Web应用能被越来越多的人使用,如果我们所做的Web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的Web应用能有更多人使用,我们就得提升Web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 给服

快速了解异步编程 RxJava

前言 前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式:并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和CompletableFuture:之后有同学在下面留言提到了RxJava,刚好最近在看微服务设计这本书,里面提到了响应式扩展(Reactive extensions,Rx),而RxJava是Rx在JVM上的实现,所有打算对RxJava进一步了解. RxJava简介 RxJava的官网地址:htt

Visual C#的Web XML编程

visual|web|xml|编程 由于XML的易共享性等众多优点,XML技术越来越多地被应用于企业数据处理等领域,如应用于企业报表.新闻发布.会计数据处理等等. XML正快速成为从中间层传送数据到桌面的工具,由于XML的数据可以通过中间层代理与多种后端(数据库)源集成,目前绝大多数数据库制造商已全面支持XML技术,提供了各种强大功能处理XML数据. Microsoft的.NET围绕XML这一核心提供了一个强大而快速的开发工具--C#,它具有前所未有的高开发效率,特别是在XML编程方面. C#提

C#编程总结(六)异步编程

1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程 计算机或查询数据库.异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个 操作时,应用程序可在异步方法执行其任务时继续执行. 2.同步与异步的区别 同步 (Synchronous):在执行某个操作时,应用程序必须等待该操作执行完成后才能继续执行. 异 步(Asynchronous):在执行某个操作时,应用程序可在异步操作执行时继续执行.实质:异步操作, 启动了新的线程,主线程与方法线程并行执行

浅谈.NET下的多线程和并行计算(十).NET异步编程模型基础 上

谈多线程谈到现在,我们要明确多线程的一个好处是可以进行并行的运算(充分利用多核处理器,对 于桌面应用程序来说就更重要一点了,没有WEB服务器,利用多核只能靠自己),还有一个好处就是异步 操作,就是我们可以让某个长时间的操作独立运行,不妨碍主线程继续进行一些计算,然后异步的去返回 结果(也可以不返回).前者能提高性能是因为能利用到多核,而后者能提高性能是因为能让CPU不在等 待中白白浪费,其实异步从广义上来说也可以理解为某种并行的运算.在之前的这么多例子中,我们大多 采用手工方式来新开线程,之前也

并发事件: 实现CLR异步编程模型

通常 I/O 操作的特点是速度慢.不可预见.当应用程序执行同步 I/O 操作时,基本上会放弃对正在 完成实际工作的设备的控制.例如,如果应用程序调用 StreamRead 方法从 FileStream 或 NetworkStream 读取某些字节,我们无法预计该方法需要多长时间才能返回.如果正在被读取的文件位于 本地硬盘上,那么 Read 操作可能会立即返回.如果存储文件的远程服务器脱机,则 Read 方法可能会等 待几分钟,然后超时并引发异常.在此期间,发出同步请求的线程会被占用.如果该线程是

探索Javascript异步编程

异步编程带来的问题在客户端Javascript中并不明显,但随着服务器端Javascript越来越广的被使用,大量的异步IO操作使得该问题变得明显.许多不同的方法都可以解决这个问题,本文讨论了一些方法,但并不深入.大家需要根据自己的情况选择一个适于自己的方法. 笔者在之前的一片博客中简单的讨论了Python和Javascript的异同,其实作为一种编程语言Javascript的异步编程是一个非常值得讨论的有趣话题. JavaScript 异步编程简介 回调函数和异步执行 所谓的异步指的是函数的调

8天玩转并行开发——第六天 异步编程模型

原文:8天玩转并行开发--第六天 异步编程模型             在.net里面异步编程模型由来已久,相信大家也知道Begin/End异步模式和事件异步模式,在task出现以后,这些东西都可以被task包装 起来,可能有人会问,这样做有什么好处,下面一一道来.   一: Begin/End模式 1: 委托     在执行委托方法的时候,我们常常会看到一个Invoke,同时也有一对你或许不常使用的BeginInvoke,EndInvoke方法对,当然Invoke方法 是阻塞主线程,而Begi