2012-05-04 77 views
0

我爲我的服務器使用了NetBeans for IDE和GlassFish 3.1.2。從單獨的GWT客戶端訪問GWT Servlet

我寫了一個簡單的GWT項目(GWTServer),它提供了一個名爲GWTService的GWT RPC服務(所有服務都是對傳入並返回的內容進行字符串形式化)。我寫了一個SEPERATE客戶端項目(GWTClient),我想訪問服務器GWT RPC服務。 NetBeans在GWTServer中生成了一些可用於訪問RPC服務的客戶端代碼。

我的服務器GWT項目部署在glassfish上,可通過「localhost:8080/GWTServer」訪問。

我有做了幾件事情,我需要做這項工作的問題:

首先,GWTServer有幾個生成的類,我需要在GWTClient使用的。這些類是GWTService和GWTServiceAsync。我需要(最好)讓IDE將它們編譯成一個我可以包含在GWTClient中的jar文件。我已經嘗試創建一個java庫項目,將這2個java文件複製到庫中,並在GWTClient中包含該庫,但是這給了我一個錯誤:「沒有源代碼可用於類型org.gwtserver.client.GWTServiceAsync;你忘了繼承所需的模塊嗎?「

其次,在客戶端項目的某個地方,我需要指定servlet的url(類似http://localhost:8080/GWTServer/ gwtservice)。基本上,需要設置環境,以便在我調用GWT.create(GWTService.class)時它可以工作。

大概我可以在客戶端項目的.xml配置文件中設置此連接。但我不知道如何做到這一點。我不知道是否需要在服務器端對servlet定義進行更改。

服務器端的web.xml中指定該servlet如下:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <servlet> 
     <servlet-name>GWTService</servlet-name> 
     <servlet-class>org.gwtserver.server.GWTServiceImpl</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>GWTService</servlet-name> 
     <url-pattern>/org.gwtserver.Server/gwtservice</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>welcomeGWT.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

我需要了解什麼,我需要在客戶端GWT應用程序做與現有的servlet進行通信。

回答

0

爲了讓GWT客戶端成功與GWT服務進行交互,他們必須同時將必須編譯在一起,並且出於安全原因必須託管在同一主機上。您不能構建自己的GWT客戶端,以訪問在不同時間編譯的現有GWT服務。

不過,您的問題實際上是與此分開的。您無法從GWT客戶端訪問jar,因爲它要求源代碼位於您的源文件夾中。因此你的No source code is available錯誤。一旦你解決了這個問題,你會看到:Module needs to be (re)compiled,由於我在第一段中提到的原因,你將無法解決這個問題。