首先需要得到相应的 WSDL ,通过这些文件可以生成 WSDL 文件中定义的 Type 所对应的 Java 类,这些类有些类似于 Bean ,用于存储数据(如果知道 Type 在 WSDL 中的定义的话也可以手工完成相应类的定义,实现相应的方法即可)。使用 Apache 的包 org.apache.axis.wsdl 中的 WSDL2Java.java 将本例中的 3 个 WSDL 文件转化为 java 文件。
WSDL2Java.java
/**/ /* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.axis.wsdl; import org.apache.axis.constants.Scope; import org.apache.axis.utils.CLOption; import org.apache.axis.utils.CLOptionDescriptor; import org.apache.axis.utils.ClassUtils; import org.apache.axis.utils.JavaUtils; import org.apache.axis.utils.Messages; import org.apache.axis.wsdl.gen.Parser; import org.apache.axis.wsdl.gen.WSDL2; import org.apache.axis.wsdl.toJava.Emitter; import org.apache.axis.wsdl.toJava.NamespaceSelector; /** */ /** * Command line interface to the WSDL2Java utility */ public class WSDL2Java extends WSDL2 ... { // Define our short one-letter option identifiers. /** *//** Field SERVER_OPT */ protected static final int SERVER_OPT = 's'; /** *//** Field SKELETON_DEPLOY_OPT */ protected static final int SKELETON_DEPLOY_OPT = 'S'; /** *//** Field NAMESPACE_OPT */ protected static final int NAMESPACE_OPT = 'N'; /** *//** Field NAMESPACE_FILE_OPT */ protected static final int NAMESPACE_FILE_OPT = 'f'; /** *//** Field OUTPUT_OPT */ protected static final int OUTPUT_OPT = 'o'; /** *//** Field SCOPE_OPT */ protected static final int SCOPE_OPT = 'd'; /** *//** Field TEST_OPT */ protected static final int TEST_OPT = 't'; /** *//** Field BUILDFILE_OPT */ protected static final int BUILDFILE_OPT = 'B'; /** *//** Field PACKAGE_OPT */ protected static final int PACKAGE_OPT = 'p'; /** *//** Field ALL_OPT */ protected static final int ALL_OPT = 'a'; /** *//** Field TYPEMAPPING_OPT */ protected static final int TYPEMAPPING_OPT = 'T'; /** *//** Field FACTORY_CLASS_OPT */ protected static final int FACTORY_CLASS_OPT = 'F'; /** *//** Field HELPER_CLASS_OPT */ protected static final int HELPER_CLASS_OPT = 'H'; /** *//** Field USERNAME_OPT */ protected static final int USERNAME_OPT = 'U'; /** *//** Field PASSWORD_OPT */ protected static final int PASSWORD_OPT = 'P'; protected static final int CLASSPATH_OPT = 'X'; /** *//** Field bPackageOpt */ protected boolean bPackageOpt = false; /** *//** Field namespace include */ protected static final int NS_INCLUDE_OPT = 'i'; /** *//** Filed namespace exclude */ protected static final int NS_EXCLUDE_OPT = 'x'; /** *//** Field IMPL_CLASS_OPT */ protected static final int IMPL_CLASS_OPT = 'c'; /** *//** Field ALLOW_INVALID_URL_OPT */ protected static final int ALLOW_INVALID_URL_OPT = 'u'; /** *//** Wrap arrays option */ protected static final int WRAP_ARRAYS_OPT = 'w'; /** *//** Field emitter */ private Emitter emitter; /** *//** * Define the understood options. Each CLOptionDescriptor contains: * - The "long" version of the option. Eg, "help" means that "--help" will * be recognised. * - The option flags, governing the option's argument(s). * - The "short" version of the option. Eg, 'h' means that "-h" will be * recognised. * - A description of the option for the usage message */ protected static final CLOptionDescriptor[] options = new CLOptionDescriptor[]...{ new CLOptionDescriptor("server-side", CLOptionDescriptor.ARGUMENT_DISALLOWED, SERVER_OPT, Messages.getMessage("optionSkel00")), new CLOptionDescriptor("skeletonDeploy", CLOptionDescriptor.ARGUMENT_REQUIRED, SKELETON_DEPLOY_OPT, Messages.getMessage("optionSkeletonDeploy00")), new CLOptionDescriptor("NStoPkg", CLOptionDescriptor.DUPLICATES_ALLOWED + CLOptionDescriptor.ARGUMENTS_REQUIRED_2, NAMESPACE_OPT, Messages.getMessage("optionNStoPkg00")), new CLOptionDescriptor("fileNStoPkg", CLOptionDescriptor.ARGUMENT_REQUIRED, NAMESPACE_FILE_OPT, Messages.getMessage("optionFileNStoPkg00")), new CLOptionDescriptor("package", CLOptionDescriptor.ARGUMENT_REQUIRED, PACKAGE_OPT, Messages.getMessage("optionPackage00")), new CLOptionDescriptor("output", CLOptionDescriptor.ARGUMENT_REQUIRED, OUTPUT_OPT, Messages.getMessage("optionOutput00")), new CLOptionDescriptor("deployScope", CLOptionDescriptor.ARGUMENT_REQUIRED, SCOPE_OPT, Messages.getMessage("optionScope00")), new CLOptionDescriptor("testCase", CLOptionDescriptor.ARGUMENT_DISALLOWED, TEST_OPT, Messages.getMessage("optionTest00")), new CLOptionDescriptor("all", CLOptionDescriptor.ARGUMENT_DISALLOWED, ALL_OPT, Messages.getMessage("optionAll00")), new CLOptionDescriptor("typeMappingVersion", CLOptionDescriptor.ARGUMENT_REQUIRED, TYPEMAPPING_OPT, Messages.getMessage("optionTypeMapping00")), new CLOptionDescriptor("factory", CLOptionDescriptor.ARGUMENT_REQUIRED, FACTORY_CLASS_OPT, Messages.getMessage("optionFactory00")), new CLOptionDescriptor("helperGen", CLOptionDescriptor.ARGUMENT_DISALLOWED, HELPER_CLASS_OPT, Messages.getMessage("optionHelper00")), new CLOptionDescriptor("buildFile", CLOptionDescriptor.ARGUMENT_DISALLOWED, BUILDFILE_OPT, Messages.getMessage("optionBuildFile00")), new CLOptionDescriptor("user", CLOptionDescriptor.ARGUMENT_REQUIRED, USERNAME_OPT, Messages.getMessage("optionUsername")), new CLOptionDescriptor("password", CLOptionDescriptor.ARGUMENT_REQUIRED, PASSWORD_OPT, Messages.getMessage("optionPassword")), new CLOptionDescriptor("classpath", CLOptionDescriptor.ARGUMENT_OPTIONAL, CLASSPATH_OPT, Messages.getMessage("optionClasspath")), new CLOptionDescriptor("nsInclude", CLOptionDescriptor.DUPLICATES_ALLOWED + CLOptionDescriptor.ARGUMENT_REQUIRED, NS_INCLUDE_OPT, Messages.getMessage("optionNSInclude")), new CLOptionDescriptor("nsExclude", CLOptionDescriptor.DUPLICATES_ALLOWED + CLOptionDescriptor.ARGUMENT_REQUIRED, NS_EXCLUDE_OPT, Messages.getMessage("optionNSExclude")), new CLOptionDescriptor("implementationClassName", CLOptionDescriptor.ARGUMENT_REQUIRED, IMPL_CLASS_OPT, Messages.getMessage("implementationClassName")), new CLOptionDescriptor("allowInvalidURL", CLOptionDescriptor.ARGUMENT_DISALLOWED, ALLOW_INVALID_URL_OPT, Messages.getMessage("optionAllowInvalidURL")), new CLOptionDescriptor("wrapArrays", CLOptionDescriptor.ARGUMENT_OPTIONAL, WRAP_ARRAYS_OPT, Messages.getMessage("optionWrapArrays")), }; /** *//** * Instantiate a WSDL2Java emitter. */ protected WSDL2Java() ...{ // emitter is the same as the parent's parser variable. Just cast it // here once so we don't have to cast it every time we use it. emitter = (Emitter) parser; addOptions(options); } // ctor /** *//** * Instantiate an extension of the Parser * * @return */ protected Parser createParser() ...{ return new Emitter(); } // createParser /** *//** * Parse an option * * @param option is the option */ protected void parseOption(CLOption option) ...{ switch (option.getId()) ...{ case FACTORY_CLASS_OPT: emitter.setFactory(option.getArgument()); break; case HELPER_CLASS_OPT: emitter.setHelperWanted(true); break; case SKELETON_DEPLOY_OPT: emitter.setSkeletonWanted( JavaUtils.isTrueExplicitly(option.getArgument(0))); // --skeletonDeploy assumes --server-side, so fall thru case SERVER_OPT: emitter.setServerSide(true); break; case NAMESPACE_OPT: String namespace = option.getArgument(0); String packageName = option.getArgument(1); emitter.getNamespaceMap().put(namespace, packageName); break; case NAMESPACE_FILE_OPT: emitter.setNStoPkg(option.getArgument()); break; case PACKAGE_OPT: bPackageOpt = true; emitter.setPackageName(option.getArgument()); break; case OUTPUT_OPT: emitter.setOutputDir(option.getArgument()); break; case SCOPE_OPT: String arg = option.getArgument(); // Provide 'null' default, prevents logging internal error. // we have something different to report here. Scope scope = Scope.getScope(arg, null); if (scope != null) ...{ emitter.setScope(scope); } else ...{ System.err.println(Messages.getMessage("badScope00", arg)); } break; case TEST_OPT: emitter.setTestCaseWanted(true); break; case BUILDFILE_OPT: emitter.setBuildFileWanted(true); break; case ALL_OPT: emitter.setAllWanted(true); break; case TYPEMAPPING_OPT: String tmValue = option.getArgument(); if (tmValue.equals("1.0")) ...{ emitter.setTypeMappingVersion("1.0"); } else if (tmValue.equals("1.1")) ...{ emitter.setTypeMappingVersion("1.1"); } else if (tmValue.equals("1.2")) ...{ emitter.setTypeMappingVersion("1.2"); } else if (tmValue.equals("1.3")) ...{ emitter.setTypeMappingVersion("1.3"); } else ...{ System.out.println( Messages.getMessage("badTypeMappingOption00")); } break; case USERNAME_OPT: emitter.setUsername(option.getArgument()); break; case PASSWORD_OPT: emitter.setPassword(option.getArgument()); break; case CLASSPATH_OPT: ClassUtils.setDefaultClassLoader(ClassUtils.createClassLoader( option.getArgument(), this.getClass().getClassLoader())); break; case NS_INCLUDE_OPT: NamespaceSelector include = new NamespaceSelector(); include.setNamespace(option.getArgument()); emitter.getNamespaceIncludes().add(include); break; case NS_EXCLUDE_OPT: NamespaceSelector exclude = new NamespaceSelector(); exclude.setNamespace(option.getArgument()); emitter.getNamespaceExcludes().add(exclude); break; case IMPL_CLASS_OPT: emitter.setImplementationClassName(option.getArgument()); break; case ALLOW_INVALID_URL_OPT: emitter.setAllowInvalidURL(true); break; case WRAP_ARRAYS_OPT: emitter.setWrapArrays(true); break; default : super.parseOption(option); } } // parseOption /** *//** * validateOptions * This method is invoked after the options are set to validate * the option settings. */ protected void validateOptions() ...{ super.validateOptions(); // validate argument combinations if (emitter.isSkeletonWanted() && !emitter.isServerSide()) ...{ System.out.println(Messages.getMessage("badSkeleton00")); printUsage(); } if (!emitter.getNamespaceMap().isEmpty() && bPackageOpt) ...{ System.out.println(Messages.getMessage("badpackage00")); printUsage(); } } // validateOptions /** *//** * Main * Run the WSDL2Java emitter with the specified command-line arguments * * @param args command-line arguments */ public static void main(String args[]) ...{ WSDL2Java wsdl2java = new WSDL2Java(); //wsdl2java.run(args); String[] v=...{"E:/Program Files/activeBPEL/Designer/workspace/airline/wsdl/Travel.wsdl"}; wsdl2java.run(v); }}
生成4个文件,分别如下:
airline包中
FlightConfirmationType.java
/** */ /** * FlightConfirmationType.java * * This file was auto-generated from WSDL * by the Apache Axis #axisVersion# #today# WSDL2Java emitter. */ package com.packtpub.service.airline; public class FlightConfirmationType implements java.io.Serializable ... { private java.lang.String flightNo; private com.packtpub.service.airline.TravelClassType travelClass; private float price; private java.util.Calendar departureDateTime; private java.util.Calendar returnDateTime; private boolean approved; public FlightConfirmationType() ...{ } public FlightConfirmationType( java.lang.String flightNo, com.packtpub.service.airline.TravelClassType travelClass, float price, java.util.Calendar departureDateTime, java.util.Calendar returnDateTime, boolean approved) ...{ this.flightNo = flightNo; this.travelClass = travelClass; this.price = price; this.departureDateTime = departureDateTime; this.returnDateTime = returnDateTime; this.approved = approved; } /** *//** * Gets the flightNo value for this FlightConfirmationType. * * @return flightNo */ public java.lang.String getFlightNo() ...{ return flightNo; } /** *//** * Sets the flightNo value for this FlightConfirmationType. * * @param flightNo */ public void setFlightNo(java.lang.String flightNo) ...{ this.flightNo = flightNo; } /** *//** * Gets the travelClass value for this FlightConfirmationType. * * @return travelClass */ public com.packtpub.service.airline.TravelClassType getTravelClass() ...{ return travelClass; } /** *//** * Sets the travelClass value for this FlightConfirmationType. * * @param travelClass */ public void setTravelClass(com.packtpub.service.airline.TravelClassType travelClass) ...{ this.travelClass = travelClass; } /** *//** * Gets the price value for this FlightConfirmationType. * * @return price */ public float getPrice() ...{ return price; } /** *//** * Sets the price value for this FlightConfirmationType. * * @param price */ public void setPrice(float price) ...{ this.price = price; } /** *//** * Gets the departureDateTime value for this FlightConfirmationType. * * @return departureDateTime */ public java.util.Calendar getDepartureDateTime() ...{ return departureDateTime; } /** *//** * Sets the departureDateTime value for this FlightConfirmationType. * * @param departureDateTime */ public void setDepartureDateTime(java.util.Calendar departureDateTime) ...{ this.departureDateTime = departureDateTime; } /** *//** * Gets the returnDateTime value for this FlightConfirmationType. * * @return returnDateTime */ public java.util.Calendar getReturnDateTime() ...{ return returnDateTime; } /** *//** * Sets the returnDateTime value for this FlightConfirmationType. * * @param returnDateTime */ public void setReturnDateTime(java.util.Calendar returnDateTime) ...{ this.returnDateTime = returnDateTime; } /** *//** * Gets the approved value for this FlightConfirmationType. * * @return approved */ public boolean isApproved() ...{ return approved; } /** *//** * Sets the approved value for this FlightConfirmationType. * * @param approved */ public void setApproved(boolean approved) ...{ this.approved = approved; } private java.lang.Object __equalsCalc = null; public synchronized boolean equals(java.lang.Object obj) ...{ if (!(obj instanceof FlightConfirmationType)) return false; FlightConfirmationType other = (FlightConfirmationType) obj; if (obj == null) return false; if (this == obj) return true; if (__equalsCalc != null) ...{ return (__equalsCalc == obj); } __equalsCalc = obj; boolean _equals; _equals = true && ((this.flightNo==null && other.getFlightNo()==null) || (this.flightNo!=null && this.flightNo.equals(other.getFlightNo()))) && ((this.travelClass==null && other.getTravelClass()==null) || (this.travelClass!=null && this.travelClass.equals(other.getTravelClass()))) && this.price == other.getPrice() && ((this.departureDateTime==null && other.getDepartureDateTime()==null) || (this.departureDateTime!=null && this.departureDateTime.equals(other.getDepartureDateTime()))) && ((this.returnDateTime==null && other.getReturnDateTime()==null) || (this.returnDateTime!=null && this.returnDateTime.equals(other.getReturnDateTime()))) && this.approved == other.isApproved(); __equalsCalc = null; return _equals; } private boolean __hashCodeCalc = false; public synchronized int hashCode() ...{ if (__hashCodeCalc) ...{ return 0; } __hashCodeCalc = true; int _hashCode = 1; if (getFlightNo() != null) ...{ _hashCode += getFlightNo().hashCode(); } if (getTravelClass() != null) ...{ _hashCode += getTravelClass().hashCode(); } _hashCode += new Float(getPrice()).hashCode(); if (getDepartureDateTime() != null) ...{ _hashCode += getDepartureDateTime().hashCode(); } if (getReturnDateTime() != null) ...{ _hashCode += getReturnDateTime().hashCode(); } _hashCode += (isApproved() ? Boolean.TRUE : Boolean.FALSE).hashCode(); __hashCodeCalc = false; return _hashCode; } // Type metadata private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(FlightConfirmationType.class, true); static ...{ typeDesc.setXmlType(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "FlightConfirmationType")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("flightNo"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "FlightNo")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("travelClass"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "TravelClass")); elemField.setXmlType(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "TravelClassType")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("price"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "Price")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "float")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("departureDateTime"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "DepartureDateTime")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "dateTime")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("returnDateTime"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "ReturnDateTime")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "dateTime")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("approved"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "Approved")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean")); elemField.setNillable(false); 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); }}
FlightRequestType.java
/** */ /** * FlightRequestType.java * * This file was auto-generated from WSDL * by the Apache Axis #axisVersion# #today# WSDL2Java emitter. */ package com.packtpub.service.airline; public class FlightRequestType implements java.io.Serializable ... { private java.lang.String originFrom; private java.lang.String destinationTo; private java.util.Date desiredDepartureDate; private java.util.Date desiredReturnDate; public FlightRequestType() ...{ } public FlightRequestType( java.lang.String originFrom, java.lang.String destinationTo, java.util.Date desiredDepartureDate, java.util.Date desiredReturnDate) ...{ this.originFrom = originFrom; this.destinationTo = destinationTo; this.desiredDepartureDate = desiredDepartureDate; this.desiredReturnDate = desiredReturnDate; } /** *//** * Gets the originFrom value for this FlightRequestType. * * @return originFrom */ public java.lang.String getOriginFrom() ...{ return originFrom; } /** *//** * Sets the originFrom value for this FlightRequestType. * * @param originFrom */ public void setOriginFrom(java.lang.String originFrom) ...{ this.originFrom = originFrom; } /** *//** * Gets the destinationTo value for this FlightRequestType. * * @return destinationTo */ public java.lang.String getDestinationTo() ...{ return destinationTo; } /** *//** * Sets the destinationTo value for this FlightRequestType. * * @param destinationTo */ public void setDestinationTo(java.lang.String destinationTo) ...{ this.destinationTo = destinationTo; } /** *//** * Gets the desiredDepartureDate value for this FlightRequestType. * * @return desiredDepartureDate */ public java.util.Date getDesiredDepartureDate() ...{ return desiredDepartureDate; } /** *//** * Sets the desiredDepartureDate value for this FlightRequestType. * * @param desiredDepartureDate */ public void setDesiredDepartureDate(java.util.Date desiredDepartureDate) ...{ this.desiredDepartureDate = desiredDepartureDate; } /** *//** * Gets the desiredReturnDate value for this FlightRequestType. * * @return desiredReturnDate */ public java.util.Date getDesiredReturnDate() ...{ return desiredReturnDate; } /** *//** * Sets the desiredReturnDate value for this FlightRequestType. * * @param desiredReturnDate */ public void setDesiredReturnDate(java.util.Date desiredReturnDate) ...{ this.desiredReturnDate = desiredReturnDate; } private java.lang.Object __equalsCalc = null; public synchronized boolean equals(java.lang.Object obj) ...{ if (!(obj instanceof FlightRequestType)) return false; FlightRequestType other = (FlightRequestType) obj; if (obj == null) return false; if (this == obj) return true; if (__equalsCalc != null) ...{ return (__equalsCalc == obj); } __equalsCalc = obj; boolean _equals; _equals = true && ((this.originFrom==null && other.getOriginFrom()==null) || (this.originFrom!=null && this.originFrom.equals(other.getOriginFrom()))) && ((this.destinationTo==null && other.getDestinationTo()==null) || (this.destinationTo!=null && this.destinationTo.equals(other.getDestinationTo()))) && ((this.desiredDepartureDate==null && other.getDesiredDepartureDate()==null) || (this.desiredDepartureDate!=null && this.desiredDepartureDate.equals(other.getDesiredDepartureDate()))) && ((this.desiredReturnDate==null && other.getDesiredReturnDate()==null) || (this.desiredReturnDate!=null && this.desiredReturnDate.equals(other.getDesiredReturnDate()))); __equalsCalc = null; return _equals; } private boolean __hashCodeCalc = false; public synchronized int hashCode() ...{ if (__hashCodeCalc) ...{ return 0; } __hashCodeCalc = true; int _hashCode = 1; if (getOriginFrom() != null) ...{ _hashCode += getOriginFrom().hashCode(); } if (getDestinationTo() != null) ...{ _hashCode += getDestinationTo().hashCode(); } if (getDesiredDepartureDate() != null) ...{ _hashCode += getDesiredDepartureDate().hashCode(); } if (getDesiredReturnDate() != null) ...{ _hashCode += getDesiredReturnDate().hashCode(); } __hashCodeCalc = false; return _hashCode; } // Type metadata private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(FlightRequestType.class, true); static ...{ typeDesc.setXmlType(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "FlightRequestType")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("originFrom"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "OriginFrom")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("destinationTo"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "DestinationTo")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("desiredDepartureDate"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "DesiredDepartureDate")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "date")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("desiredReturnDate"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "DesiredReturnDate")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "date")); elemField.setNillable(false); 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); }}
TravelClassType.java
employee包中
/** */ /** * TravelClassType.java * * This file was auto-generated from WSDL * by the Apache Axis #axisVersion# #today# WSDL2Java emitter. */ package com.packtpub.service.airline; public class TravelClassType implements java.io.Serializable ... { private java.lang.String _value_; private static java.util.HashMap _table_ = new java.util.HashMap(); // Constructor protected TravelClassType(java.lang.String value) ...{ _value_ = value; _table_.put(_value_,this); } public static final java.lang.String _Economy = "Economy"; public static final java.lang.String _Business = "Business"; public static final java.lang.String _First = "First"; public static final TravelClassType Economy = new TravelClassType(_Economy); public static final TravelClassType Business = new TravelClassType(_Business); public static final TravelClassType First = new TravelClassType(_First); public java.lang.String getValue() ...{ return _value_;} public static TravelClassType fromValue(java.lang.String value) throws java.lang.IllegalArgumentException ...{ TravelClassType enumeration = (TravelClassType) _table_.get(value); if (enumeration==null) throw new java.lang.IllegalArgumentException(); return enumeration; } public static TravelClassType fromString(java.lang.String value) throws java.lang.IllegalArgumentException ...{ return fromValue(value); } public boolean equals(java.lang.Object obj) ...{return (obj == this);} public int hashCode() ...{ return toString().hashCode();} public java.lang.String toString() ...{ return _value_;} public java.lang.Object readResolve() throws java.io.ObjectStreamException ...{ return fromValue(_value_);} 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.EnumSerializer( _javaType, _xmlType); } 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.EnumDeserializer( _javaType, _xmlType); } // Type metadata private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(TravelClassType.class); static ...{ typeDesc.setXmlType(new javax.xml.namespace.QName("http://packtpub.com/service/airline/", "TravelClassType")); } /** *//** * Return type metadata object */ public static org.apache.axis.description.TypeDesc getTypeDesc() ...{ return typeDesc; }}
EmployeeType.java
/** */ /** * EmployeeType.java * * This file was auto-generated from WSDL * by the Apache Axis #axisVersion# #today# WSDL2Java emitter. */ package com.packtpub.service.employee; public class EmployeeType implements java.io.Serializable ... { private java.lang.String firstName; private java.lang.String lastName; private java.lang.String departement; public EmployeeType() ...{ } public EmployeeType( java.lang.String firstName, java.lang.String lastName, java.lang.String departement) ...{ this.firstName = firstName; this.lastName = lastName; this.departement = departement; } /** *//** * Gets the firstName value for this EmployeeType. * * @return firstName */ public java.lang.String getFirstName() ...{ return firstName; } /** *//** * Sets the firstName value for this EmployeeType. * * @param firstName */ public void setFirstName(java.lang.String firstName) ...{ this.firstName = firstName; } /** *//** * Gets the lastName value for this EmployeeType. * * @return lastName */ public java.lang.String getLastName() ...{ return lastName; } /** *//** * Sets the lastName value for this EmployeeType. * * @param lastName */ public void setLastName(java.lang.String lastName) ...{ this.lastName = lastName; } /** *//** * Gets the departement value for this EmployeeType. * * @return departement */ public java.lang.String getDepartement() ...{ return departement; } /** *//** * Sets the departement value for this EmployeeType. * * @param departement */ public void setDepartement(java.lang.String departement) ...{ this.departement = departement; } private java.lang.Object __equalsCalc = null; public synchronized boolean equals(java.lang.Object obj) ...{ if (!(obj instanceof EmployeeType)) return false; EmployeeType other = (EmployeeType) obj; if (obj == null) return false; if (this == obj) return true; if (__equalsCalc != null) ...{ return (__equalsCalc == obj); } __equalsCalc = obj; boolean _equals; _equals = true && ((this.firstName==null && other.getFirstName()==null) || (this.firstName!=null && this.firstName.equals(other.getFirstName()))) && ((this.lastName==null && other.getLastName()==null) || (this.lastName!=null && this.lastName.equals(other.getLastName()))) && ((this.departement==null && other.getDepartement()==null) || (this.departement!=null && this.departement.equals(other.getDepartement()))); __equalsCalc = null; return _equals; } private boolean __hashCodeCalc = false; public synchronized int hashCode() ...{ if (__hashCodeCalc) ...{ return 0; } __hashCodeCalc = true; int _hashCode = 1; if (getFirstName() != null) ...{ _hashCode += getFirstName().hashCode(); } if (getLastName() != null) ...{ _hashCode += getLastName().hashCode(); } if (getDepartement() != null) ...{ _hashCode += getDepartement().hashCode(); } __hashCodeCalc = false; return _hashCode; } // Type metadata private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(EmployeeType.class, true); static ...{ typeDesc.setXmlType(new javax.xml.namespace.QName("http://packtpub.com/service/employee/", "EmployeeType")); org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("firstName"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/employee/", "FirstName")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("lastName"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/employee/", "LastName")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("departement"); elemField.setXmlName(new javax.xml.namespace.QName("http://packtpub.com/service/employee/", "Departement")); elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); elemField.setNillable(false); 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); }}
调用相应的Web服务。以下是一个调用航空售票流程的例子。
import java.net.URL; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import com.packtpub.service.airline. * ; import com.packtpub.service.employee. * ; import javax.xml.namespace.QName; import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory; public class AirLineUse ... { public static void main(String args[]) ...{ try ...{ AriLineUse client = new AriLineUse(); client.run(); } catch(Exception e) ...{ e.printStackTrace(); } } public void run() throws Exception ...{ //创建一个Call的实例,并配置相应的参数Call call = createCall(); try ...{ /**//*创建输入参数的实例,在本例中,调用的Operation是TravelApprovalPT(Port Type)中的TravelApproval,输入的Massage是trv:TravelRequestMessage,输出的Message是aln:TravelResponseMessage(消息的定义参考相应的wsdl)*/ EmployeeType et = new EmployeeType("d","dd","spk"); FlightRequestType frt = new FlightRequestType("bj","sh",new java.util.Date(),new java.util.Date()); //调用web服务,并接受返回的数值 FlightConfirmationType fct = (FlightConfirmationType)call.invoke(new Object[] ...{et,frt}); System.out.println("Here is the response from the AirLine : "); System.out.println(" FlightNo : " + fct.getFlightNo()); System.out.println(" TravelClass : " + fct.getTravelClass()); System.out.println(" Price : " + fct.getPrice()); System.out.println(" DepartureDateTime : " + fct.getDepartureDateTime().getTime().toString()); System.out.println(" ReturnDateTime : " + fct.getReturnDateTime().getTime().toString()); System.out.println(" Approved : " + (fct.isApproved() == true?"yes":"no")); } catch(Exception e) ...{ System.out.println("unexpected exception seen: " + e.toString()); } } //创建一个Call 的实例用于调用相应的web服务 protected Call createCall() throws Exception ...{ Service service = new Service(); Call call = (Call)service.createCall(); //WebService的URL String urlString = "http://localhost:8085/active-bpel/services/clientService"; call.setTargetEndpointAddress(new URL(urlString)); //需要调用的PortType中的Operation call.setOperationName("TravelApproval"); //为每个ComplexType定义相应的Qualified Name QName qq = new QName("http://packtpub.com/service/employee/","EmployeeType"); QName frt = new QName("http://packtpub.com/service/airline/","FlightRequestType"); QName fct = new QName("http://packtpub.com/service/airline/","FlightConfirmationType"); //将定义的Type注册到call中,同时生成并注册构造器和反构造器。 call.registerTypeMapping(EmployeeType.class,qq, new BeanSerializerFactory(EmployeeType.class, qq), new BeanDeserializerFactory(EmployeeType.class, qq) ); call.registerTypeMapping(FlightRequestType.class,frt, new BeanSerializerFactory(FlightRequestType.class, frt), new BeanDeserializerFactory(FlightRequestType.class, frt) ); call.registerTypeMapping(FlightConfirmationType.class,fct, new BeanSerializerFactory(FlightConfirmationType.class, fct), new BeanDeserializerFactory ( FlightConfirmationType.class , fct) ); //设置参数类型和返回值类型 call.addParameter("employee", qq, ParameterMode.IN); call.addParameter("flightData", frt, ParameterMode.IN); call.setReturnType(fct); return call; }}