簡體   English   中英

在Java EE中使用協議緩沖區?

[英]Using Protocol Buffers in Java EE?

我已經編寫了一個在Java中使用協議緩沖區的服務器。 客戶使用PB與之對話。 我想將服務器代碼遷移到Java EE,並利用容器的內置功能(例如集群)。

我該如何獲得一項服務,以接收PB消息並正確解釋它們,然后對其進行處理?

我當時在想一種專用的servlet,但是該怎么做呢?

我是Java EE新手。 我對Java EE應用程序服務器還不夠熟悉,無法知道是否有辦法實現這一目標。

PS我正在尋找直接使用TLS套接字的解決方案。 這里不歡迎使用諸如HTTP之類的不會造成開銷的中間人協議。

PPS僅開放源代碼解決方案。

可悲的是,Java EE沒有提供向服務器添加新協議的標准方法。

它提供的一件事是能夠通過Java連接器體系結構打開ServerSocket的功能。 JCA相當復雜,但是幸運的是,馬克·傑弗里(Mark Jeffrey)先生編寫了一個名為JCA Sockets的連接器,它提供了一種簡單而通用的方法。 使用它,您可以編寫消息驅動的Bean ,只要在與ServerSocket建立連接時就會調用它們,並將生成的Socket傳遞給它們。 然后,您可以執行解碼和處理protobuf消息所需的任何操作。

如果您不願意這樣做,則可以直接打開ServerSocket 這違反了Java EE規則,但是大多數容器會讓您擺脫它。

如果您查看servlet類,他們建議應該構建支持任何類型協議而不只是HTTP的servlet(您認為應該可以創建自己的可擴展的servlet。 GenericServlet ,就像HttpServlet一樣。

但是,實際上這是不可能的,因為將在其上運行的Java EE服務器很可能僅支持標准HTTP Servlet。 沒有使Java EE服務器支持其他類型協議的servlet的標准方法。 因此,嘗試編寫自己的特定於協議的servlet並不是路要走。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM