2014-10-08 50 views
1

我想創建一個提供Web服務功能的Web服務器,使用GCM與Android設備進行通信,使用數據庫並且可能還有一些後臺工作要做。實現帶有數據庫,GCM和後臺線程的Java Web服務器

我目前不確定這樣的服務器的架構。 我知道如何創建一個簡單的Web服務,但沒有找到超出簡單的「Hello World」示例的教程或描述。據我所知,我可以使用@WebService批註創建一個類,並將其部署到e.G. Tomcat服務器將創建該類的至少一個實例,並將該類中的已註釋函數作爲Web服務提供。

現在我想知道如何最好地實現數據庫連接。據我所知,服務器會爲每個請求創建這個類的一個實例,一旦連接關閉,這個垃圾將被收集。由於Web服務器幾乎需要它提供的每個函數的數據庫,我認爲爲每個實例創建一個數據庫連接並不是一個好主意,而是使用全局連接來查詢數據庫。 從我發現到目前爲止,這可以通過注入一個類來處理數據庫連接作爲@Resource或@Singleton到Web服務類中來實現。 但是,這是做到這一點的正確方法?還是我太擔心,只是爲每個請求創建一個新的數據庫連接是好的?

然後我想發送GCM消息(使用HTML谷歌服務器的簡單的POST),所以我可能會創建一個控制器或經理類來處理這些請求。這也會作爲@Resource或@Singleton注入到Web服務類中嗎?

最後但並非最不重要的服務器可能需要做一些工作週期性,這將是某種後臺線程,這是獨立的Web服務正在接受的請求。在這裏,我對如何做到這一點感到茫然。 Web服務沒有我知道的main()方法,所以我不確定如何創建它。

任何人都可以給我一個關於如何設計這樣一個Web服務器的guick概述,或者可以指向我描述如何實現這一點的文檔? 到目前爲止,我發現的所有內容都是簡單的例子,並不包含像這樣的高級內容。

回答

0

好的,所以你有3個問題/問題。

  1. 如何創建一個WebService
  2. 如何管理數據庫連接
  3. 執行批處理過程

所有這一切,在相同的應用程序。首先,我建議你分成2個應用程序,一個用於消費(Web服務),另一個用於批處理,包括推送通知(IMHO)。但讓我們一次一步。

1. Webservice:這取決於你選擇的框架。我通常在Spring-MVC或Jersey之間作出選擇

2.如何管理數據庫連接查詢數據庫時,通常不想打開和關閉連接。你想要使用連接池。在連接池中,您將要求建立一個開放連接,並使用它,並在完成時釋放它。通常,應用程序服務器會管理連接池。如果你想手動管理連接,你必須使用單例來集中獲取和釋放。

3.執行批處理您可能應該使用單例管理批處理。這位工作經理將啓動在其他線程上的工作執行

不知道這是否回答您的問題/關注..請讓我知道。

+0

我知道很熱,創建一個Web服務。正在使用在NetBeans中創建的JAX-WS服務器。我想知道的是如何獲得數據庫連接以及後臺工作人員。推送通知不能在另一個應用程序中,因爲它們是來自android設備的Web服務調用的直接結果。 – 2014-10-09 19:03:44

+0

澄清一點:Android設備應該能夠連接到Web服務,我需要數據庫來處理帳戶和一些數據,然後服務器通知其他Android設備發生了一些事情。爲了舉例,假設我想用android設備登錄一個帳戶(如果用戶有效,那麼檢查數據庫),然後向服務器發送消息,服務器查找數據庫中的其他設備,然後發送GCM對於這些,消息是可用的。 – 2014-10-09 19:04:29

0

劉某,

,我發現自己在一個類似scenario。在瀏覽網頁超過2天之後,我偶然發現了運行後臺線程的解決方案,該後臺線程在初始化servlet期間觸發(init方法)。

也許你可以給這個鏡頭,讓我知道它是否適合你。

下面是它有一個例子來嘗試鏈接 - http://docstore.mik.ua/orelly/java-ent/servlet/ch03_05.htm

乾杯!