2013-07-05 86 views
0

我想知道是否有可能使用GWT的序列化程序。當使用GWT的rpc-機制時,GWT將客戶端上的對象序列化並對服務器上的對象進行反序列化。對於這種機制,你必須使用GWT的特殊servlet(RemoteServiceServlet)。但我想使用正常的HttpServlets,因此我必須自己序列化和反序列化對象。GWT:如何序列化對象

回答

2

您需要查看的所有代碼位於RemoteServiceServlet.java。重點關注processCall方法。

RPC.decodeRequest(payload, ...)將爲您提供一個RPCRequest對象,其中包含要調用的方法和反序列化的參數。

編碼響應重點在RPC.invokeAndEncodeResponse()RPC.encodeResponseForSuccess()方法。

將帖子

在客戶端這是值得看一看由RPC生成器生成的代理類,具體的YourService_Proxy.java文件。編譯項目後,生成的文件留在項目文件夾結構中的某個位置(但可以使用-gen表示該文件夾)。

有趣的代碼是在RemoteServiceProxy,看着createStreamWritter方法,你可以看到如何序列化你的對象。在createStreamReader中,您可以看到如何從服務器反序列化消息。

+0

謝謝馬諾洛。是否正確,我必須使用SerializationStreamFactory在客戶端解碼?我如何創建SerializationStreamFactory的實例? – Maxii

+0

編輯我的迴應,包括客戶端。 –

0

gwt-byte-serializer

SerializerInt ser = new Serializer(); 
ser.writeValue("test"); 
ser.writeValue(new int[]{5,1,6}); 

String buffer = ser.getBuffer(); 

SerializerInt des = new Serializer(buffer); 

des.readString() 
des.readIntegerArr()