GWT 1.5 com.google.gwt.user.client.rpc.SerializationException: java.lang.IllegalArgumentException: argument type mismatch

235 views
Skip to first unread message

aruna

unread,
Apr 9, 2009, 9:47:29 AM4/9/09
to Google Web Toolkit
Hi,
I have created a small application using GWT1.5.3. I send a custom
object via RPC to talk to my server. The object is serializable and
everything works fine, till I introduce a HashMap<String, String> into
my object. When i I populate this hashmap and try to send it across
from client to server or server to client, i get the following error:


09:31:16,229 ERROR [[/AccountMgt]] Exception while dispatching
incoming RPC call
com.google.gwt.user.client.rpc.SerializationException:
java.lang.IllegalArgumentException: argument type mismatch
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer
(ServerSerializationStreamWriter.java:
690)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl
(ServerSerializationStreamWriter.java:659)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize
(ServerSerializationStreamWriter.java:593)
at
com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject
(AbstractSerializationStreamWriter.java:129)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter
$ValueWriter$8.write(ServerSerializationStreamWriter.java:146)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue
(ServerSerializationStreamWriter.java:530)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass
(ServerSerializationStreamWriter.java:636)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl
(ServerSerializationStreamWriter.java:666)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize
(ServerSerializationStreamWriter.java:593)
at
com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject
(AbstractSerializationStreamWriter.java:129)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter
$ValueWriter$8.write(ServerSerializationStreamWriter.java:146)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue
(ServerSerializationStreamWriter.java:530)
at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:
573)
at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess
(RPC.java:441)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:529)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:164)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
810)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter
(ReplyHeaderFilter.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke
(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke
(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke
(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run
(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer
(ServerSerializationStreamWriter.java:
678)
... 37 more
09:31:55,822 ERROR [[/AccountMgt]] An
IncompatibleRemoteServiceException was thrown while processing this
call.
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException:
java.lang.IllegalArgumentException: argument type mismatch
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:
298)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:163)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
810)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter
(ReplyHeaderFilter.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke
(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke
(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke
(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run
(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.google.gwt.user.client.rpc.SerializationException:
java.lang.IllegalArgumentException: argument type mismatch
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize
(ServerSerializationStreamReader.java:524)
at
com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject
(AbstractSerializationStreamReader.java:61)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader
$ValueReader$8.readValue(ServerSerializationStreamReader.java:131)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue
(ServerSerializationStreamReader.java:372)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeClass
(ServerSerializationStreamReader.java:575)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl
(ServerSerializationStreamReader.java:608)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize
(ServerSerializationStreamReader.java:502)
at
com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject
(AbstractSerializationStreamReader.java:61)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader
$ValueReader$8.readValue(ServerSerializationStreamReader.java:131)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue
(ServerSerializationStreamReader.java:372)
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:
287)
... 23 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeWithCustomFieldDeserializer
(ServerSerializationStreamRea
der.java:681)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl
(ServerSerializationStreamReader.java:601)
at
com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize
(ServerSerializationStreamReader.java:502)
... 33 more


The object which I send across is :
public class AccountGroup implements Serializable{

private static final long serialVersionUID = 1L;
private String dnbUserID;
private String dnbPassword;
private String dnbInstallation;
private String dnbSubscriberNum;
private String ccidInstallation;
private String accountGroupName;
private String accountGroupDescription;
private String accountNumber;
private String exncfInstallation;
private String vendorPath;
private String primaryVendor;
private String loggingLevel;
private long seqNum;
private HashMap<String, String> value;


public String getLoggingLevel() {
return loggingLevel;
}
public void setLoggingLevel(String loggingLevel) {
this.loggingLevel = loggingLevel;
}
public String getDnbUserID() {
return dnbUserID;
}
public void setDnbUserID(String dnbUserID) {
this.dnbUserID = dnbUserID;
}
public String getDnbPassword() {
return dnbPassword;
}
public void setDnbPassword(String dnbPassword) {
this.dnbPassword = dnbPassword;
}
public String getDnbInstallation() {
return dnbInstallation;
}
public void setDnbInstallation(String dnbInstallation) {
this.dnbInstallation = dnbInstallation;
}
public String getDnbSubscriberNum() {
return dnbSubscriberNum;
}
public void setDnbSubscriberNum(String dnbSubscriberNum) {
this.dnbSubscriberNum = dnbSubscriberNum;
}
public HashMap<String, String> getValue() {
return value;
}
public void setValue(HashMap<String, String> value) {
this.value = value;
}
public String getAccountGroupName() {
return accountGroupName;
}
public void setAccountGroupName(String accountGroupName) {
this.accountGroupName = accountGroupName;
}
public String getAccountGroupDescription() {
return accountGroupDescription;
}
public void setAccountGroupDescription(String
accountGroupDescription) {
this.accountGroupDescription = accountGroupDescription;
}
public String getAccountNumber() {
return accountNumber;
}
public void setAccountNumber(String accountNumber) {
this.accountNumber = accountNumber;
}
public String getCcidInstallation() {
return ccidInstallation;
}
public void setCcidInstallation(String ccidInstallation) {
this.ccidInstallation = ccidInstallation;
}
public String getExncfInstallation() {
return exncfInstallation;
}
public void setExncfInstallation(String exncfInstallation) {
this.exncfInstallation = exncfInstallation;
}
public String getVendorPath() {
return vendorPath;
}
public void setVendorPath(String vendorPath) {
this.vendorPath = vendorPath;
}
public String getPrimaryVendor() {
return primaryVendor;
}
public void setPrimaryVendor(String primaryVendor) {
this.primaryVendor = primaryVendor;
}
public long getSeqNum() {
return seqNum;
}
public void setSeqNum(long seqNum) {
this.seqNum = seqNum;
}
}



What do I have to do to get my thing working? If I remove the hashmap,
i am able to make calls across without any problems.
Reply all
Reply to author
Forward
0 new messages