2009-04-09 50 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支持庫,使它成爲一個可嵌入的應用程序服務器。