2012-09-08 35 views
3

我正在開發一個將部署到GAE的GWT應用程序。我已經安裝了Google-Eclipse插件,該插件也拉下了GWT和GAE SDK。但是現在我坐下來思考事情,對於如何在本地機器上調試和運行應用程序,我感到非常困惑。GWT/GAE的調試和運行客戶端/服務器代碼應用

通常情況下,當我有一個Java Web應用程序(我將部署到Tomcat,我只是熟悉它),我的選項如下:

  • 創建我的應用程序遠程調試配置,部署WAR到我的本地Tomcat容器,但以這種方式,我可以從Eclipse內部調試它(設置斷點,通過服務器端代碼的步驟)
  • 只需將其部署到Tomcat容器,啓動瀏覽器http://localhost:8080/MyApp並開始在本地使用/手動測試應用程序

我要完成相同,但與GWT和GAE下,有這麼多的選擇,併成爲他們成倍更加混亂(以一個新人如我自己)當你一起配對他們在同一臺機器上:

最後,我希望能夠做到以下幾點:

  • 調試服務器應用程序,包括設置斷點,單步執行代碼,等等,在Eclipse的
  • 調試正確的客戶端應用程序,包括設置斷點,單步執行代碼等,從我的機器本地的Firebug或Chrome開發者工具等瀏覽器插件內部
  • 直接從Eclipse內部調試應用程序(包括設置斷點,單步執行代碼等)的應用程序(包括客戶端和服務器端代碼)
  • 同上(調試整個應用程序,客戶端和服務器從Eclipse內部,但服務器運行在不同的(遠程)機器上。通過這種方式,我可以在我的開發機器上的Eclipse實例內運行我的QA機器/環境時調試我的應用程序
  • 在本地運行應用程序並模擬生產;也就是說,部署後端到我的GAE應用開發服務器,然後打開瀏覽器並轉到正確的URL,因爲它提供了由當地GAE開發應用程序服務器

我覺得根訪問我的應用程序我的困惑源於GWT和GAE SDK都以所謂的「開發模式」運行,並且因爲它們處理不同的層(客戶端和服務器),所以它很難繞過我需要的設置/配置所需的能力根據需要將它們隔離開來,或者如果需要的話可以串聯測試。預先感謝您在這裏的任何幫助!

+0

發現這個:http://stackoverflow.com/questions/960670/why-when-starting-gwt-in-debug-mode-my-break-points-dont-break –

+0

我的答案有幫助嗎? – xybrek

回答

6

我會盡我所能回答你的問題。我最近繼承了GWT的代碼庫,並且使用了應用程序引擎,所以我會盡我所能。

首先,您的服務器端代碼由GWT SDK在Jetty Servlet容器中運行。您的客戶端代碼已編譯爲javascript,並在瀏覽器中運行。因此,您可以非常輕鬆地針對任何servlet服務器後端運行您的客戶端代碼。所以當你在'dev模式'下運行GAE時,你已經編譯了你的java,並且正在GAE dev servlet容器中運行一個帶有GWT入口點的servlet。

設置本地環境相當簡單。在eclipse中,您可以右鍵單擊您的項目並執行「運行方式」或「調試方式」。在「運行配置」和「調試配置」選項中,您會在名爲「Web應用程序」的列表中看到一個Google圖標。您應該創建一個配置文件來記住選項。

此配置爲您提供了一些選項。如果您有適當的GAE文件,則可以轉到「App Engine」選項卡併爲其配置選項。在'Sever'選項卡下,您有兩個選項。如果您選中「運行內置服務器」選項。 GWT將在您的Jetty容器中運行您的servlet,並運行GWT客戶端代碼服務器。如果不是,它將只運行客戶端代碼服務器,它允許您即時更改客戶端代碼,並在eclipse中調試客戶端代碼。 Eclipse會給你一個漂亮的URL,如下所示。

http://127.0.0.1:8888/index.jsp?gwt.codesvr=127.0.0.1:9997 

這實際上是兩個部分,和天氣您使用的是內置的碼頭servlet容器或不是,它會看起來是一樣的。

第一部分是http://127.0.0.1:8888/index.jsp - 這是您正在運行的servlet容器,它可以在tomcat,web-logic或GWT dev服務器或任何servlet容器上運行。

第二部分是?gwt.codesvr=127.0.0.1:9997 - 這是一些GWT神奇的是,在與瀏覽器GWT開發插件一起使用時,將允許您在運行時更改的客戶端代碼和調試JavaScript作爲在Eclipse的Java。

如果我只是在做客戶端代碼更改,我有時會用我們的開發服務器url替換http://127.0.0.1:8888/index.jsphttp://mydevserver:1234/myapp/index.jsp?gwt.codesvr=127.0.0.1:9997這使我可以在本地運行客戶端代碼服務器,而無需在本地運行服務器端代碼。請注意,我可以通過直接訪問dev servlet而不使用gwt.codesvr參數來訪問部署到開發者的客戶端代碼。

我希望這會有所幫助。如果您有任何疑問,我可以詳細說明其中的部分內容。

0

這個Google Eclipse Plugin應該讓你運行。它基本上是Eclipse的一個插件,它可以幫助您創建GWT + GAE應用程序(只需點擊幾下鼠標即可),然後就可以直接從Eclipse運行您的應用程序。

相關問題