我正在努力更新使用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 build中使用replace任务来将@version与实际数字交换。问题出在我的服务界面中:
@RemoteServiceRelativePath(value = "@version/authBackend")
public interface MyAuthBackend extends RemoteService {
}
是否有某种方法可以为注释值定义变量?还是有其他解决方案,我只是没有看到?任何帮助将不胜感激。
答案 0 :(得分:0)
只有一种方式,我想,它可以完成,每次都设置终点,你将连接到服务。 当然,您可以通过将代码包装到某个工厂类来自己美化代码,但是以简单的方式它应该如下所示:
AuthBackendImpl authService = GWT.create(AuthBackend.class);
((ServiceDefTarget) authService).setServiceEntryPoint(String.format("/yourprojectname-SNAPSHOT/mymodule/%s/authBackend",version));