You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Tomas Mazukna <to...@usermail.com> on 2004/06/24 17:33:05 UTC

could not find deserializer for type

Long Story short:

Axis 1.2 beta.... could not invoje java-rpc with copmplex type as parameter.

1. Server side one service taking in a custom object as a paramater - Ident
2. client stub generated from wsdl.
3. Using tcpmon I see that server is not able to deserialize this object.

I am missing something obvoius .. for 4 hours already :(

the class on the server is
--------------------------------------------------------------
..... snip......

public class Ident implements Serializable
{

	private String company;
	private String usename;
	private String password;


.... snip......
all get and set methods are present, nothing else ....
--------------------------------------------------------------


deploy.wsdd
--------------------------------------------------------------
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
	<service name="SchedServer" provider="java:RPC">
		<parameter name="className"
value="com.solutionsquare.sched.server.SchedServer"/>
		<parameter name="allowedMethods" value="*"/>
		<parameter name="scope" value="Application"/>
	</service>

	<beanMapping xmlns:ns="urn:BeanService" qname="ns:Ident"
languageSpecificType="java:com.solutionsquare.sched.data.Ident" />

</deployment>

--------------------------------------------------------------


service method:
public Customer getCustomer(com.solutionsquare.sched.data.Ident ident,
java.lang.String id) throws java.rmi.RemoteException;


TCPMON:
HTTP/1.1 500 Internal Server Error?
Content-Type: text/xml;charset=utf-8?
Date: Thu, 24 Jun 2004 15:10:49 GMT?
Server: Apache-Coyote/1.1?
Connection: close?
?
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>org.xml.sax.SAXException: Deserializing parameter 'ident':
 could not find deserializer for type
{http://data.sched.solutionsquare.com}Ident</faultstring>
   <detail/>
  </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>

Client:

SchedServerService schedService = new SchedServerServiceLocator();
URL serviceURL = new URL("http://localhost:8181/axis/services/SchedServer");
Customer cust1 = null;

cust1 = schedService.getSchedServer(serviceURL).getCustomer(new Ident(),
"1");




Re: could not find deserializer for type

Posted by Tomas Mazukna <to...@usermail.com>.
I had no beanmapping to start with, adding did not help.

> remove the beanmapping and try again.
>
> On Thu, 24 Jun 2004 11:33:05 -0400 (EDT), Tomas Mazukna
> <to...@usermail.com> wrote:
>> Long Story short:
>>
>> Axis 1.2 beta.... could not invoje java-rpc with copmplex type as
>> parameter.
>>
>> 1. Server side one service taking in a custom object as a paramater -
>> Ident
>> 2. client stub generated from wsdl.
>> 3. Using tcpmon I see that server is not able to deserialize this
>> object.
>>
>> I am missing something obvoius .. for 4 hours already :(
>>
>> the class on the server is
>> --------------------------------------------------------------
>> ..... snip......
>>
>> public class Ident implements Serializable
>> {
>>
>>         private String company;
>>         private String usename;
>>         private String password;
>>
>> .... snip......
>> all get and set methods are present, nothing else ....
>> --------------------------------------------------------------
>>
>> deploy.wsdd
>> --------------------------------------------------------------
>> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
>> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>>         <service name="SchedServer" provider="java:RPC">
>>                 <parameter name="className"
>> value="com.solutionsquare.sched.server.SchedServer"/>
>>                 <parameter name="allowedMethods" value="*"/>
>>                 <parameter name="scope" value="Application"/>
>>         </service>
>>
>>         <beanMapping xmlns:ns="urn:BeanService" qname="ns:Ident"
>> languageSpecificType="java:com.solutionsquare.sched.data.Ident" />
>>
>> </deployment>
>>
>> --------------------------------------------------------------
>>
>> service method:
>> public Customer getCustomer(com.solutionsquare.sched.data.Ident ident,
>> java.lang.String id) throws java.rmi.RemoteException;
>>
>> TCPMON:
>> HTTP/1.1 500 Internal Server Error?
>> Content-Type: text/xml;charset=utf-8?
>> Date: Thu, 24 Jun 2004 15:10:49 GMT?
>> Server: Apache-Coyote/1.1?
>> Connection: close?
>> ?
>> <?xml version="1.0" encoding="utf-8"?>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>  <soapenv:Body>
>>   <soapenv:Fault>
>>    <faultcode>soapenv:Server.userException</faultcode>
>>    <faultstring>org.xml.sax.SAXException: Deserializing parameter
>> 'ident':
>>  could not find deserializer for type
>> {http://data.sched.solutionsquare.com}Ident</faultstring>
>>    <detail/>
>>   </soapenv:Fault>
>>  </soapenv:Body>
>> </soapenv:Envelope>
>>
>> Client:
>>
>> SchedServerService schedService = new SchedServerServiceLocator();
>> URL serviceURL = new
>> URL("http://localhost:8181/axis/services/SchedServer");
>> Customer cust1 = null;
>>
>> cust1 = schedService.getSchedServer(serviceURL).getCustomer(new Ident(),
>> "1");
>>
>>
>
>
> --
> Davanum Srinivas - http://webservices.apache.org/~dims/
>
>


Re: could not find deserializer for type

Posted by Davanum Srinivas <da...@gmail.com>.
remove the beanmapping and try again.

On Thu, 24 Jun 2004 11:33:05 -0400 (EDT), Tomas Mazukna
<to...@usermail.com> wrote:
> Long Story short:
> 
> Axis 1.2 beta.... could not invoje java-rpc with copmplex type as parameter.
> 
> 1. Server side one service taking in a custom object as a paramater - Ident
> 2. client stub generated from wsdl.
> 3. Using tcpmon I see that server is not able to deserialize this object.
> 
> I am missing something obvoius .. for 4 hours already :(
> 
> the class on the server is
> --------------------------------------------------------------
> ..... snip......
> 
> public class Ident implements Serializable
> {
> 
>         private String company;
>         private String usename;
>         private String password;
> 
> .... snip......
> all get and set methods are present, nothing else ....
> --------------------------------------------------------------
> 
> deploy.wsdd
> --------------------------------------------------------------
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>         <service name="SchedServer" provider="java:RPC">
>                 <parameter name="className"
> value="com.solutionsquare.sched.server.SchedServer"/>
>                 <parameter name="allowedMethods" value="*"/>
>                 <parameter name="scope" value="Application"/>
>         </service>
> 
>         <beanMapping xmlns:ns="urn:BeanService" qname="ns:Ident"
> languageSpecificType="java:com.solutionsquare.sched.data.Ident" />
> 
> </deployment>
> 
> --------------------------------------------------------------
> 
> service method:
> public Customer getCustomer(com.solutionsquare.sched.data.Ident ident,
> java.lang.String id) throws java.rmi.RemoteException;
> 
> TCPMON:
> HTTP/1.1 500 Internal Server Error?
> Content-Type: text/xml;charset=utf-8?
> Date: Thu, 24 Jun 2004 15:10:49 GMT?
> Server: Apache-Coyote/1.1?
> Connection: close?
> ?
> <?xml version="1.0" encoding="utf-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>  <soapenv:Body>
>   <soapenv:Fault>
>    <faultcode>soapenv:Server.userException</faultcode>
>    <faultstring>org.xml.sax.SAXException: Deserializing parameter 'ident':
>  could not find deserializer for type
> {http://data.sched.solutionsquare.com}Ident</faultstring>
>    <detail/>
>   </soapenv:Fault>
>  </soapenv:Body>
> </soapenv:Envelope>
> 
> Client:
> 
> SchedServerService schedService = new SchedServerServiceLocator();
> URL serviceURL = new URL("http://localhost:8181/axis/services/SchedServer");
> Customer cust1 = null;
> 
> cust1 = schedService.getSchedServer(serviceURL).getCustomer(new Ident(),
> "1");
> 
> 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/

Re: could not find deserializer for type

Posted by Tomas Mazukna <to...@usermail.com>.
One more update ....
I think it is a bug in WSDL2Java ....

here is what I found

delpoy.wsdd:
=========================================
<beanMapping xmlns:ns="urn:SchedServer"
qname="ns:Ident"
languageSpecificType="java:com.solutionsquare.sched.data.Ident" />

=========================================

?wsdl
=========================================
<wsdl:definitions
targetNamespace="http://localhost:8180/axis/services/SchedServer">
	<!--
WSDL created by Apache Axis version: 1.2beta
Built on Mar 31, 2004 (12:47:03 EST)
-->
	<wsdl:types>
	<schema targetNamespace="urn:SchedServer">
=========================================

but ... in generated Ident.java i found THIS

typeDesc.setXmlType(new
javax.xml.namespace.QName("http://data.sched.solutionsquare.com", "Ident"));
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

so I changed deploy.wsdd to

<beanMapping xmlns:ns="http://data.sched.solutionsquare.com"
qname="ns:Ident"
languageSpecificType="java:com.solutionsquare.sched.data.Ident" />

and it WORKED !

so where is inconsistency/bug somewhere .......

thanks,
Tomas

> Update:
>
> I made it work, but that is not how I want to do it.
> Server side beans are just data + setter and getter. Once I copied beans
> from client side, which were generated by WSDL2Java nad have all those
> additional get De/Serializer methods everything started working.
>
> Can I somehow make server side beans work with simple beans. I do not want
> to write wsdl and generate beans out of it to make things work.
>
> thanks,
> Tomas
>
>> Long Story short:
>>
>> Axis 1.2 beta.... could not invoje java-rpc with copmplex type as
>> parameter.
>>
>> 1. Server side one service taking in a custom object as a paramater -
>> Ident
>> 2. client stub generated from wsdl.
>> 3. Using tcpmon I see that server is not able to deserialize this
>> object.
>>
>> I am missing something obvoius .. for 4 hours already :(
>>
>> the class on the server is
>> --------------------------------------------------------------
>> ..... snip......
>>
>> public class Ident implements Serializable
>> {
>>
>> 	private String company;
>> 	private String usename;
>> 	private String password;
>>
>>
>> .... snip......
>> all get and set methods are present, nothing else ....
>> --------------------------------------------------------------
>>
>>
>> deploy.wsdd
>> --------------------------------------------------------------
>> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
>> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>> 	<service name="SchedServer" provider="java:RPC">
>> 		<parameter name="className"
>> value="com.solutionsquare.sched.server.SchedServer"/>
>> 		<parameter name="allowedMethods" value="*"/>
>> 		<parameter name="scope" value="Application"/>
>> 	</service>
>>
>> 	<beanMapping xmlns:ns="urn:BeanService" qname="ns:Ident"
>> languageSpecificType="java:com.solutionsquare.sched.data.Ident" />
>>
>> </deployment>
>>
>> --------------------------------------------------------------
>>
>>
>> service method:
>> public Customer getCustomer(com.solutionsquare.sched.data.Ident ident,
>> java.lang.String id) throws java.rmi.RemoteException;
>>
>>
>> TCPMON:
>> HTTP/1.1 500 Internal Server Error?
>> Content-Type: text/xml;charset=utf-8?
>> Date: Thu, 24 Jun 2004 15:10:49 GMT?
>> Server: Apache-Coyote/1.1?
>> Connection: close?
>> ?
>> <?xml version="1.0" encoding="utf-8"?>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>  <soapenv:Body>
>>   <soapenv:Fault>
>>    <faultcode>soapenv:Server.userException</faultcode>
>>    <faultstring>org.xml.sax.SAXException: Deserializing parameter
>> 'ident':
>>  could not find deserializer for type
>> {http://data.sched.solutionsquare.com}Ident</faultstring>
>>    <detail/>
>>   </soapenv:Fault>
>>  </soapenv:Body>
>> </soapenv:Envelope>
>>
>> Client:
>>
>> SchedServerService schedService = new SchedServerServiceLocator();
>> URL serviceURL = new
>> URL("http://localhost:8181/axis/services/SchedServer");
>> Customer cust1 = null;
>>
>> cust1 = schedService.getSchedServer(serviceURL).getCustomer(new Ident(),
>> "1");
>>
>>
>>
>>
>
>


Re: could not find deserializer for type

Posted by Tomas Mazukna <to...@usermail.com>.
Update:

I made it work, but that is not how I want to do it.
Server side beans are just data + setter and getter. Once I copied beans
from client side, which were generated by WSDL2Java nad have all those
additional get De/Serializer methods everything started working.

Can I somehow make server side beans work with simple beans. I do not want
to write wsdl and generate beans out of it to make things work.

thanks,
Tomas

> Long Story short:
>
> Axis 1.2 beta.... could not invoje java-rpc with copmplex type as
> parameter.
>
> 1. Server side one service taking in a custom object as a paramater -
> Ident
> 2. client stub generated from wsdl.
> 3. Using tcpmon I see that server is not able to deserialize this object.
>
> I am missing something obvoius .. for 4 hours already :(
>
> the class on the server is
> --------------------------------------------------------------
> ..... snip......
>
> public class Ident implements Serializable
> {
>
> 	private String company;
> 	private String usename;
> 	private String password;
>
>
> .... snip......
> all get and set methods are present, nothing else ....
> --------------------------------------------------------------
>
>
> deploy.wsdd
> --------------------------------------------------------------
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
> 	<service name="SchedServer" provider="java:RPC">
> 		<parameter name="className"
> value="com.solutionsquare.sched.server.SchedServer"/>
> 		<parameter name="allowedMethods" value="*"/>
> 		<parameter name="scope" value="Application"/>
> 	</service>
>
> 	<beanMapping xmlns:ns="urn:BeanService" qname="ns:Ident"
> languageSpecificType="java:com.solutionsquare.sched.data.Ident" />
>
> </deployment>
>
> --------------------------------------------------------------
>
>
> service method:
> public Customer getCustomer(com.solutionsquare.sched.data.Ident ident,
> java.lang.String id) throws java.rmi.RemoteException;
>
>
> TCPMON:
> HTTP/1.1 500 Internal Server Error?
> Content-Type: text/xml;charset=utf-8?
> Date: Thu, 24 Jun 2004 15:10:49 GMT?
> Server: Apache-Coyote/1.1?
> Connection: close?
> ?
> <?xml version="1.0" encoding="utf-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>  <soapenv:Body>
>   <soapenv:Fault>
>    <faultcode>soapenv:Server.userException</faultcode>
>    <faultstring>org.xml.sax.SAXException: Deserializing parameter 'ident':
>  could not find deserializer for type
> {http://data.sched.solutionsquare.com}Ident</faultstring>
>    <detail/>
>   </soapenv:Fault>
>  </soapenv:Body>
> </soapenv:Envelope>
>
> Client:
>
> SchedServerService schedService = new SchedServerServiceLocator();
> URL serviceURL = new
> URL("http://localhost:8181/axis/services/SchedServer");
> Customer cust1 = null;
>
> cust1 = schedService.getSchedServer(serviceURL).getCustomer(new Ident(),
> "1");
>
>
>
>