Home » Modeling » EMF » [GWT] SerializationException
| | |
Re: [GWT] SerializationException [message #999246 is a reply to message #999229] |
Fri, 11 January 2013 16:25 |
Dirk Hoffmann Messages: 163 Registered: July 2009 |
Senior Member |
|
|
Hi,
So far found out that serializable types are listed in a file named
E4B4F2F5505E366F1674372179435F97.gwt.rpc
and all generated classes except the root class are missing although
they are reachable through non-transient containment references.
The file gets created when GWT compiles the Java source files and gets
loaded by a SerializationPolicy object.
Adding
implements IsSerializable
directly to the class definition didn't help either nor making all
no-arg constructors public.
No idea what is in the generated classes that makes GWT assume they are
not to be serielized.
Regards,
Dirk
Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
> Ed's email address into the To: header of the message when I click on
> Reply):
>
> Am 11.01.2013 16:04, schrieb Ed Merks:
>> Dirk,
>>
>> This is in the purely generated application? Are you using the GWT
>> version of the EMF runtime on the server?
> I'm using GWT 2.5 and this is the start of the genmodel file:
>
> <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
> modelDirectory="/CustomDataView/src_gen"
> editDirectory="/CustomDataView.edit/src_gen"
> editorDirectory="/CustomDataView.editor/src_gen"
> modelPluginID="CustomDataView"
> redirection="" modelName="Presentation" suppressEMFTypes="true"
> suppressEMFMetaData="true"
> suppressEMFModelTags="true" suppressInterfaces="true"
> featureMapWrapperClass=""
> codeFormatting="true" testsDirectory="" booleanFlagsField=""
> importerID="org.eclipse.emf.importer.ecore"
> suppressContainment="true" suppressNotification="true"
> suppressUnsettable="true"
> complianceLevel="6.0" copyrightFields="false"
> interfaceNamePattern="" runtimePlatform="GWT" runtimeVersion="2.5">
>
> I thought that runtimeVersion="2.5" would make the genarted code
> compatible with the GWT version.
>
> Dirk
>
>>
>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>> Hi,
>>>
>>> when starting my EMF4GWT based app I get a SerializationException (see
>>> stacktrace at the bottom).
>>>
>>> To all generated types I added the Serializable interface but later on
>>> found out that this should not be necessary as BasicEObjectImpl
>>> already implements the IsSerializable interface.
>>>
>>> What am I missing here? I'm trying to use the same generated classes
>>> on the client as well as on the server side.
>>>
>>> Regards,
>>> Dirk
>>>
>>> Starting Jetty on port 8888
>>> [WARN] Exception while dispatching incoming RPC call
>>> com.google.gwt.user.client.rpc.SerializationException:
>>> java.lang.reflect.InvocationTargetException
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>
>>>
>>> at
>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>
>>>
>>> at
>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>
>>>
>>
>
|
|
|
Re: [GWT] SerializationException [message #999508 is a reply to message #999246] |
Sat, 12 January 2013 09:36 |
Ed Merks Messages: 33141 Registered: July 2009 |
Senior Member |
|
|
Dirk,
We even generate in the XyzPackageImpl as special WhiteList class that's
serializeable and has a field for each EDataType that's serializeable
(EDataType.serializeable == true) so that these data types are added to
the GWT's white list. Does a trivially simple hand written class'
instance work properly? If you make that example more complex (define a
derived class), does that work properly?
Note that in Thunderird you have to be careful not to do a reply all,
otherwise you send mail directly to the sender). I made that mistake
many times, but I think it changed (or maybe I configured it) and now
has a follow-up button that does the right thing...
On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
> Hi,
>
> So far found out that serializable types are listed in a file named
>
> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>
> and all generated classes except the root class are missing although
> they are reachable through non-transient containment references.
>
> The file gets created when GWT compiles the Java source files and gets
> loaded by a SerializationPolicy object.
>
> Adding
>
> implements IsSerializable
>
> directly to the class definition didn't help either nor making all
> no-arg constructors public.
>
> No idea what is in the generated classes that makes GWT assume they
> are not to be serielized.
>
> Regards,
> Dirk
>
>
> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
>> Ed's email address into the To: header of the message when I click on
>> Reply):
>>
>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>> Dirk,
>>>
>>> This is in the purely generated application? Are you using the GWT
>>> version of the EMF runtime on the server?
>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>
>> <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>> modelDirectory="/CustomDataView/src_gen"
>> editDirectory="/CustomDataView.edit/src_gen"
>> editorDirectory="/CustomDataView.editor/src_gen"
>> modelPluginID="CustomDataView"
>> redirection="" modelName="Presentation" suppressEMFTypes="true"
>> suppressEMFMetaData="true"
>> suppressEMFModelTags="true" suppressInterfaces="true"
>> featureMapWrapperClass=""
>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>> importerID="org.eclipse.emf.importer.ecore"
>> suppressContainment="true" suppressNotification="true"
>> suppressUnsettable="true"
>> complianceLevel="6.0" copyrightFields="false"
>> interfaceNamePattern="" runtimePlatform="GWT" runtimeVersion="2.5">
>>
>> I thought that runtimeVersion="2.5" would make the genarted code
>> compatible with the GWT version.
>>
>> Dirk
>>
>>>
>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>> Hi,
>>>>
>>>> when starting my EMF4GWT based app I get a SerializationException (see
>>>> stacktrace at the bottom).
>>>>
>>>> To all generated types I added the Serializable interface but later on
>>>> found out that this should not be necessary as BasicEObjectImpl
>>>> already implements the IsSerializable interface.
>>>>
>>>> What am I missing here? I'm trying to use the same generated classes
>>>> on the client as well as on the server side.
>>>>
>>>> Regards,
>>>> Dirk
>>>>
>>>> Starting Jetty on port 8888
>>>> [WARN] Exception while dispatching incoming RPC call
>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>> java.lang.reflect.InvocationTargetException
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>
>>>>
>>>>
>>>> at
>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>
>>>>
>>>>
>>>
>>
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: [GWT] SerializationException [message #1000314 is a reply to message #999508] |
Mon, 14 January 2013 14:01 |
Dirk Hoffmann Messages: 163 Registered: July 2009 |
Senior Member |
|
|
Hi,
created now two projects with the same meta models, one manually and the
other with EMF. For the latter a class only reachable by ref does not
appear in the .gwt.rcp file.
Regards,
Dirk
Am 12.01.2013 10:36, schrieb Ed Merks:
> Dirk,
>
> We even generate in the XyzPackageImpl as special WhiteList class that's
> serializeable and has a field for each EDataType that's serializeable
> (EDataType.serializeable == true) so that these data types are added to
> the GWT's white list. Does a trivially simple hand written class'
> instance work properly? If you make that example more complex (define a
> derived class), does that work properly?
>
> Note that in Thunderird you have to be careful not to do a reply all,
> otherwise you send mail directly to the sender). I made that mistake
> many times, but I think it changed (or maybe I configured it) and now
> has a follow-up button that does the right thing...
>
>
> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>> Hi,
>>
>> So far found out that serializable types are listed in a file named
>>
>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>
>> and all generated classes except the root class are missing although
>> they are reachable through non-transient containment references.
>>
>> The file gets created when GWT compiles the Java source files and gets
>> loaded by a SerializationPolicy object.
>>
>> Adding
>>
>> implements IsSerializable
>>
>> directly to the class definition didn't help either nor making all
>> no-arg constructors public.
>>
>> No idea what is in the generated classes that makes GWT assume they
>> are not to be serielized.
>>
>> Regards,
>> Dirk
>>
>>
>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
>>> Ed's email address into the To: header of the message when I click on
>>> Reply):
>>>
>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>> Dirk,
>>>>
>>>> This is in the purely generated application? Are you using the GWT
>>>> version of the EMF runtime on the server?
>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>
>>> <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>> modelDirectory="/CustomDataView/src_gen"
>>> editDirectory="/CustomDataView.edit/src_gen"
>>> editorDirectory="/CustomDataView.editor/src_gen"
>>> modelPluginID="CustomDataView"
>>> redirection="" modelName="Presentation" suppressEMFTypes="true"
>>> suppressEMFMetaData="true"
>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>> featureMapWrapperClass=""
>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>> importerID="org.eclipse.emf.importer.ecore"
>>> suppressContainment="true" suppressNotification="true"
>>> suppressUnsettable="true"
>>> complianceLevel="6.0" copyrightFields="false"
>>> interfaceNamePattern="" runtimePlatform="GWT" runtimeVersion="2.5">
>>>
>>> I thought that runtimeVersion="2.5" would make the genarted code
>>> compatible with the GWT version.
>>>
>>> Dirk
>>>
>>>>
>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>> Hi,
>>>>>
>>>>> when starting my EMF4GWT based app I get a SerializationException (see
>>>>> stacktrace at the bottom).
>>>>>
>>>>> To all generated types I added the Serializable interface but later on
>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>> already implements the IsSerializable interface.
>>>>>
>>>>> What am I missing here? I'm trying to use the same generated classes
>>>>> on the client as well as on the server side.
>>>>>
>>>>> Regards,
>>>>> Dirk
>>>>>
>>>>> Starting Jetty on port 8888
>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>> java.lang.reflect.InvocationTargetException
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>
>>>>>
>>>>>
>>>>> at
>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
|
|
|
Re: [GWT] SerializationException [message #1000374 is a reply to message #1000314] |
Mon, 14 January 2013 16:02 |
Dirk Hoffmann Messages: 163 Registered: July 2009 |
Senior Member |
|
|
Hi,
got it running now by adding the following to the service interface:
WhiteList dummy();
plus of course the corresponding empty implementations. Maybe it would
be enough to only have that in the implementations.
Nevertheless it would be interesting to learn why it works without this
workaround with manually created classes but not with the EMF generated
ones.
BTW: Noticed the "Reply to Newsgroup" button in Thunderbird now. Hm, I'm
sure it wasn't there some months ago.
Regards,
Dirk
Am 14.01.2013 15:01, schrieb Dirk Hoffmann:
> Hi,
>
> created now two projects with the same meta models, one manually and the
> other with EMF. For the latter a class only reachable by ref does not
> appear in the .gwt.rcp file.
>
> Regards,
> Dirk
>
> Am 12.01.2013 10:36, schrieb Ed Merks:
>> Dirk,
>>
>> We even generate in the XyzPackageImpl as special WhiteList class that's
>> serializeable and has a field for each EDataType that's serializeable
>> (EDataType.serializeable == true) so that these data types are added to
>> the GWT's white list. Does a trivially simple hand written class'
>> instance work properly? If you make that example more complex (define a
>> derived class), does that work properly?
>>
>> Note that in Thunderird you have to be careful not to do a reply all,
>> otherwise you send mail directly to the sender). I made that mistake
>> many times, but I think it changed (or maybe I configured it) and now
>> has a follow-up button that does the right thing...
>>
>>
>> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>>> Hi,
>>>
>>> So far found out that serializable types are listed in a file named
>>>
>>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>>
>>> and all generated classes except the root class are missing although
>>> they are reachable through non-transient containment references.
>>>
>>> The file gets created when GWT compiles the Java source files and gets
>>> loaded by a SerializationPolicy object.
>>>
>>> Adding
>>>
>>> implements IsSerializable
>>>
>>> directly to the class definition didn't help either nor making all
>>> no-arg constructors public.
>>>
>>> No idea what is in the generated classes that makes GWT assume they
>>> are not to be serielized.
>>>
>>> Regards,
>>> Dirk
>>>
>>>
>>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
>>>> Ed's email address into the To: header of the message when I click on
>>>> Reply):
>>>>
>>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>>> Dirk,
>>>>>
>>>>> This is in the purely generated application? Are you using the GWT
>>>>> version of the EMF runtime on the server?
>>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>>
>>>> <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
>>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>>> modelDirectory="/CustomDataView/src_gen"
>>>> editDirectory="/CustomDataView.edit/src_gen"
>>>> editorDirectory="/CustomDataView.editor/src_gen"
>>>> modelPluginID="CustomDataView"
>>>> redirection="" modelName="Presentation" suppressEMFTypes="true"
>>>> suppressEMFMetaData="true"
>>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>>> featureMapWrapperClass=""
>>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>>> importerID="org.eclipse.emf.importer.ecore"
>>>> suppressContainment="true" suppressNotification="true"
>>>> suppressUnsettable="true"
>>>> complianceLevel="6.0" copyrightFields="false"
>>>> interfaceNamePattern="" runtimePlatform="GWT"
>>>> runtimeVersion="2.5">
>>>>
>>>> I thought that runtimeVersion="2.5" would make the genarted code
>>>> compatible with the GWT version.
>>>>
>>>> Dirk
>>>>
>>>>>
>>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>>> Hi,
>>>>>>
>>>>>> when starting my EMF4GWT based app I get a SerializationException
>>>>>> (see
>>>>>> stacktrace at the bottom).
>>>>>>
>>>>>> To all generated types I added the Serializable interface but
>>>>>> later on
>>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>>> already implements the IsSerializable interface.
>>>>>>
>>>>>> What am I missing here? I'm trying to use the same generated classes
>>>>>> on the client as well as on the server side.
>>>>>>
>>>>>> Regards,
>>>>>> Dirk
>>>>>>
>>>>>> Starting Jetty on port 8888
>>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>>> java.lang.reflect.InvocationTargetException
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> at
>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
|
|
|
Re: [GWT] SerializationException [message #1000602 is a reply to message #1000374] |
Tue, 15 January 2013 04:47 |
Ed Merks Messages: 33141 Registered: July 2009 |
Senior Member |
|
|
Dirk,
EMF already generates kind of a white list helper like that for the data
types in the XyzPackageImpl, e.g.,
org.eclipse.emf.ecore.impl.EcorePackageImpl.WhiteList. It's used in
org.eclipse.emf.ecore.resource.URIService. So perhaps it's the fact
that you're not using URIService in your application that's the missing
piece of the puzzle? Does your workaround work if you use
org.eclipse.emf.ecore.resource.URIService.WhiteList in your service
interface?
On 14/01/2013 5:02 PM, Dirk Hoffmann wrote:
> Hi,
>
> got it running now by adding the following to the service interface:
>
> WhiteList dummy();
>
> plus of course the corresponding empty implementations. Maybe it would
> be enough to only have that in the implementations.
>
> Nevertheless it would be interesting to learn why it works without
> this workaround with manually created classes but not with the EMF
> generated ones.
>
> BTW: Noticed the "Reply to Newsgroup" button in Thunderbird now. Hm,
> I'm sure it wasn't there some months ago.
>
> Regards,
> Dirk
>
> Am 14.01.2013 15:01, schrieb Dirk Hoffmann:
>> Hi,
>>
>> created now two projects with the same meta models, one manually and the
>> other with EMF. For the latter a class only reachable by ref does not
>> appear in the .gwt.rcp file.
>>
>> Regards,
>> Dirk
>>
>> Am 12.01.2013 10:36, schrieb Ed Merks:
>>> Dirk,
>>>
>>> We even generate in the XyzPackageImpl as special WhiteList class
>>> that's
>>> serializeable and has a field for each EDataType that's serializeable
>>> (EDataType.serializeable == true) so that these data types are added to
>>> the GWT's white list. Does a trivially simple hand written class'
>>> instance work properly? If you make that example more complex
>>> (define a
>>> derived class), does that work properly?
>>>
>>> Note that in Thunderird you have to be careful not to do a reply all,
>>> otherwise you send mail directly to the sender). I made that mistake
>>> many times, but I think it changed (or maybe I configured it) and now
>>> has a follow-up button that does the right thing...
>>>
>>>
>>> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>>>> Hi,
>>>>
>>>> So far found out that serializable types are listed in a file named
>>>>
>>>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>>>
>>>> and all generated classes except the root class are missing although
>>>> they are reachable through non-transient containment references.
>>>>
>>>> The file gets created when GWT compiles the Java source files and gets
>>>> loaded by a SerializationPolicy object.
>>>>
>>>> Adding
>>>>
>>>> implements IsSerializable
>>>>
>>>> directly to the class definition didn't help either nor making all
>>>> no-arg constructors public.
>>>>
>>>> No idea what is in the generated classes that makes GWT assume they
>>>> are not to be serielized.
>>>>
>>>> Regards,
>>>> Dirk
>>>>
>>>>
>>>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
>>>>> Ed's email address into the To: header of the message when I click on
>>>>> Reply):
>>>>>
>>>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>>>> Dirk,
>>>>>>
>>>>>> This is in the purely generated application? Are you using the GWT
>>>>>> version of the EMF runtime on the server?
>>>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>>>
>>>>> <genmodel:GenModel xmi:version="2.0"
>>>>> xmlns:xmi="http://www.omg.org/XMI"
>>>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>>>> modelDirectory="/CustomDataView/src_gen"
>>>>> editDirectory="/CustomDataView.edit/src_gen"
>>>>> editorDirectory="/CustomDataView.editor/src_gen"
>>>>> modelPluginID="CustomDataView"
>>>>> redirection="" modelName="Presentation" suppressEMFTypes="true"
>>>>> suppressEMFMetaData="true"
>>>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>>>> featureMapWrapperClass=""
>>>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>>>> importerID="org.eclipse.emf.importer.ecore"
>>>>> suppressContainment="true" suppressNotification="true"
>>>>> suppressUnsettable="true"
>>>>> complianceLevel="6.0" copyrightFields="false"
>>>>> interfaceNamePattern="" runtimePlatform="GWT"
>>>>> runtimeVersion="2.5">
>>>>>
>>>>> I thought that runtimeVersion="2.5" would make the genarted code
>>>>> compatible with the GWT version.
>>>>>
>>>>> Dirk
>>>>>
>>>>>>
>>>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> when starting my EMF4GWT based app I get a SerializationException
>>>>>>> (see
>>>>>>> stacktrace at the bottom).
>>>>>>>
>>>>>>> To all generated types I added the Serializable interface but
>>>>>>> later on
>>>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>>>> already implements the IsSerializable interface.
>>>>>>>
>>>>>>> What am I missing here? I'm trying to use the same generated
>>>>>>> classes
>>>>>>> on the client as well as on the server side.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Dirk
>>>>>>>
>>>>>>> Starting Jetty on port 8888
>>>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: [GWT] SerializationException [message #1001206 is a reply to message #1000602] |
Wed, 16 January 2013 08:26 |
Dirk Hoffmann Messages: 163 Registered: July 2009 |
Senior Member |
|
|
Hi Ed,
thank you for the pointer to the URIService interface. It works when my
service interface extends URIService.
What I find a bit unesthetically is the fact that the service
implmentation has to implement the methods introduced by URIService and
I do not even know what they are for. I guess empty implementations will
suffice for my use case. I tried it with a copy of URIService where I
removed those methods but that didn't work. Seems there is some
reflection magic going on there. There is another fact that appears
quite magically to me. How does URIService affect the whitelist in the
..gwt.rpc file when it has no reference to the generated WhiteList class
that is embedded into the package implementation?
Regards,
Dirk
Am 15.01.2013 05:47, schrieb Ed Merks:
> Dirk,
>
> EMF already generates kind of a white list helper like that for the data
> types in the XyzPackageImpl, e.g.,
> org.eclipse.emf.ecore.impl.EcorePackageImpl.WhiteList. It's used in
> org.eclipse.emf.ecore.resource.URIService. So perhaps it's the fact
> that you're not using URIService in your application that's the missing
> piece of the puzzle? Does your workaround work if you use
> org.eclipse.emf.ecore.resource.URIService.WhiteList in your service
> interface?
>
>
> On 14/01/2013 5:02 PM, Dirk Hoffmann wrote:
>> Hi,
>>
>> got it running now by adding the following to the service interface:
>>
>> WhiteList dummy();
>>
>> plus of course the corresponding empty implementations. Maybe it would
>> be enough to only have that in the implementations.
>>
>> Nevertheless it would be interesting to learn why it works without
>> this workaround with manually created classes but not with the EMF
>> generated ones.
>>
>> BTW: Noticed the "Reply to Newsgroup" button in Thunderbird now. Hm,
>> I'm sure it wasn't there some months ago.
>>
>> Regards,
>> Dirk
>>
>> Am 14.01.2013 15:01, schrieb Dirk Hoffmann:
>>> Hi,
>>>
>>> created now two projects with the same meta models, one manually and the
>>> other with EMF. For the latter a class only reachable by ref does not
>>> appear in the .gwt.rcp file.
>>>
>>> Regards,
>>> Dirk
>>>
>>> Am 12.01.2013 10:36, schrieb Ed Merks:
>>>> Dirk,
>>>>
>>>> We even generate in the XyzPackageImpl as special WhiteList class
>>>> that's
>>>> serializeable and has a field for each EDataType that's serializeable
>>>> (EDataType.serializeable == true) so that these data types are added to
>>>> the GWT's white list. Does a trivially simple hand written class'
>>>> instance work properly? If you make that example more complex
>>>> (define a
>>>> derived class), does that work properly?
>>>>
>>>> Note that in Thunderird you have to be careful not to do a reply all,
>>>> otherwise you send mail directly to the sender). I made that mistake
>>>> many times, but I think it changed (or maybe I configured it) and now
>>>> has a follow-up button that does the right thing...
>>>>
>>>>
>>>> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>>>>> Hi,
>>>>>
>>>>> So far found out that serializable types are listed in a file named
>>>>>
>>>>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>>>>
>>>>> and all generated classes except the root class are missing although
>>>>> they are reachable through non-transient containment references.
>>>>>
>>>>> The file gets created when GWT compiles the Java source files and gets
>>>>> loaded by a SerializationPolicy object.
>>>>>
>>>>> Adding
>>>>>
>>>>> implements IsSerializable
>>>>>
>>>>> directly to the class definition didn't help either nor making all
>>>>> no-arg constructors public.
>>>>>
>>>>> No idea what is in the generated classes that makes GWT assume they
>>>>> are not to be serielized.
>>>>>
>>>>> Regards,
>>>>> Dirk
>>>>>
>>>>>
>>>>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>>>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only fills
>>>>>> Ed's email address into the To: header of the message when I click on
>>>>>> Reply):
>>>>>>
>>>>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>>>>> Dirk,
>>>>>>>
>>>>>>> This is in the purely generated application? Are you using the GWT
>>>>>>> version of the EMF runtime on the server?
>>>>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>>>>
>>>>>> <genmodel:GenModel xmi:version="2.0"
>>>>>> xmlns:xmi="http://www.omg.org/XMI"
>>>>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>>>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>>>>> modelDirectory="/CustomDataView/src_gen"
>>>>>> editDirectory="/CustomDataView.edit/src_gen"
>>>>>> editorDirectory="/CustomDataView.editor/src_gen"
>>>>>> modelPluginID="CustomDataView"
>>>>>> redirection="" modelName="Presentation" suppressEMFTypes="true"
>>>>>> suppressEMFMetaData="true"
>>>>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>>>>> featureMapWrapperClass=""
>>>>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>>>>> importerID="org.eclipse.emf.importer.ecore"
>>>>>> suppressContainment="true" suppressNotification="true"
>>>>>> suppressUnsettable="true"
>>>>>> complianceLevel="6.0" copyrightFields="false"
>>>>>> interfaceNamePattern="" runtimePlatform="GWT"
>>>>>> runtimeVersion="2.5">
>>>>>>
>>>>>> I thought that runtimeVersion="2.5" would make the genarted code
>>>>>> compatible with the GWT version.
>>>>>>
>>>>>> Dirk
>>>>>>
>>>>>>>
>>>>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> when starting my EMF4GWT based app I get a SerializationException
>>>>>>>> (see
>>>>>>>> stacktrace at the bottom).
>>>>>>>>
>>>>>>>> To all generated types I added the Serializable interface but
>>>>>>>> later on
>>>>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>>>>> already implements the IsSerializable interface.
>>>>>>>>
>>>>>>>> What am I missing here? I'm trying to use the same generated
>>>>>>>> classes
>>>>>>>> on the client as well as on the server side.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Dirk
>>>>>>>>
>>>>>>>> Starting Jetty on port 8888
>>>>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> at
>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
|
|
|
Re: [GWT] SerializationException [message #1001227 is a reply to message #1001206] |
Wed, 16 January 2013 09:25 |
Ed Merks Messages: 33141 Registered: July 2009 |
Senior Member |
|
|
Dirk,
Comments below.
On 16/01/2013 9:26 AM, Dirk Hoffmann wrote:
> Hi Ed,
>
> thank you for the pointer to the URIService interface. It works when
> my service interface extends URIService.
>
> What I find a bit unesthetically is the fact that the service
> implmentation has to implement the methods introduced by URIService
> and I do not even know what they are for.
I think you can just use the same pattern, i.e., just define this in
your own RemoteService extension without extending URIService itself.
URIService.WhiteList whiteList(URIService.WhiteList whiteList);
> I guess empty implementations will suffice for my use case.
I think you'd only need to define this in your extension of
RemoteServiceServlet
public URIService.WhiteList whiteList(URIService.WhiteList whiteList)
{
return null;
}
> I tried it with a copy of URIService where I removed those methods but
> that didn't work.
Which methods?
> Seems there is some reflection magic going on there. There is another
> fact that appears quite magically to me. How does URIService affect
> the whitelist in the .gwt.rpc file when it has no reference to the
> generated WhiteList class that is embedded into the package
> implementation?
I'm not sure, but I think the GWT compiler sees WhiteList referenced in
the interface and them determines all serializable classes in its type
hierarchy. Then it further analyzes those classes to determine what
things they reference (i.e., will potentially serialize) and so on
recursively so it's like a closure.
>
> Regards,
> Dirk
>
> Am 15.01.2013 05:47, schrieb Ed Merks:
>> Dirk,
>>
>> EMF already generates kind of a white list helper like that for the data
>> types in the XyzPackageImpl, e.g.,
>> org.eclipse.emf.ecore.impl.EcorePackageImpl.WhiteList. It's used in
>> org.eclipse.emf.ecore.resource.URIService. So perhaps it's the fact
>> that you're not using URIService in your application that's the missing
>> piece of the puzzle? Does your workaround work if you use
>> org.eclipse.emf.ecore.resource.URIService.WhiteList in your service
>> interface?
>>
>>
>> On 14/01/2013 5:02 PM, Dirk Hoffmann wrote:
>>> Hi,
>>>
>>> got it running now by adding the following to the service interface:
>>>
>>> WhiteList dummy();
>>>
>>> plus of course the corresponding empty implementations. Maybe it would
>>> be enough to only have that in the implementations.
>>>
>>> Nevertheless it would be interesting to learn why it works without
>>> this workaround with manually created classes but not with the EMF
>>> generated ones.
>>>
>>> BTW: Noticed the "Reply to Newsgroup" button in Thunderbird now. Hm,
>>> I'm sure it wasn't there some months ago.
>>>
>>> Regards,
>>> Dirk
>>>
>>> Am 14.01.2013 15:01, schrieb Dirk Hoffmann:
>>>> Hi,
>>>>
>>>> created now two projects with the same meta models, one manually
>>>> and the
>>>> other with EMF. For the latter a class only reachable by ref does not
>>>> appear in the .gwt.rcp file.
>>>>
>>>> Regards,
>>>> Dirk
>>>>
>>>> Am 12.01.2013 10:36, schrieb Ed Merks:
>>>>> Dirk,
>>>>>
>>>>> We even generate in the XyzPackageImpl as special WhiteList class
>>>>> that's
>>>>> serializeable and has a field for each EDataType that's serializeable
>>>>> (EDataType.serializeable == true) so that these data types are
>>>>> added to
>>>>> the GWT's white list. Does a trivially simple hand written class'
>>>>> instance work properly? If you make that example more complex
>>>>> (define a
>>>>> derived class), does that work properly?
>>>>>
>>>>> Note that in Thunderird you have to be careful not to do a reply all,
>>>>> otherwise you send mail directly to the sender). I made that mistake
>>>>> many times, but I think it changed (or maybe I configured it) and now
>>>>> has a follow-up button that does the right thing...
>>>>>
>>>>>
>>>>> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>>>>>> Hi,
>>>>>>
>>>>>> So far found out that serializable types are listed in a file named
>>>>>>
>>>>>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>>>>>
>>>>>> and all generated classes except the root class are missing although
>>>>>> they are reachable through non-transient containment references.
>>>>>>
>>>>>> The file gets created when GWT compiles the Java source files and
>>>>>> gets
>>>>>> loaded by a SerializationPolicy object.
>>>>>>
>>>>>> Adding
>>>>>>
>>>>>> implements IsSerializable
>>>>>>
>>>>>> directly to the class definition didn't help either nor making all
>>>>>> no-arg constructors public.
>>>>>>
>>>>>> No idea what is in the generated classes that makes GWT assume they
>>>>>> are not to be serielized.
>>>>>>
>>>>>> Regards,
>>>>>> Dirk
>>>>>>
>>>>>>
>>>>>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>>>>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only
>>>>>>> fills
>>>>>>> Ed's email address into the To: header of the message when I
>>>>>>> click on
>>>>>>> Reply):
>>>>>>>
>>>>>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>>>>>> Dirk,
>>>>>>>>
>>>>>>>> This is in the purely generated application? Are you using the GWT
>>>>>>>> version of the EMF runtime on the server?
>>>>>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>>>>>
>>>>>>> <genmodel:GenModel xmi:version="2.0"
>>>>>>> xmlns:xmi="http://www.omg.org/XMI"
>>>>>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>>>>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>>>>>> modelDirectory="/CustomDataView/src_gen"
>>>>>>> editDirectory="/CustomDataView.edit/src_gen"
>>>>>>> editorDirectory="/CustomDataView.editor/src_gen"
>>>>>>> modelPluginID="CustomDataView"
>>>>>>> redirection="" modelName="Presentation"
>>>>>>> suppressEMFTypes="true"
>>>>>>> suppressEMFMetaData="true"
>>>>>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>>>>>> featureMapWrapperClass=""
>>>>>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>>>>>> importerID="org.eclipse.emf.importer.ecore"
>>>>>>> suppressContainment="true" suppressNotification="true"
>>>>>>> suppressUnsettable="true"
>>>>>>> complianceLevel="6.0" copyrightFields="false"
>>>>>>> interfaceNamePattern="" runtimePlatform="GWT"
>>>>>>> runtimeVersion="2.5">
>>>>>>>
>>>>>>> I thought that runtimeVersion="2.5" would make the genarted code
>>>>>>> compatible with the GWT version.
>>>>>>>
>>>>>>> Dirk
>>>>>>>
>>>>>>>>
>>>>>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> when starting my EMF4GWT based app I get a SerializationException
>>>>>>>>> (see
>>>>>>>>> stacktrace at the bottom).
>>>>>>>>>
>>>>>>>>> To all generated types I added the Serializable interface but
>>>>>>>>> later on
>>>>>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>>>>>> already implements the IsSerializable interface.
>>>>>>>>>
>>>>>>>>> What am I missing here? I'm trying to use the same generated
>>>>>>>>> classes
>>>>>>>>> on the client as well as on the server side.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Dirk
>>>>>>>>>
>>>>>>>>> Starting Jetty on port 8888
>>>>>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> at
>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
Ed Merks
Professional Support: https://www.macromodeling.com/
|
|
|
Re: [GWT] SerializationException [message #1001365 is a reply to message #1001227] |
Wed, 16 January 2013 15:09 |
Dirk Hoffmann Messages: 163 Registered: July 2009 |
Senior Member |
|
|
Hi Ed,
see below...
Am 16.01.2013 10:25, schrieb Ed Merks:
> Dirk,
>
> Comments below.
>
> On 16/01/2013 9:26 AM, Dirk Hoffmann wrote:
>> Hi Ed,
>>
>> thank you for the pointer to the URIService interface. It works when
>> my service interface extends URIService.
>>
>> What I find a bit unesthetically is the fact that the service
>> implmentation has to implement the methods introduced by URIService
>> and I do not even know what they are for.
> I think you can just use the same pattern, i.e., just define this in
> your own RemoteService extension without extending URIService itself.
>
> URIService.WhiteList whiteList(URIService.WhiteList whiteList);
>
>> I guess empty implementations will suffice for my use case.
> I think you'd only need to define this in your extension of
> RemoteServiceServlet
>
> public URIService.WhiteList whiteList(URIService.WhiteList whiteList)
> {
> return null;
> }
>> I tried it with a copy of URIService where I removed those methods but
>> that didn't work.
> Which methods?
Map<?, ?> fetch(String uri, Map<?, ?> options);
Map<?, ?> store(String uri, byte[] bytes, Map<?, ?> options);
Map<?, ?> delete(String uri, Map<?, ?> options);
boolean exists(String uri, Map<?, ?> options);
>> Seems there is some reflection magic going on there. There is another
>> fact that appears quite magically to me. How does URIService affect
>> the whitelist in the .gwt.rpc file when it has no reference to the
>> generated WhiteList class that is embedded into the package
>> implementation?
> I'm not sure, but I think the GWT compiler sees WhiteList referenced in
> the interface and them determines all serializable classes in its type
> hierarchy. Then it further analyzes those classes to determine what
> things they reference (i.e., will potentially serialize) and so on
> recursively so it's like a closure.
Yes, that sounds reasonable. Must be more than just reflection and
probably only works as GWT really parses the Java code and so gets a
notion of the full type hierarchy.
Thanks so far. More questions in a new thread.
Dirk
>>
>> Regards,
>> Dirk
>>
>> Am 15.01.2013 05:47, schrieb Ed Merks:
>>> Dirk,
>>>
>>> EMF already generates kind of a white list helper like that for the data
>>> types in the XyzPackageImpl, e.g.,
>>> org.eclipse.emf.ecore.impl.EcorePackageImpl.WhiteList. It's used in
>>> org.eclipse.emf.ecore.resource.URIService. So perhaps it's the fact
>>> that you're not using URIService in your application that's the missing
>>> piece of the puzzle? Does your workaround work if you use
>>> org.eclipse.emf.ecore.resource.URIService.WhiteList in your service
>>> interface?
>>>
>>>
>>> On 14/01/2013 5:02 PM, Dirk Hoffmann wrote:
>>>> Hi,
>>>>
>>>> got it running now by adding the following to the service interface:
>>>>
>>>> WhiteList dummy();
>>>>
>>>> plus of course the corresponding empty implementations. Maybe it would
>>>> be enough to only have that in the implementations.
>>>>
>>>> Nevertheless it would be interesting to learn why it works without
>>>> this workaround with manually created classes but not with the EMF
>>>> generated ones.
>>>>
>>>> BTW: Noticed the "Reply to Newsgroup" button in Thunderbird now. Hm,
>>>> I'm sure it wasn't there some months ago.
>>>>
>>>> Regards,
>>>> Dirk
>>>>
>>>> Am 14.01.2013 15:01, schrieb Dirk Hoffmann:
>>>>> Hi,
>>>>>
>>>>> created now two projects with the same meta models, one manually
>>>>> and the
>>>>> other with EMF. For the latter a class only reachable by ref does not
>>>>> appear in the .gwt.rcp file.
>>>>>
>>>>> Regards,
>>>>> Dirk
>>>>>
>>>>> Am 12.01.2013 10:36, schrieb Ed Merks:
>>>>>> Dirk,
>>>>>>
>>>>>> We even generate in the XyzPackageImpl as special WhiteList class
>>>>>> that's
>>>>>> serializeable and has a field for each EDataType that's serializeable
>>>>>> (EDataType.serializeable == true) so that these data types are
>>>>>> added to
>>>>>> the GWT's white list. Does a trivially simple hand written class'
>>>>>> instance work properly? If you make that example more complex
>>>>>> (define a
>>>>>> derived class), does that work properly?
>>>>>>
>>>>>> Note that in Thunderird you have to be careful not to do a reply all,
>>>>>> otherwise you send mail directly to the sender). I made that mistake
>>>>>> many times, but I think it changed (or maybe I configured it) and now
>>>>>> has a follow-up button that does the right thing...
>>>>>>
>>>>>>
>>>>>> On 11/01/2013 5:25 PM, Dirk Hoffmann wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> So far found out that serializable types are listed in a file named
>>>>>>>
>>>>>>> E4B4F2F5505E366F1674372179435F97.gwt.rpc
>>>>>>>
>>>>>>> and all generated classes except the root class are missing although
>>>>>>> they are reachable through non-transient containment references.
>>>>>>>
>>>>>>> The file gets created when GWT compiles the Java source files and
>>>>>>> gets
>>>>>>> loaded by a SerializationPolicy object.
>>>>>>>
>>>>>>> Adding
>>>>>>>
>>>>>>> implements IsSerializable
>>>>>>>
>>>>>>> directly to the class definition didn't help either nor making all
>>>>>>> no-arg constructors public.
>>>>>>>
>>>>>>> No idea what is in the generated classes that makes GWT assume they
>>>>>>> are not to be serielized.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Dirk
>>>>>>>
>>>>>>>
>>>>>>> Am 11.01.2013 16:48, schrieb Dirk Hoffmann:
>>>>>>>> Sorry, again to the newsgroup. (Unfortunately thunderbird only
>>>>>>>> fills
>>>>>>>> Ed's email address into the To: header of the message when I
>>>>>>>> click on
>>>>>>>> Reply):
>>>>>>>>
>>>>>>>> Am 11.01.2013 16:04, schrieb Ed Merks:
>>>>>>>>> Dirk,
>>>>>>>>>
>>>>>>>>> This is in the purely generated application? Are you using the GWT
>>>>>>>>> version of the EMF runtime on the server?
>>>>>>>> I'm using GWT 2.5 and this is the start of the genmodel file:
>>>>>>>>
>>>>>>>> <genmodel:GenModel xmi:version="2.0"
>>>>>>>> xmlns:xmi="http://www.omg.org/XMI"
>>>>>>>> xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
>>>>>>>> xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
>>>>>>>> modelDirectory="/CustomDataView/src_gen"
>>>>>>>> editDirectory="/CustomDataView.edit/src_gen"
>>>>>>>> editorDirectory="/CustomDataView.editor/src_gen"
>>>>>>>> modelPluginID="CustomDataView"
>>>>>>>> redirection="" modelName="Presentation"
>>>>>>>> suppressEMFTypes="true"
>>>>>>>> suppressEMFMetaData="true"
>>>>>>>> suppressEMFModelTags="true" suppressInterfaces="true"
>>>>>>>> featureMapWrapperClass=""
>>>>>>>> codeFormatting="true" testsDirectory="" booleanFlagsField=""
>>>>>>>> importerID="org.eclipse.emf.importer.ecore"
>>>>>>>> suppressContainment="true" suppressNotification="true"
>>>>>>>> suppressUnsettable="true"
>>>>>>>> complianceLevel="6.0" copyrightFields="false"
>>>>>>>> interfaceNamePattern="" runtimePlatform="GWT"
>>>>>>>> runtimeVersion="2.5">
>>>>>>>>
>>>>>>>> I thought that runtimeVersion="2.5" would make the genarted code
>>>>>>>> compatible with the GWT version.
>>>>>>>>
>>>>>>>> Dirk
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 11/01/2013 3:49 PM, Dirk Hoffmann wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> when starting my EMF4GWT based app I get a SerializationException
>>>>>>>>>> (see
>>>>>>>>>> stacktrace at the bottom).
>>>>>>>>>>
>>>>>>>>>> To all generated types I added the Serializable interface but
>>>>>>>>>> later on
>>>>>>>>>> found out that this should not be necessary as BasicEObjectImpl
>>>>>>>>>> already implements the IsSerializable interface.
>>>>>>>>>>
>>>>>>>>>> What am I missing here? I'm trying to use the same generated
>>>>>>>>>> classes
>>>>>>>>>> on the client as well as on the server side.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Dirk
>>>>>>>>>>
>>>>>>>>>> Starting Jetty on port 8888
>>>>>>>>>> [WARN] Exception while dispatching incoming RPC call
>>>>>>>>>> com.google.gwt.user.client.rpc.SerializationException:
>>>>>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:824)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:783)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:767)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:794)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:667)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> at
>>>>>>>>>> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:585)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
|
|
|
Goto Forum:
Current Time: Fri Apr 26 03:29:14 GMT 2024
Powered by FUDForum. Page generated in 0.04648 seconds
|