2012-06-22 78 views
2

我讀過一些在互聯網上的文章,這是不可能的。從GWT應用程序傳遞位於其他服務器上的自己的SQL數據庫。碼頭不允許它。如何從GWT訪問SQL數據庫?

我發現了一個如何執行它的方法,但它不是很舒適。我在GWT內部有客戶端和服務器部分。服務器必須與本地主機上的MySQL數據庫進行通信。所以我寫了一個ant腳本來構建一個可以在Apache Tomcat服務器上啓動的戰爭。它在那裏完美的工作,但我無法有效地調試代碼。

您是否有一些建議如何執行此任務?我正在考慮只在GWT中編寫客戶端程序,並找到一些如何與GWT外部編寫的服務器進行通信。我已經找到了GWT的Apache Thrift,但是這個編輯過的節儉庫似乎不能正常工作。

非常感謝你對你的答案:)

+0

「碼頭不允許。」我想你是在談論GWT的DevMode中的嵌入式服務器。在這種情況下,您可能錯誤地在Eclipse中啓用了「App Engine」(這實際上限制了您可以在服務器端執行的操作,以模仿Google託管的實際限制)。 –

+0

不:)不可能。我有服務器端的GWT,這個必須與MySQL數據庫進行通信。問題是Jetty(GWT的應用程序服務器)拒絕連接到自己的數據庫。 – Reshi

+0

所以它通常工作正常,如果我禁用此選項? – Reshi

回答

2

有可能與GWT應用程序數據庫進行通信。客戶端必須通過GWT-RPC調用服務器的方法,該方法可以與任何數據庫進行通信。

也許Jetty不支持它(沒有親自測試過),但是您也可以使用Apache開發您的Web應用程序。您可以像訪問任何Web應用程序一樣訪問數據庫:

您將需要mysql-connector-java-5.1.20-bin.jar文件(可從http://dev.mysql.com/downloads/connector/j/下載),然後重新啓動添加到$CATALINA_HOME/common/lib目錄的服務器。

或者添加到您的Web應用程序的WEB-INF/lib文件夾中。

您可以在線找到關於如何使用Tomcat而不是Jetty開發應用程序的教程。例如:https://wiki.auckland.ac.nz/display/BeSTGRID/Deploying+GWT+to+Tomcat+in+Eclipse

0

Reshi,停下來思考應用程序的真正工作方式。沒有人用javascript來提供網頁來讀/寫數據庫,這將是瘋狂的和不安全的。在這種情況下,服務器總是處於所有通信的中間。您需要創建在您的服務器內部運行的服務,其中一個服務將成爲數據庫層。

Javascript無法創建網絡連接並讀取/寫入二進制數據,因此嘗試讓gwt編譯器編譯任何jdbc drvier等將是瘋狂的。

+0

我知道我無法直接從客戶端訪問數據庫:)我在GWT中的項目有一個GWT客戶端端和GWT服務器。 – Reshi

+0

我想從GWT應用程序的服務器部分訪問MySQL數據庫,但Jetty(內置應用程序服務器)拒絕連接到MySQL數據庫。而且我讀到,無法從Jetty下的GWT服務器訪問自己的數據庫服務器。唯一的方法是使用Google的DataSource。現在我正在以這種方式工作:每次我需要在我的項目中測試某些東西時,我都會構建自己的.war文件。並將其部署到Tomcat中。 – Reshi

+0

但是如果我必須每小時做6次,那就很多了。所以我試圖找到一些不同的方式如何使用Jetty從GWT訪問數據庫或不使用Jetty(無關緊要)。 – Reshi

0

Jetty不會阻止我們連接到數據庫。你所要做的就是遵循MVP模型的方式。儘管MVP對所有障礙都是更好的選擇,但在最小的點上,您將不得不嘗試在客戶端軟件包上不使用SQL代碼。