Issue Details (XML | Word | Printable)

Key: GDS-132
Type: Bug Bug
Status: Closed Closed
Resolution: Won't Fix
Priority: Major Major
Assignee: Franck Wolff
Reporter: Jerome L
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
GraniteDS

Error when deserializing RemotingMessage

Created: 02/Jul/08 09:37 AM   Updated: 16/Jul/08 11:54 AM   Resolved: 16/Jul/08 11:54 AM
Component/s: AMF3 (de)serialization
Affects Version/s: 1.1.0_RC2, 1.1.0_RC3
Fix Version/s: 1.1.0_RC3

Environment: JBoss + GraniteDS 1.1.0 RC2


 Description  « Hide
The flash application sends a remoting message to the graniteDS which fails to deserialize it, here is the stack trace :
<html><head><title>Apache Tomcat/5.5.23 - Error
report</title><style><!--H1
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
H2
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
H3
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
BODY
{font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
B
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
P
{font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
{color : black;}A.name {color : black;}HR {color : #525D76;}--></style>
</head><body><h1>HTTP Status 500 - </h1><HR size="1"
noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b>
<u></u></p><p><b>description</b> <u>The server encountered an internal
error () that prevented it from fulfilling this
request.</u></p><p><b>exception</b> <pre>javax.servlet.ServletException:
java.lang.NoSuchFieldException: remotePassword

org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:103)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
</pre></p><p><b>root cause</b> <pre>java.lang.RuntimeException:
java.lang.NoSuchFieldException: remotePassword

org.granite.messaging.amf.io.util.DefaultActionScriptClassDescriptor.defineProperty(DefaultActionScriptClassDescriptor.java:64)

org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:275)

org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:97)

org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:69)

org.granite.messaging.amf.io.AMF0Deserializer.readAMF3Data(AMF0Deserializer.java:327)

org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:379)

org.granite.messaging.amf.io.AMF0Deserializer.readArray(AMF0Deserializer.java:242)

org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:365)

org.granite.messaging.amf.io.AMF0Deserializer.readBodies(AMF0Deserializer.java:158)

org.granite.messaging.amf.io.AMF0Deserializer.&lt;init&gt;(AMF0Deserializer.java:97)

org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:79)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
</pre></p><p><b>root cause</b> <pre>java.lang.NoSuchFieldException:
remotePassword
java.lang.Class.getField(Class.java:1520)

org.granite.messaging.amf.io.util.DefaultActionScriptClassDescriptor.defineProperty(DefaultActionScriptClassDescriptor.java:59)

org.granite.messaging.amf.io.AMF3Deserializer.readAMF3Object(AMF3Deserializer.java:275)

org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:97)

org.granite.messaging.amf.io.AMF3Deserializer.readObject(AMF3Deserializer.java:69)

org.granite.messaging.amf.io.AMF0Deserializer.readAMF3Data(AMF0Deserializer.java:327)

org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:379)

org.granite.messaging.amf.io.AMF0Deserializer.readArray(AMF0Deserializer.java:242)

org.granite.messaging.amf.io.AMF0Deserializer.readData(AMF0Deserializer.java:365)

org.granite.messaging.amf.io.AMF0Deserializer.readBodies(AMF0Deserializer.java:158)

org.granite.messaging.amf.io.AMF0Deserializer.&lt;init&gt;(AMF0Deserializer.java:97)

org.granite.messaging.webapp.AMFMessageFilter.doFilter(AMFMessageFilter.java:79)

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)

org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
</pre></p><p><b>note</b> <u>The full stack trace of the root cause is
available in the Apache Tomcat/5.5.23 logs.</u></p><HR size="1"
noshade="noshade"><h3>Apache Tomcat/5.5.23</h3></body></html>

It works fine with BlazeDS; When comparing RemotingMessage in BlazeDS and GraniteDS, it appears that the classes are a little different :

In BlazeDS :
RemotingMessage extends RPCMessage extends AsyncMessage

In GraniteDS :
RemotingMessage extends AsyncMessage

RPCMessage contains the fields which are not undertood by GraniteDS, and this class has not been patched in GraniteDS. So you may have to update the patched flex.messaging.messages package.

Franck Wolff added a comment - 16/Jul/08 11:54 AM
RPCMessage seems to be a BlazeDS specific class and doesn't appear in any Flex 2/3 standard distribution. BlazeDS applications should be recompiled with a standard Flex2/3 compiler before any deployment in GDS.