2009-04-09 48 views
4

我打算在Java中编写RPC服务器。服务器需要接受传入的RPC(可能通过HTTP)并回答它们。相当基本的东西。对“长轮询”或“悬挂”RPC的支持是没有必要的,所以一个请求线程模型应该是完全适合的。Java RPC服务器的框架

如果我是用Python写这个,我可能会使用像扭曲的框架。在C中,像glibc。在每种情况下,框架提供了处理IO的通用“选择循环”核心的实现,并调用处理它的更高级别的构造,最终导致我的应用程序被调用以接收RPC等事件。

这是因为我写在Java中任何实质性很长一段时间,虽然如此,我不知道是什么技术状态或建议的解决方案是这样的事情。可能甚至有我可以轻松使用的标准库的一部分来做到这一点。因此,我的问题StackOverflow:那里有什么框架适合这样的任务吗?

注意的是,虽然我可以使用HTTP的RPC的,这显然不是一个Web应用程序 - 正因为如此,Web框架是不合适的。

回答

4

Apache MINA是一个设计得非常好异步非阻塞网络框架。它提供了读取和写入数据包数据的面向字节的访问。建立在它有一个过滤系统,其中可以添加额外的层,提供诸如面向行的文本解析,加密(通过TLS),压缩等东西。

PS:强烈推荐2.0版本系列,尽管它仍处于“里程碑式”的形式,它已被证明非常稳定,正在接近最终版本。

+0

这看起来不错。不过,如果有人想出更好的东西,我会认为它是''的答案。 ;) – 2009-04-09 11:42:04

+0

但有一个问题:它们提供的HTTP示例实现了HTTP协议本身,而API似乎只包含对代理HTTP的支持。你知道是否有内置或使用良好的MINA库来处理HTTP请求? – 2009-04-09 11:47:45

2

你有多种选择:

  • 辊与套接字编程现有的SDK自己的解决方案。
  • Java RMI,远程方法调用框架。
  • Java CORBA绑定不再被视为最新的。
  • Java Web Service框架非常复杂。看看Apache CXF和不同的J2EE产品。

然后你有不同的系统运行在HTTP传输上面,比如JSON/XML-RPC,你需要一个Web服务器。尽管你排除了它们。

3

你可以考虑使用一些东西Jetty码头的内部简单非常稳定,可以处理的连接相当愚蠢的数量。如果你实现了特定于码头的处理程序接口,你也可以使用所有的servlet和JSP支持库,使它成为一个可嵌入的应用程序服务器。