【发布时间】:2013-01-02 14:57:48
【问题描述】:
我遇到了将大型 RPC 服务拆分为较小块的问题。我在这里找到了基础知识 GWT RPC - Multiple RPC Services Per App ,但我正在努力实现。我在任何地方都找不到任何好的指南。我对以下部分感到困惑。 (目标是将一个大型 RPC 拆分为两个较小的 RPC)
我在模块xml文件中创建了一个servlet类
在 web.xml 中,我创建了一个 servlet 和一个带有 2 个 servlet-url 的 servlet-mapping。第一个 servlet 是“主 servlet”,与模块 xml 文件中的相同。第二个是身份验证 servlet。
我有两个 servlet 的同步和异步接口,以及两个 servlet 的服务器端实现。
我使用 GWT.create() 在代码中创建 servlet。我可以毫无问题地调用“主 servlet”中的方法。但我不能在身份验证 servlet 中调用方法。当我尝试这个时,我收到以下错误:
[ERROR] [project] - 无法加载模块入口点类 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, like Gecko) Chrome/23.0.1271.97 Safari/537.11 加载模块“项目” ' 在 127.0.0.1:2588**
【问题讨论】:
-
请添加错误的其余部分(即“相关异常以获取详细信息”)。
-
已添加完整错误
-
你是否在从 RemoteService 扩展的所有类上声明了 @RemoteServiceRelativePath()?
-
这解决了我的问题,但现在我遇到了一个新问题。为了使上述链接中的想法起作用,我的“主 servlet”需要实现两个 servlet 的接口。但这意味着“主 servlet”仍然包含所有方法。这是我试图避免的主要事情。我能想到的唯一解决方案是实现两个接口并将调用重定向到第二个 servlet。但这并不是我对分离 rpc 的想法所期望的。