From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Friday, March 18, 2005 8:12 AM
To: axis-user@ws.apache.org
Subject: RE: .NET and Axis
<complexType name="ArrayOf_tns2_X">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="tns2:X"/>
</sequence>
....
<complexType name="Y">
<complexContent>
<sequence>
<element name="queries" nillable="true" type="impl:ArrayOf_X"/>
</sequence>
</complexContent>
</complexType>
<element name="Y">
<complexType>
<sequence>
<element maxOccurs="unbounded" name="X1" type="tns2:X"/>
</sequence>
</complexType>
</element>
-----Original Message-----
From: Dino Chiesa [mailto:[EMAIL PROTECTED]
Sent: 15 March 2005 2:19
To: Dino Chiesa; axis-user@ws.apache.org
Cc: Cooke, Aedemar
Subject: RE: .NET and AxisAedmar, One last thing. . .If I take your inquiry.wsdl, and modify it, I can generate a .NET client that accepts the response.xml that you included previously.The modifications are:- collapse all <schema> into a single <schema>, targetNamespace="http://inquiry.webservice.gpb.rbc.com"- re-define tns3 and tns4 to be "inquiry.webservice.gpb.rbc.com" rather than util... and customer....In other words, effectively I redefine all types used in the wsdl to reside in a single namespace. ("inquiry.blah.blah").Then, the .NET client generated from such a WSDL can consume the response document you sent out.I don't feel quite right in doing this. Effectively I have turned the contract on its head - I am writing the WSDL to conform to the actual XML on the wire, rather than the other way 'round ("WSDL First", which as you know is the One True Way to Interop Enlightenment).But, on the other hand, WSDL is just a tool, no? Modifying the WSDL in this way may be completely acceptable. Of course, a better approach is to convince AXIS to generate a WSDL like that, automatically. How? Just modify the WSDD so that all your custom types (Code, BankIdentifier, GPBException, etc) all reside in the same XMLNS, "http://inquiry.webservice.gpb.rbc.com"Then, the auto-gen'd WSDL should reflect the XML on the wire.-Dino
From: Dino Chiesa
Sent: Tuesday, March 15, 2005 7:59 AM
To: 'axis-user@ws.apache.org'
Subject: RE: .NET and Axisahh, sorry, I don't know much about custom serializers for AXIS, someone else maybe on the list can help you with that. maybe you need to restate the question (it has been a long-ish thread, and probably lots of people tuned out).
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 15, 2005 6:30 AM
To: axis-user@ws.apache.org
Subject: RE: .NET and AxisHi Dino,you can get it working because you are using the Axis generated Java beans which contains class specific Serializer and Deserializer code.If I cut and paste the Axis generated Serializer and Deserializer code into my existing classes it works aswell.Thanks to you I have recognised the problem, i.e., that using the de/serializers specified in the server-config.wsdd file creates name space issues.<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns5:BankIdentifier" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.rbc.gpb.util.BankIdentifier" xmlns:ns5="http://util.gpb.rbc.com"/>
<typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns6:Code" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.rbc.gpb.util.Code" xmlns:ns6="http://util.gpb.rbc.com"/>
Any idea how I can continue to use my preexisting Java classes (and there are a lot of them) without having to cut and paste the de/serializer code into each of them?Example of Axis generated Serializer and Deserializer code
private
static org.apache.axis.description.TypeDesc typeDesc =new org.apache.axis.description.TypeDesc(BankIdentifier.class, true);
static {
typeDesc.setXmlType(new javax.xml.namespace.QName("http://util.gpb.rbc.com", "BankIdentifier"));
org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("bank");
elemField.setXmlName(new javax.xml.namespace.QName("http://util.gpb.rbc.com", "bank"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("transit");
elemField.setXmlName(new javax.xml.namespace.QName("http://util.gpb.rbc.com", "transit"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("key");
elemField.setXmlName(new javax.xml.namespace.QName("http://util.gpb.rbc.com", "key"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"));
elemField.setNillable(true);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
elemField.setFieldName("number");
elemField.setXmlName(new javax.xml.namespace.QName("http://util.gpb.rbc.com", "number"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
typeDesc.addFieldDesc(elemField);
}
/**
* Return type metadata object
*/
public static org.apache.axis.description.TypeDesc getTypeDesc() {
return typeDesc;
}
/**
* Get Custom Serializer
*/
public static org.apache.axis.encoding.Serializer getSerializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return
new org.apache.axis.encoding.ser.BeanSerializer(
_javaType, _xmlType, typeDesc);
}
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return
new org.apache.axis.encoding.ser.BeanDeserializer(
_javaType, _xmlType, typeDesc);
}
------------------------------------------------------------
This e-mail may be privileged and/or confidential, and the sender does not waive any related rights and obligations. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately.
Ce courrier électronique est confidentiel et protégé. L'expéditeur ne renonce pas aux droits et obligations qui s'y rapportent. Toute diffusion, utilisation ou copie de ce message ou des renseignements qu'il contient par une personne autre que le (les) destinataire(s) désigné(s) est interdite. Si vous recevez ce courrier électronique par erreur, veuillez m'en aviser immédiatement, par retour de courrier électronique ou par un autre moyen.
============================================================
------------------------------------------------------------
This
e-mail may be privileged and/or confidential, and the sender does not waive any
related rights and obligations. Any distribution, use or copying of this e-mail
or the information it contains by other than an intended recipient is
unauthorized. If you received this e-mail in error, please advise me (by return
e-mail or otherwise) immediately.
Ce courrier électronique est
confidentiel et protégé. L'expéditeur ne renonce pas aux droits et obligations
qui s'y rapportent. Toute diffusion, utilisation ou copie de ce message ou des
renseignements qu'il contient par une personne autre que le (les)
destinataire(s) désigné(s) est interdite. Si vous recevez ce courrier
électronique par erreur, veuillez m'en aviser immédiatement, par retour de
courrier électronique ou par un autre
moyen.
============================================================