0

サーバーで RPC を使用してクライアントに例外をスローしようとすると、エラーが発生します。私が持っているものは次のとおりです:独自の例外クラス:

package catan.user.session.shared;
public class SessionInvalidException extends Exception {
    private static final long serialVersionUID = 1L;
}

そしてRPCの実装。

@SuppressWarnings("serial")
public class ProfileServiceImpl extends RemoteServiceServlet implements ProfileService{

    @Override
    public UserLight getUser() throws SessionInvalidException {
        SessionManager.getInstance().isSessionStillValid(this.getThreadLocalRequest());
        return ((UserLight)     this.getThreadLocalRequest().getSession(false).getAttribute("User")).clone();
    }
}

SessionManager.getInstance().isSessionStillValid() で例外がスローされ、プログラムを実行すると、ログに次のエラーが表示されます

Wed Aug 14 17:13:45 CEST 2013 catan.client.Catan
WARNING: Exception caught 

catan.user.session.shared.SessionInvalidException: null
at catan.user.session.shared.SessionInvalidException_FieldSerializer.instantiate(SessionInvalidException_FieldSerializer.java:16)
at catan.user.session.shared.SessionInvalidException_FieldSerializer.create(SessionInvalidException_FieldSerializer.java:25)
at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:115)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)
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)
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:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
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:242)
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)
Aug 14, 2013 5:13:45 PM com.google.gwt.logging.server.RemoteLoggingServiceUtil     logOnServer

WARNING: Exception caught 

com.google.gwt.core.client.impl.SerializableThrowable$ThrowableWithClassName
at catan.user.session.shared.SessionInvalidException_FieldSerializer.instantiate(SessionInvalidException_FieldSerializer.java:16)
at catan.user.session.shared.SessionInvalidException_FieldSerializer.create(SessionInvalidException_FieldSerializer.java:25)
at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:115)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)
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)
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:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
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:242)
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)

面白いのは、まったく同じパッケージ内に別の名前でほぼ同じ方法でスローされた別の例外があり、それが機能したことです...私が間違っていることを理解していません...

4

2 に答える 2

0

例外クラスが、*.gwt.xml モジュール定義ファイルの要素で指定されたパス上にあることを確認してください。例えば:

<!-- Specify the paths for translatable code                    -->
<source path='client' />
<source path='shared' />
于 2013-08-14T18:54:47.007 に答える
0

さて、私は私の問題を解決しました。したがって、例外は RPC によってクライアントに正しく渡されました。次に、 onFailure メソッドで、キャッチされたオブジェクトを Logger クラスに渡し、それをサーバーなどに送り返そうとしました。Logger クラスは私のプロジェクトの別のメンバーによって書かれたため、ここではわかりません。したがって、このクラスを使用しないだけで問題は解決しましたが、これらのエラーが何を伝えようとしているのかはまだわかりません...誰かがここで興味を持っている場合は、キャッチしたオブジェクトを渡したメソッドです。Catan.class は EntryPoint クラスです。

public class Logger {

/**
 * Logs a Throwable
 * @param caught
 */
public static void log(Throwable caught) {
    final java.util.logging.Logger log = java.util.logging.Logger.getLogger(Catan.class.getName());
    log.log(Level.WARNING, "Exception caught \n", caught);
}
于 2013-08-15T14:03:30.937 に答える