2015-12-02 139 views
1

我有一個用C++/C#和數據庫編寫的客戶端軟件。現在我不希望客戶端直接訪問數據庫,所以我考慮將應用程序服務器放在中間。這個應該從客戶端獲得一個簡短的請求,向數據庫詢問新的數據,做一些過濾(不能在sql中完成),然後將數據返回給客戶端。沒有HTTP的Java應用服務器

我對這種軟件的搜索把我帶到了Glassfish或Tomcat,但是我的理解問題是,他們總是想用html/jsp來談談http。因爲我的大部分數據都是經過加密的,所以我不需要這樣的純文本協議,並且只需要一個字節流就可以完全滿意。 另一方面,讓服務器爲我處理線程池會不錯(不想從頭開始實現)。

經過一天多的搜索/測試,我比開始時更加困惑(ejb,beans,servlet,websocket,...在理解最簡單的教程之前google了很多東西)。

TL; DR:我如何讓Tomcat/Glassfish打開一個套接字併爲每個請求創建一個新線程,而不涉及任何HTML/CSS/JSP?

+0

如果您使用寧靜的Web服務,則可以在客戶端和服務器之間傳遞參數。這更符合您的計劃方法。一個好的開始是https://spring.io/guides/gs/rest-service/。使用彈簧配置,您可以設置和配置大部分資源。有很多可用的例子。 –

+1

簡而言之:除非大量濫用Tomcat,否則不要這樣做。 HTTP是Tomcat想要談論的最低級協議。使用HTTP並從servlet返回二進制數據有什麼問題? –

+0

你不需要任何HTML,CSS,JSP。只寫一個簡單的servlet來查詢數據庫並以XML,JSON或純文本形式返回結果。或重新發明輪子並編寫自己的協議。但是,你根本不需要應用程序服務器。一個簡單的字節流是不夠的。您需要傳遞一些參數並以客戶所理解的結構化格式返回結果。所以至少你必須實現一些基本的協議。 – vanje

回答

0

Jetty和Tomcat是所謂的servlet容器,因此主要針對HTTP交換。 Glassfish是一個應用服務器,它使用一個servlet容器作爲其模塊之一。我會停止這個方向的思考 - 這更像是Web應用程序和Web服務 - 某些級別太高,你要求。

我認爲你應該更多地研究一下。像Netty這是一個「高性能協議」服務器。看看文檔here(甚至有些可能適合你的用例的教程)。

0

GlassFish是一款面向Java EJB規範的「企業應用服務器」。你的目的肯定會過度。你可以試試Tomcat。它是一個「servlet容器」,以Java Servlet規範爲目標。 Servlet有一個目的:通常通過HTTP監聽傳入的URL(請求),執行Java代碼並返回響應。

當然,您可以自己創建(純文本)ServerSocket,例如使用ServletContextListener(將在應用程序啓動後啓動)。但是你應該選擇更高的協議來發送數據,比如Hessian and Burlap,這個數據同時在Java和C++以及easy to set up中實現。