Java的非阻塞IO Web服务器/框架

3

有人知道Java中类似于Node.js的Web服务器框架吗? 我意识到,在处理Web请求时具有非阻塞回调行为将需要Web服务器级别的深度支持。我对Node.js很感兴趣,但当我有一个最终会持久化数据的Web服务器时,我想利用Java提供的静态类型系统。然而,我希望能够实现非阻塞IO的可扩展性。

6个回答

2

Grizzly可能是你正在寻找的东西。

此外,如果你有兴趣使用Servlet API(自3.0版本起也提供异步支持),那么了解到像Apache Tomcat 7Oracle Glassfish 3这样的良好servlet容器也支持NIO(通常只是在内部利用Grizzly)可能会很有帮助。


1
也许你根本不需要它。越来越多的证据表明,“可扩展NIO”直到有大量客户端时才能真正发挥其优势。请记住,select()和friend是在计算单位为进程而不是线程的时代设计的。除非你打算从第一天开始就拥有数十万个连接,否则我肯定会先使用java.net进行构建,然后再进行评估。

你对Node.js有什么看法?你是在说任何非阻塞IO的好处直到很晚才出现吗?还是你只是在评论NIO? - SeekingNonblockingIo

1

Deft

特点

  • 专门为数千个同时连接进行优化和优化。 (C10k) (C500k)
  • 使用纯Java NIO (java.nio&java.nio.channels)
  • 异步(非阻塞I/O)

1

我认为Play!框架(请参见http://www.playframework.com/)是一个不错的选择。它支持Java和Scala开发。Play是建立在Netty之上(请参见http://netty.io/),而Netty本身是一个NIO(非阻塞IO)客户端-服务器框架。Play(和Netty)使用Futures(异步操作的结果/读取某个未来时间可能发生的某些事物的句柄)和Promises(可写Future)解决这个问题(请参见http://en.wikipedia.org/wiki/Futures_and_promises)。


0

我曾经问过自己同样的问题,但是没有像应该做的那样四处搜索,而是看了一下如何编写一个框架来部署软件组件到nio服务器,类似于您可能将servlet和ejb部署到Java EE容器中的方式。如果有帮助的话,我已经在http://blog.maxant.co.uk/pebble/2011/05/22/1306092969466.html上发表了博客。


0

目前有两个主要的框架可供使用

  1. Play
  2. Vert.x(最初被命名为node.x)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接