2

我遇到了将大型 RPC 服务拆分为较小块的问题。我在这里找到了基础知识GWT RPC - Multiple RPC Services Per App,但我正在努力实现。我在任何地方都找不到任何好的指南。我对以下部分感到困惑。(目标是将一个大型 RPC 拆分为两个较小的 RPC)

  1. 我在模块 xml 文件中创建了一个 servlet 类

  2. 在 web.xml 中,我创建了一个 servlet 和一个带有 2 个 servlet-url 的 servlet-mapping。第一个 servlet 是“主 servlet”,与模块 xml 文件中的相同。第二个是身份验证 servlet。

  3. 我有两个 servlet 的同步和异步接口,以及两个 servlet 的服务器端实现。

  4. 我使用 GWT.create() 在代码中创建 servlet。我可以毫无问题地调用“主 servlet”中的方法。但我不能在身份验证 servlet 中调用方法。当我尝试这个时,我收到以下错误:

[错误] [项目] - 无法加载模块入口点类 com.projects.client.Project(有关详细信息,请参阅相关异常)

com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException: Service implementation URL not specified
at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430)
at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.java:368)
at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy$ServiceHelper.finish(RemoteServiceProxy.java:74)
at com.projects.client.AuthService_Proxy.signIn(AuthService_Proxy.java:44)
at com.projects.client.Authentication.signIn(Authentication.java:38)
at com.projects.client.Project.onModuleLoad(Project.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)

15:48:13.877 [错误] [项目] 无法从用户代理“Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.11(KHTML,如 Gecko)Chrome/23.0.1271.97 Safari/537.11”在 127.0 加载模块“项目” .0.1:2588**

4

1 回答 1

2

从您的链接:

I believe I'd have to make a new servlet for each one.

不必要。

也就是说,是的,您可以只为所有接口使用一个 servlet,但这不是必需的。您当然可能只有一个实现所有给定接口的 servlet,但只要每个 RPC 接口都有一个@RemoteServiceRelativePath指向不同 URLweb.xml的指向它的那个接口。

于 2013-01-02T17:13:20.607 回答