2013-10-07 29 views
1

我想在我的GWT應用程序中使用Solrj庫。我做了一個GWT服務器類來與Solrj客戶端進行通信。我的客戶端代碼從服務器類獲取Collection<FacetField>並構建UI。在客戶端使用外部庫類:GWT

我的問題是,GWT抱怨缺少的源代碼:

No source code is available for type org.apache.solr.client.solrj.response.FacetField; did you forget to inherit a required module? 

我可以創建Solrj額外的模塊,然後將GWT編譯成JS。但它會編譯許多其他類,我可能永遠不會在客戶端上使用。

另一種方法是編寫一些Solr類的包裝並將它們傳遞給客戶端。但我不確定,因爲這些包裝會導入Solr類,我可能會再次遇到同樣的問題。

解決此問題的最佳方法是什麼?

+0

你想從客戶端*使用SolrJ *?你爲什麼想要這樣做,而不是使用通常的GWT-RPC? – chrylis

+0

不,不。我使用RPC來調用服務器類,它本身調用Solrj庫。這只是客戶得到'收集'並抱怨 – damluar

+3

是的包裝不會幫助。你必須使用源代碼。但是你可能會遇到另外一個問題,就是GWT規則可以序列化FacetField嗎?我會遵循@suresh的建議 – Piro

回答

1

寫一些DataLorry(虛擬對象)中DataLorry對象

server|| FacetField obj==>DataLorry obj==> client. 

沖洗所需的數據。

即使您只在網絡上傳遞所需的數據,也可以節省客戶端和服務器之間的大量數據流量。

請確保對象是serializableshared包。

+0

所以這個虛擬類不應該是FacetField的包裝,並且不應該知道FacetField類的任何內容,它是正確的嗎? – damluar

+0

@damluar是。您需要將所需的數據從'FacetField'傳遞到您的Dummy對象。這樣我就能獨立了。 –

+0

好的,我明白了。如果不會很快提出其他答案,我會接受你的答案。謝謝! – damluar