2011-03-12 58 views
2

我有一個模塊B,它繼承模塊A.當我打電話RPC服務從A內部的內部RPC服務,他們的工作正常。但是,當我從B中的A調用服務時,RPC調用總是失敗。我錯過了什麼嗎?GWT:調用另一個模塊

在此先感謝您的幫助。

回答

3

我發現我的問題在這裏的答案:http://blog.cloudglow.com/2010/03/making-gwt-rpc-endpoint-independent-of.html

默認GWT RPC服務(Servlet的)端點@RemoteServiceRelativePath( 「some_name」),它解析爲/ module_base/some_name在運行在客戶端上。這種方法的問題是您的RPC端點現在綁定到GWT模塊。雖然這在某些情況下可能沒有問題,但這不符合我們的情況。因此這篇文章。

我們最終創建了一個RPC服務工廠類,該類將創建服務端點的靜態實例併爲其添加正確的端點;像這樣:

public class ServicesFactory 
{ 
public static final RPCServiceAsync RPCService = GWT.create(RPCService.class); 

static 
{ 
((ServiceDefTarget) RPCService).setServiceEntryPoint(GWT.getHostPageBaseURL() + RPCService.END_POINT); 
} 
} 
0

還有另一種解決方法。 只需爲每個新方法添加一個新的servlet映射。

<servlet-mapping> 
    <servlet-name>serverName</servlet-name> 
    <url-pattern>/Module1</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>serverName</servlet-name> 
    <url-pattern>/Module2</url-pattern> 
</servlet-mapping> 
相關問題