2016-12-14 59 views
0

更改GWT Servlet映射我正在更新使用GWT RPC服務器通信的傳統項目。原始項目在構建腳本中使用ant任務來將項目的版本號替換爲佔位符。我假設這個想法是允許版本號在一個地方更新,而不是在任何地方手動查找/替換。我遇到的問題是,如果我想用@RemoteServiceRelativePath我的服務給客戶端鏈接程序將無法正常工作。我可以使用構建腳本修改web.xml,但我不知道如何更新我的代碼中的註釋以匹配。我知道,有可能在與「setServiceEntryPoint」運行時修改ServiceDef但我想,以避免混亂,如果可能的。編譯時

舉個例子,如果我的web.xml的樣子:

<servlet> 
    <servlet-name>authBackendImpl</servlet-name> 
    <servlet-class>com.myproj.server.servlet.MyAuthBackendImpl</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>authBackendImpl</servlet-name> 
    <url-pattern>/mymodule/@version/authBackend</url-pattern> 
</servlet-mapping> 

我可以使用Ant構建一個替代的任務與實際數量以交換@version。問題是在我的服務接口:

@RemoteServiceRelativePath(value = "@version/authBackend") 
public interface MyAuthBackend extends RemoteService { 

} 

是否有某種方法來具有註釋值的變量定義?還是有一些其他解決方案我只是沒有看到?任何幫助將非常感激。

+0

爲什麼不能替換的代碼中的.java文件的方式你在web.xml中做到這一點?如果你已經轉移到Maven有一個過濾功能,但螞蟻也很容易管理它。 – stdunbar

回答

0

只有一個辦法,我想,它可以通過做,是要建立每一次的終點,你要連接到的服務。 當然,你可以通過它來包裝一些工廠類美化自己的代碼,但在簡單的方式它應該看上去象下面這樣:

AuthBackendImpl authService = GWT.create(AuthBackend.class); 
((ServiceDefTarget) authService).setServiceEntryPoint(String.format("/yourprojectname-SNAPSHOT/mymodule/%s/authBackend",version));