2011-01-26 62 views
2

我有一個關於GWT RPC和自制類的問題。GWT RPC如何發送任何對象

所以我創建類GWT像

public class B IsSerializable 
{ 
public B(){} 
private String b; 
public B(String b) 
{ 
this.b=b; 
} 

public String getB(){return this.b;} 

} 

我想發送的類到GWT的servlet。於是,我像一個

public class TestService extends RemoteServiceServlet{ 

    public String getServerReply(int a, B b) 
    { 
    return b.getB()+" and hello from server"; 
    } 
} 

servlet的創建方法,但我總是拋出的異常的方法的AsyncCallback像

public void onFailure(Throwable caught) { 

} 

所以我很困惑,問如何發送B級服務器?

我期待着您的意見

+0

它會如果您可以聲明傳遞給onFailure的異常,並且請發佈服務器日誌中的內容,則可以提供幫助。 – Michael 2011-01-26 19:16:38

+0

日誌沒有顯示什麼......它是空的:( – AndrewSmith 2011-01-26 19:35:34

回答

2

TestService的(客戶端):

public interface TestService extends RemoteService { 
    public B getString(); 
} 

TestServiceAsync(客戶端):

public interface TestServiceAsync { 
    public void getString(AsyncCallback<B> callback); 
} 

TestServiceImpl(服務器端);

public class TestServiceImpl extends RemoteServiceServlet implements TestService { 
    public B getString() { 
     return new B("Some String from the server"); 
    } 
} 

打出電話,並與消息做somethinbg:

TestServiceAsync service=(TestServiceAsync) GWT.create(TestService.class); 
AsyncCallback<B> callback=new AsyncCallback<B>() { 
    public void onFailure(Throwable caught) { 
     Window.alert(caught.toString()); 
    } 
    public void onSuccess(B result) { 
     Window.alert(result.getString());//Will show "Some String from the server" 
    } 
} 
service.getString(callback); 

需要三個文件,以使GWT-RPC的工作,2個接口(...服務和... ServiceAsync)上的客戶端和服務器上的1個類(... ServiceImpl)。

0

謝謝:)

我知道應該有2客戶端接口,所以我做到了...... 最後我成功發送,並得到了一個服務器回覆的事情是

A)我忘了實現客戶服務界面我的servlet(這樣的呼叫被阻)

B),我不得不改變我的型到客戶端一個

--Server side--

public String getServerReply(int a, com.mycompany.project.client.B b) 
{ return b.getB()+" and hello from server"; } 

這工作得很好:)但是我沒有檢查是getB()爲空,但第一步是做我成功希望:)