【问题标题】:RPC is not workingRPC 不工作
【发布时间】:2012-03-01 13:47:02
【问题描述】:

我是 gwt 的新手,正在尝试实现 RPC。

点击主页按钮

  public void onClick(ClickEvent event) {

    /*  1.*/    cService.getRepositories(repocallback);
    //  2.  fService.getRepositories(repocallback);

        }
    });

第一个工作正常。

   (HomePage.java:195) 2012-03-01 14:29:45,988 [FATAL] Uncaught Exception:
 com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in     UmbrellaException#getCauses
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection     (BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at com.client.GUI.HomePage$7.onClick(HomePage.java:195)
at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:54)
at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1)
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)
at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)
at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)
at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)
at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)

当我评论第 1 条并尝试使用第 2 条时,它给了我错误。

最初我在服务器端的一个类中编写了所有方法。现在我正在制作不同的类并添加它们应该与它们相关的方法。

在服务器端 第一类用于连接:工作正常

2 类用于具有删除更新添加方法的文件夹。

这两个类都扩展了 RemoteServiceServlet。

我不知道我是否必须在 web.xml 上添加一些东西,如果有两个带有“扩展 RemoteServiceServlet”的类,

帮我解决我的问题。 如果neone需要更多细节请告诉我,我会编辑它。

已编辑___

   public class FService implements FInterfaceAsync {


FInterfaceAsync service =(FInterfaceAsync)GWT.create(FInterface.class);

ServiceDefTarget endpoint = (ServiceDefTarget) service;

public FService(){

    endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "folderService");
}



public void getRepositories(
        AsyncCallback<FCollection> repositoryCallback) {
    // TODO Auto-generated method stub
    service.getRepositories(repositoryCallback);
}
}

XML 文件

我的 WEB.xml 是

  <servlet>
  <servlet-name>CServlet</servlet-name> 
  <servlet-class>com.server.CServiceImpl</servlet-class> 
  </servlet> 

  <servlet> 
  <servlet-name>FServlet</servlet-name>
  <servlet-class>com.server.FServiceImpl</servlet-class> 
  </servlet> 

  <servlet-mapping> 
   <servlet-name>CServlet</servlet-name> 
   <url-pattern>/*</url-pattern> 
  </servlet-mapping> 

   <servlet-mapping> 
      <servlet-name>FServlet</servlet-name> 
       <url-pattern>/FServiceImpl</url-pattern> 
        </servlet-mapping>

CServlet 工作正常

【问题讨论】:

    标签: java gwt gwt-rpc gwt2


    【解决方案1】:

    在这里猜测,但您的fService 似乎可能为空。你是如何创造它的?你在用GWT.create(FService.class);吗?

    顺便说一句,是的,您的所有 servlet(包括 RPC 的)都必须在 web.xml 中声明。 你的远程服务接口也必须用@RemoteServiceRelativePath("path")注解。

    编辑:您的web.xml 中的&lt;url-pattern&gt;/FilenetFolderServiceImpl&lt;/url-pattern&gt; 似乎也应该是/{moduleBaseURL}/folderService,其中{moduleBaseURL} 通常是您的项目名称(或类似名称)。

    【讨论】:

    • 是的,我用过GWT.create(FService.class);,我编辑过n提到了服务代码。
    • @NewCodeLearner 似乎是正确的,您的问题可能出在其他地方 - 您是否进行了调试以确保第 2 行中的 fService 不是 null (fService.getRepositories(repocallback);)?
    • 我的项目名称是FCmis1。 somammping &lt;url-pattern&gt;FCmis1/folderService&lt;/url-pattern&gt; 仍然为空。
    【解决方案2】:

    最后我解决了这是我的编码错误。 我没有用 new FService() 初始化 FService;

        private static FService fService = new FService();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2019-07-16
      相关资源
      最近更新 更多