I'm now getting pretty clear on this .One last question?. 1. For all other castor classes which are not enumtype should i use castorserializers ?. thx pradeep.
---------------------------------------------------------------------------------------- This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. ---------------------------------------------------------------------------------------- "Gurkan, Ozzie (MAN-Corporate)" To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]> <Ozzie.Gurkan cc: @cox.com> Subject: RE: 1.2 alpha and castor serialization 12/11/2003 02:09 PM Please respond to axis-user 1. Castor generates special classes when you use the "xs:restriction" for simpleType in the schema. These special classes have no public constructors and can only be created via the use of "valueOf" method. Since Java doesn't provide "Enum" data types like C, C++ does, everyone has their own type-safe Enum implementation, and Castor is one of them. 2. You only need to add custom typeMappings into wsdd for these Enum type classes. The other generated classes are JavaBeans that have public no-arg constructors and hence are mappable using beanMappings tags in the wsdd file. 3. Yes. 4. Yes. The namespaces are read from the schema file and are not lost. The only thing that happens is that you now have control over the java package names. 5. Right, you don't need to give the client any custom serializer/deserializers, since the WSDL file will automatically contain the correct schema for generation. 6. Once you have the wsdd setup correctly on the server-side, generate the WSDL file by running the server and pointing to ?wsdl URI. Then feed this file into the Wsdl2Java class provided by Axis. As a matter of fact, you can feed the URL to WSDL directly into the generator. Here is a batch file snippet to run the Wsdl2Java generator: <snip> set axis.jar=%JAVALIBS%\jakarta\axis\1_1RC1\lib\axis.jar;%JAVALIBS% \jakarta\axis \1_1RC1\lib\saaj.jar;%JAVALIBS% \jakarta\axis\1_1RC1\lib\jaxrpc.jar;%JAVALIBS %\jakarta\axis\1_1RC1\lib\commons-logging.jar;%JAVALIBS% \jakarta\axis\1_1RC1 \lib\commons-discovery.jar set xerces.jar=%JAVALIBS%\jakarta\xerces\2.2.1\lib\xercesImpl.jar;%JAVALIBS% \jak arta\xerces\2.2.1\lib\xmlParserAPIs.jar set cp=%classpath%;%axis.jar%;%xerces.jar% java -cp %cp% org.apache.axis.wsdl.WSDL2Java http://localhost:8080/server/axis/Services?wsdl </snip> There is also good documentation on the Axis website on how to use it, too. -----Original Message----- From: Pradeep Jonnalagadda [mailto:[EMAIL PROTECTED] Sent: Thursday, December 11, 2003 2:46 PM To: [EMAIL PROTECTED] Subject: RE: 1.2 alpha and castor serialization Hi Ozzie, Thanks for the help. I have few questions based on ur email reply. 1. What are castor enum type classes. 2. Do i have to change typmapping for every entry in deploy.wsdd file to refer to CastorEnumTypeSerializorFactory/CastorEnumTypeSerializorFactory or only few selected castor classes files.If so what kind of castor files?? 3. Can we use Doc/literal with ur approach. 4.When you define namespaces package mappings in castorbuilder.properties file and generate source with source generator do you see namespace references in Descriptor files??. For example the descriptor code might look like this public AliasDescriptor() { super(); nsURI = "http://beans"; setExtendsWithoutFlatten(new beans.AliasTypeDescriptor()); xmlName = "Alias"; } //-- 5. Can i infer that i do not need to make any changes on client side .Can u send ur client code??. 6. How do you generate client code from thw wsdl?. Ur answers would help a, lot. thx pradeep. ---------------------------------------------------------------------------- ------------ This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. ---------------------------------------------------------------------------- ------------ "Gurkan, Ozzie (MAN-Corporate)" To: "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]> <Ozzie.Gurkan cc: @cox.com> Subject: RE: 1.2 alpha and castor serialization 12/11/2003 01:04 PM Please respond to axis-user One other advantage to my approach is that the client side doesn't need the Castor Serializer/Deserializers at all--not even the enum type. That is because I allow the WSDL to be created by Axis Server automatically and hence the WSDL2Java creates pure Bean Serializer/Deserialzer code. As a matter of fact, I don't generate client code anymore. I just tell my clients to get the WSDL and generate it themselves. They have no clue that I am using Castor beans in the background! Ozzie -----Original Message----- From: Gurkan, Ozzie (MAN-Corporate) [mailto:[EMAIL PROTECTED] Sent: Thursday, December 11, 2003 1:37 PM To: '[EMAIL PROTECTED]' Subject: RE: 1.2 alpha and castor serialization Unlike the article, I don't include the XSD in the WSDL file. I let the automatic WSDL generation process that Axis does generate it for me. I do generate the castor classes (along with the *Descriptor classes) from the XSD file and define these as beanMappings: <!-- Custom serializer/deserializer for Castor Enumtypes--> <typeMapping deserializer ="org.apache.axis.encoding.ser.castor.CastorEnumTypeDeserializer Factory" qname="ns19:creditBrokerSelected" serializer ="org.apache.axis.encoding.ser.castor.CastorEnumTypeSerializerFact ory" type=" java:com.manheim.service.creditreport.schema.types.CreditBrokerSelecte dType" xmlns:ns19="http://creditreport.service.portal.manheim.com/2003/8"/> <!-- Normal BeanMapping tag for a Castor bean class--> <beanMapping languageSpecificType=" java:com.manheim.service.creditreport.schema.CreditChe ckRequest" qname="ns176:creditCheckRequest" xmlns:ns176="http://creditreport.service.portal.manheim.com/2003/8"/> <beanMapping languageSpecificType=" java:com.manheim.service.creditreport.schema.CreditChe ckResponse" qname="ns176:creditCheckResponse" xmlns:ns176="http://creditreport.service.portal.manheim.com/2003/8"/> I am using RPC/encoded style and had it successfully working with literal, too. The only difference is that when you are doing "literal", you have to set the "encodingStyle" on the typeMapping element to a "". So, the difference from the article is that I don't allow delegation of the entire SOAP body to a CastorSerializer, which ends up using DOM--that is incredibly bad! I can attach the code for the EnumType serializer, if you do need it. A couple things to note on the code generation: - I almost always use namespace mapping to generate proper class package names. That is specified in castorbuilder.properties. - I wrap my messages with request and response objects. See beanMapping elements, CreditCheckRequest and CreditCheckResponse. These objects inherit a ServiceRequest and ServiceResponse abstract class. Advantages: - No hand modification to WSDL. Use the ?wsdl to auto generate with no customization. - Uses standard BeanSerializer/Deserializer methods, which are optimized to use SAX pipeline. - Minimal customization for EnumTypes, which doesn't use DOM, and automatically generates the proper schema for WSDL. - Works with RPC encoded/literal, etc. Ozzie Gurkan -----Original Message----- From: Pradeep Jonnalagadda [mailto:[EMAIL PROTECTED] Sent: Thursday, December 11, 2003 11:12 AM To: [EMAIL PROTECTED] Subject: RE: 1.2 alpha and castor serialization Hi Ozzie, I'm interested in ur solution. Can u send me the required files and give me a short note on how to use them in the context of the article . thx pradeep. ---------------------------------------------------------------------------- ------------ This is a PRIVATE message. If you are not the intended recipient, please delete without copying and kindly advise us by e-mail of the mistake in delivery. NOTE: Regardless of content, this e-mail shall not operate to bind CSC to any order or other contract unless pursuant to explicit written agreement or government initiative expressly permitting the use of e-mail for such purpose. ---------------------------------------------------------------------------- ------------