2012-03-01 22 views
0

私はgwtに新しくRPCを実装しようとしています。ホームページRPCが動作していません

public void onClick(ClickEvent event) { 

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

     } 
    }); 

第一1上のボタンのクリックで

が正常に動作しています。

(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番目のものを使用しようとするとエラーが発生します。

最初に私は、サーバー側で1つのクラスのすべてのメソッドを書きました。今は、別のクラスを作成していて、それらに関連するメソッドを追加しています。サーバー側 第一クラス上の

は、接続のためである:罰金

2クラスを作業している、削除、更新を持つフォルダのメソッドを追加するためのものです。

両方とも、RemoteServiceServletを継承しています。

は私が持つ2つのクラスがある場合は、web.xmlファイルに何かを追加する必要があるかどうか知らない

助け、私は私の問題を解決するために、「RemoteServiceServletを拡張します」。 もっと詳しく知りたい方は教えてください。私はそれを編集します。

edited_ _ _

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がそれをここに罰金

答えて

1

最後に私はそれを私のコーディングで間違って解決しました。 新しいFService()でFServiceを初期化しませんでした。

4

ワイルド推測を働いているが、セあなたのfServiceはnullかもしれません。どのようにそれを作成していますか? GWT.create(FService.class);を使用していますか?

ところで、すべてのサーブレット(RPCを含む)はweb.xmlで宣言する必要があります。 リモートサービスインターフェイスには、@RemoteServiceRelativePath("path")の注釈も付ける必要があります。

EDIT:あなたのweb.xml<url-pattern>/FilenetFolderServiceImpl</url-pattern>{moduleBaseURL}は通常、プロジェクトの名前(または類似)である/{moduleBaseURL}/folderService、である必要がありそうです。

+0

はい私は 'GWT.create(FService.class);を使用しましたが、私はnを編集してサービスコードを記述しました。 – NewCodeLearner

+1

@NewCodeLearner正しいと思われます。あなたの問題は他の場所にあるかもしれません - 'fService'が2行目(' fService.getRepositories(repocallback); ')で' null 'でないことをデバッグしましたか? – Marcelo

+0

私はXMLファイルも入れました。これを解決するために私を助けてください。 – NewCodeLearner

関連する問題