Are you sure the subclass is on the client classpath?  If you put the
subclass on the server side it won't work as the GWT compiler won't
see it (& it won't throw any errors if you don't actually use it in
your client-side code that it compiles).

GWT cannot serialize arbitrary subclasses that it's not seen during
compile time.

On Sat, Apr 18, 2009 at 5:24 PM, daniel.z
<[email protected]> wrote:
>
> Hi Sumit,
>
> i was somehow hoping this is not the intended behaviour.
> I tested the behaviour in webmode after completely compiling the whole
> application. So I guess it is not a problem with hosted mode in any
> kind. I have checked the generated serialization policy file, which
> really does not contain ExceptionSubClass. And i enshured a no-arg
> constructor is available for it.
>
> Along with my investigations is found out that RPC checks if a thrown
> exception is an expected one in the RPC.isExpectedException() method.
> This method returns true for all subclasses of an exception declared
> by throws. But as subclasses are not contained in the generated
> serialization policy file the serialization itself failes with an
> SerializationException.
>
> It seems to me that for some reason the gwt compiler does not traverse
> the inheritance hierarchy of declared exception classes when
> generating the <md5>.gwt.rpc file.
>
>
> On 17 Apr., 20:17, Sumit Chandel <[email protected]> wrote:
>> Hi Daniel,
>> That is not the intended behaviour for GWT RPC exception handling. You
>> should be able to throw a subclass of a serializable exception across the
>> wire and it should handle it appropriately.
>>
>> Having said that, here are a couple of questions to find out why this isn't
>> working in your case:
>>
>> 1) Are you using hosted mode with the embedded Tomcat server, or are you
>> using hosted mode with the -noserver option? If you are using it with the
>> -noserver option, you will need to make sure that you've re-compiled your
>> application with the GWT compiler for it to emit a new <md5>.gwt.rpc
>> serialization policy file, which will contain the newly added
>> ExceptionSubClass.
>>
>> 2) Have you made sure that a default constructor is available in the
>> ExceptionSubClass type? That is, if you've defined a parametrized
>> constructor, the default constructor will no longer be available, which will
>> cause issues when GWT RPC tries to serialize the exception.
>>
>> Hope that helps,
>> -Sumit Chandel
>>
>> On Wed, Apr 15, 2009 at 7:17 AM, daniel.z <
>>
>> [email protected]> wrote:
>>
>> > I'm experiencing the following behaviour of gwt 1.5.3 when trying to
>> > serialize exceptions via rpc.
>>
>> > I'v got an self implemented serializable exception type and a subclass
>> > of it like follows:
>>
>> >        public class SerializableRuntimeException extends RuntimeException
>> > implements Serializable {
>> >                ...
>> >        }
>>
>> >        public class ExceptionSubClass extendsSerializableRuntimeException {
>> >                ...
>> >        }
>>
>> > The service interface declares the SerializableRuntimeException as
>> > thrown
>>
>> >        public interface ISyncService extends RemoteService {
>> >                public String getSomething() throws
>> > SerializableRuntimeException;
>> >        }
>>
>> > When throwing an SerializableRuntimeException inside the
>> > implementation of getSomething() everything is working as supposed,
>> > but when throwing ExceptionSubClass I just get an
>> > SerializationException on the server which says
>>
>> >        com.google.gwt.user.client.rpc.SerializationException: Type
>> > 'ExceptionSubClass' was not included
>> >        in the set of types which can be serialized by this
>> > SerializationPolicy or its Class object could not
>> >        be loaded. For security purposes, this type will not be serialized.
>>
>> > Is it the intended behaviour that gwt only serializes the exact
>> > exception class provided by "throws" and none of its subclasses? Seems
>> > to me like this complicates things.
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to