Java GWT RPC-多个RPC服务

Java GWT RPC-多个RPC服务,java,gwt,servlets,rpc,Java,Gwt,Servlets,Rpc,我遇到了将大型RPC服务拆分为较小的块的问题。我在这里找到了基础知识,但我正在努力实现。我在任何地方都找不到好的导游。我对下面的部分感到困惑。(目标是将一个大型RPC拆分为两个较小的RPC) 我在模块xml文件中创建了一个servlet类 在web.xml中,我创建了一个servlet和一个带有2个servlet URL的servlet映射。第一个servlet是“主servlet”,与模块xml文件中的servlet相同。第二个是身份验证servlet 我为这两个servlet提供了一个同步和

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

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

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

  • 我为这两个servlet提供了一个同步和异步接口,并为这两个servlet提供了一个服务器端实现

  • 我使用GWT.create()在代码中创建servlet。我可以毫无问题地调用“主servlet”中的方法。但是我不能在身份验证servlet中调用方法。当我尝试此操作时,会出现以下错误:

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

    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加载模块“项目”**

    从您的链接:

    不一定


    也就是说,是的,您可以为所有接口使用一个servlet,但这不是必需的。当然,您可能只有一个servlet实现所有给定接口,但只要每个RPC接口都有一个指向不同URL的
    @RemoteServiceRelativePath
    ,并且每个URL在
    web.xml
    中映射到不同的servlet,每个Servlet只需实现指向它的一个接口。

    请添加其余错误(即“关联的异常以获取详细信息”)。已添加完整错误。您是否在从RemoteService扩展的所有类上声明了@RemoteServiceRelativePath()?这解决了我的问题,但现在我遇到了一个新问题。为了实现上面链接中的想法,我的“主servlet”需要实现两个servlet的接口。但这意味着“主servlet”中仍然包含所有方法。这是我试图避免的主要事情。我能想到的唯一解决方案是实现两个接口并将调用重定向到第二个servlet。但这并不是我从分离rpc的想法中所期望的。正确-否则,每个人如何知道在服务器上点击哪个URL来发送和接收数据?调用
    setServiceEntryPoint(String)
    是另一个选项,而不是将
    @RemoteServiceRelativePath
    添加到RPC接口-两者都实现了相同的基本目标。
    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)
    
    I believe I'd have to make a new servlet for each one.