Title: RE: Array deserializer (was: [WSDL2Java] No deserializer defined for array type http://[.. .]/: QueryProperty)
Arggg....
 
It appears to be fixed now.  Somehow when I changed my jars to the one with the debug info.  The bug disapeared.   ???   The only thing I can see is that I had a few versions of axis in my webapps dir.  Could a web app use another one's jars?  I though not but that is the only thing I see.
 
Thanks Dave for you time, and sorry for the trouble.
Sylvain.
-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Monday, March 11, 2002 5:35 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Array deserializer (was: [WSDL2Java] No deserializer defined for array type http://[.. .]/: QueryProperty)

I know my assumption was wrong -- this problem has nothing to do with WSDL2Java since the exception is coming from the server. I would need to see how you set up your service, including the deployment descriptor. Also, it would be very helpful if you would compile the code with debug info, so the line numbers show up in the stack trace.

Dave

-----Original Message-----
From: St-Germain, Sylvain [mailto:[EMAIL PROTECTED]]
Sent: Monday, March 11, 2002 2:11 PM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[.. .]/: QueryProperty


I think that your assumption is wrong...  or it is mine that is ;-)

I believe the problem is on the server, it looks to me that the server does
not find the class to instantiate when it sees "queryPropertyStruct" (The
closest match is a class named QueryPropertyStruct). 

Look at the message below, and see the attached full request and response as
well as my ServiceInvoker class (may you want to do the same request I did)

(I normally run wsd2java with -stav)
(this run is with the beta1 build)

The request contains:
[...]
<properties xsi:type="SOAP-ENC:Array"
SOAP-ENC:arrayType="ns2:queryPropertyStruct[2]"
xmlns:ns2="http://developer.cognos.com/schemas/cm/1/">
  <item href="#id0"/>
  <item href="#id1"/>
</properties>
[...]

And the response says...
[...]
<SOAP-ENV:Fault>
  <faultcode
xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</faultcode>
  <faultstring>org.xml.sax.SAXException: No deserializer defined for array
type
http://developer.cognos.com/schemas/cm/1/:queryPropertyStruct</faultstring>
    <detail>
      <ns2:stackTrace
xmlns:ns2="http://xml.apache.org/axis/">org.xml.sax.SAXException: No
deserializer defined for array type
http://developer.cognos.com/schemas/cm/1/:queryPropertyStruct
 at org.apache.axis.encoding.ser.ArrayDeserializer.onStartElement(Unknown
Source)&#xd;
[...]

Many thanks again.
Sylvain.


-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Monday, March 11, 2002 1:58 PM
To: '[EMAIL PROTECTED]'
Subject: RE: [WSDL2Java] No deserializer defined for array type http://[..
.]/: QueryProperty


The WSDL2Java tool is used to generate the client stubs, so I assumed the
problems you were having were on the client side. Could you please tell me
exactly the steps you went through to set up your service and your client?
Please also include a dump of the soap trascation using the tcpmon tool.
Dave
-----Original Message-----
From: St-Germain, Sylvain [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 12:35 PM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[.. .]/: QueryProperty



Here it is attached. 
Isn't ContentManagerServiceBindingStub for client side stuff?  
I think my problem is at the server where it cannot find a class to
serialize "queryPropertyStruct"... Is the ContentManagerServiceBindingStub
used at the server end too? 
Thanks for your help.
Sylvain.
-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 1:12 PM
To: '[EMAIL PROTECTED]'
Subject: RE: [WSDL2Java] No deserializer defined for array type http://[..
.]/: QueryProperty


Can you also send me your ContentManagerServiceBindingStub.java? The one
that axis generates for me from the wsdl looks good. It contains the propper

mappings. If the binding stub is correct, perhaps what your service is
sending does not match the wsdl.
Dave
-----Original Message-----
From: St-Germain, Sylvain [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 9:58 AM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[.. .]/: QueryProperty


Have a look.  Attached is the wsdl.
Here is the stack on the command line:
Exception in thread "main" org.xml.sax.SAXException: No deserializer defined

for array type http://developer.cognos.com/schemas/cm/1/:queryPropertyStruct

        at org.apache.axis.message.SOAPFaultBuilder.endElement(Unknown
Source)
        at
org.apache.axis.encoding.DeserializationContextImpl.endElement(Unknown
Source)
        at
org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
        at
org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator

.java:1550)
        at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XM

LDocumentScanner.java:1204)
        at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.

java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
        at javax.xml.parsers.SAXParser.parse(SAXParser.java:393)
        at org.apache.axis.encoding.DeserializationContextImpl.parse(Unknown

Source)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(Unknown Source)
        at org.apache.axis.client.Call.invoke(Unknown Source)
        at org.apache.axis.client.Call.invoke(Unknown Source)
        at org.apache.axis.client.Call.invoke(Unknown Source)
        at org.apache.axis.client.Call.invoke(Unknown Source)
        at
com.cognos.developer.ContentManagerServiceBindingStub.query(ContentManagerSe

rviceBindingStub.java:321)
        at com.cognos.client.ServiceInvoker.main(ServiceInvoker.java:70)



This is the SOAP fault detail.
    <ns2:stackTrace
xmlns:ns2="http://xml.apache.org/axis/">org.xml.sax.SAXException: No
deserializer defined for array type
http://developer.cognos.com/schemas/cm/1/:queryPropertyStruct
        at
org.apache.axis.encoding.ser.ArrayDeserializer.onStartElement(Unknown
Source)&#xd;
        at org.apache.axis.encoding.DeserializerImpl.startElement(Unknown
Source)&#xd;
        at
org.apache.axis.encoding.DeserializationContextImpl.startElement(Unknown
Source)&#xd;
        at org.apache.axis.message.SAX2EventRecorder.replay(Unknown
Source)&#xd;
        at org.apache.axis.message.MessageElement.publishToHandler(Unknown
Source)&#xd;
        at org.apache.axis.message.RPCElement.deserialize(Unknown
Source)&#xd;
        at org.apache.axis.message.RPCElement.getParams(Unknown Source)&#xd;

        at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown

Source)&#xd;
        at org.apache.axis.providers.java.JavaProvider.invoke(Unknown
Source)&#xd;
        at org.apache.axis.strategies.InvocationStrategy.visit(Unknown
Source)&#xd;
        at org.apache.axis.SimpleChain.doVisiting(Unknown Source)&#xd;
        at org.apache.axis.SimpleChain.invoke(Unknown Source)&#xd;
        at org.apache.axis.server.AxisServer.invoke(Unknown Source)&#xd;
        at org.apache.axis.transport.http.AxisServlet.doPost(Unknown
Source)&#xd;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)&#xd;

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;

        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application

FilterChain.java:247)&#xd;
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh

ain.java:193)&#xd;
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja

va:243)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

66)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&

#xd;
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja

va:201)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

66)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&

#xd;
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)&#

xd;
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164

)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

66)&#xd;
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.

java:170)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

64)&#xd;
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170

)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

64)&#xd;
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)&#x

d;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

64)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&

#xd;
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java

:163)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5

66)&#xd;
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)&

#xd;
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)&#xd;
        at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:

1011)&#xd;
        at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106

)&#xd;
        at java.lang.Thread.run(Thread.java:484)&#xd;
</ns2:stackTrace>















-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 12:01 PM
To: '[EMAIL PROTECTED]'
Subject: RE: [WSDL2Java] No deserializer defined for array type http://[..
.]/: QueryProperty


I'm sorry I misunderstood the problem. Could you send the stacktrace and the

full wsdl of the error you're getting? This sounds like a bug, not a problem

with the specification of the mapping.
Dave
-----Original Message-----
From: St-Germain, Sylvain [mailto:[EMAIL PROTECTED]]
Sent: Friday, March 08, 2002 6:21 AM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[.. .]/: QueryProperty


Hi,
To your question, "Why can't your code reference QueryProperty instead of
queryProperty"?  I say because it is not my code!  This is the Axis server
that fails to deserialize because it does not find a class to use to
deserialize queryProperty.  It only has a class named QueryProperty. 
I agree with you that the switch to WSDL2Java shouldn't hurt.  But maybe the

real solution would be to have, as part of the generated code, a class that
maps the types labels to the class name.  A little like the type mapping
done in the BindingStub.
(Correct me if I am wrong) but I suspect that this is the code that allows a

class named "QueryProperty" to be serialized as "queryProperty" the problem
is that we do not have this mapping done on the server side.
Sylvain.




-----Original Message-----
From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
Sent: Thursday, March 07, 2002 4:59 PM
To: '[EMAIL PROTECTED]'
Subject: RE: [WSDL2Java] No deserializer defined for array type http://[..
.]/: QueryProperty


I don't understand your problem here. Why can't your code reference
QueryProperty instead of queryProperty?
I don't think you'll have much luck getting the JAX-RPC or JAXB (from which
the XML mapping is taken) specs to change because they are Java specific.
They are aimed at Java programmers. They do not in any way dictate how your
WSDL looks.
However I don't think it's unreasonable to add a switch to WSDL2Java to map
XML identifiers to Java identifiers as closely as possible, disregarding the

JAX-RPC spec. On the plus side, you would have a more direct mapping, which
it seems several people want (including myself). On the minus side, you lose

compatibility between JAX-RPC compliant SOAP implementations (are there
others out there?). I could make the patch -- it should be pretty simple
(I've already worked on that mapping). Comments from the developers?
If all else fails, you can manually edit the files WSDL2Java creates to have

things your way. Change the class names to the way you want them and edit
the SoapBindingStub file to fix the registered type mappings.
Dave
-----Original Message-----
From: St-Germain, Sylvain [mailto:[EMAIL PROTECTED]]
Sent: Thursday, March 07, 2002 12:51 PM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[.. .]/: QueryProperty



It think that the uppercase for first letter rule is a cosmetic concerns
that shouldn't be in the JAX-RPC spec. 
First it mainly applies to the Java language which at the time of designing
a WSDL shouldn't be a concerns.
However, I do agree with the rules that change the names that would bring up

compilation issues.  This is not the case with the first letter
capitalization.
Keeping the WSDL2Java the way it is now prevents my server to deserialize
all message that were defined to used types with a lowercase first letter.
And that *is* the real problem.  I think the JAX-RPC is wrong with regards
to the first letter rule for data types. 
I agree that this problem should be brought to the attention of the JAX-RPS
spec owners before it is finalized. 
Sylvain.


-----Original Message-----
From: Gary Feldman [mailto:[EMAIL PROTECTED]]
Sent: Thursday, March 07, 2002 1:01 PM
To: [EMAIL PROTECTED]
Subject: RE: [WSDL2Java] No deserializer defined for array type
http://[...]/: QueryProperty


>From: Dave Dunkin [mailto:[EMAIL PROTECTED]]
>WSDL2Java complies to the JAX-RPC specification for mapping XML identifiers

to Java identifiers. >That specifies that class should start with a capital
letter.
If I'm reading the spec correctly, this would appear to be an
inconsistency in it.
The appendix Mapping of XML Names, on pages 138-9, indicates that the
first character should be converted to upper case, but it then states
(erroneously?) that the mapping does not change an XML name that is
already a legal Java class identifier.  Or am I misreading this?
Also, in section 4.2.3, it uses curiously inconsistent language to
describe the mapping of the class names and the property names.  It
could be taken as saying that the class name mappings (unlike the
property names) must be the same as the XML names, and should not
use the mapping from the Appendix.
I can't help but wonder if these problems should be brought to the
attention of the spec owners before it is finalized.  Personally,
I think that the requirement that class names conform to Java naming
conventions should be subordinate to the requirement that the class
names be as consistent as possible with the names in the WSDL file,
and that the mapping from WSDL to Java must not create collisions.
Gary
====================================================================
                  Ready-to-Run Software, Inc.
              The Industry's Leading Provider of
              Cross-Platform and Porting Services
                 *****************************
email: [EMAIL PROTECTED]                 Gary Feldman
fax  : 1-978-692-5401              Ready-to-Run Software, Inc.
voice: 1-978-251-5431              11 School Street
www  : http://www.rtr.com          North Chelmsford, MA 01863
                                                     USA




This message may contain privileged and/or confidential information.  If you

have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.
This message may contain privileged and/or confidential information.  If you

have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.
This message may contain privileged and/or confidential information.  If you

have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.
 
This message may contain privileged and/or confidential information.  If you

have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.
 

This message may contain privileged and/or confidential information.  If you
have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.
     


This message may contain privileged and/or confidential information. If you have received this e-mail in error or are not the intended recipient, you may not use, copy, disseminate or distribute it; do not open any attachments, delete it immediately from your system and notify the sender promptly by e-mail that you have done so. Thank you.

Reply via email to