有人知道Java中类似于Node.js的Web服务器框架吗? 我意识到,在处理Web请求时具有非阻塞回调行为将需要Web服务器级别的深度支持。我对Node.js很感兴趣,但当我有一个最终会持久化数据的Web服务器时,我想利用Java提供的静态类型系统。然而,我希望能够实现非阻塞IO的可扩展性。
Grizzly可能是你正在寻找的东西。
此外,如果你有兴趣使用Servlet API(自3.0版本起也提供异步支持),那么了解到像Apache Tomcat 7和Oracle Glassfish 3这样的良好servlet容器也支持NIO(通常只是在内部利用Grizzly)可能会很有帮助。
我认为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)。
我曾经问过自己同样的问题,但是没有像应该做的那样四处搜索,而是看了一下如何编写一个框架来部署软件组件到nio服务器,类似于您可能将servlet和ejb部署到Java EE容器中的方式。如果有帮助的话,我已经在http://blog.maxant.co.uk/pebble/2011/05/22/1306092969466.html上发表了博客。
目前有两个主要的框架可供使用