String webServiceURL = vendor.getWebServiceURL();
String webServiceTopNameSpace = vendor.getWebServiceTopNameSpace();
String webServiceTypeMappingNameSpace = vendor.getWebServiceTypeMappingNameSpace();
String webServiceServiceLocalPart = vendor.getWebServiceServiceLocalPart();
String webServicePortLocalPart = vendor.getWebServicePortLocalPart();
String webServiceOperationLocalPart = vendor.getWebServiceOperationLocalPart();

// Just trying to shut SEND_TYPE_ATTR off.
AxisProperties.setProperty(Call.SEND_TYPE_ATTR, "false");

ServiceFactory sf = ServiceFactory.newInstance();
URL wsdlURL = new URL(webServiceURL + "?wsdl");
QName serviceQname = new QName(webServiceTopNameSpace, webServiceServiceLocalPart);
logger.warning("Attempting to create service based off of:\n" + wsdlURL.toString() + "\n" + webServiceTopNameSpace + "\n" + webServiceServiceLocalPart);
Service s = (Service) sf.createService(wsdlURL, serviceQname);

QName portQname = new QName(webServiceTopNameSpace, webServicePortLocalPart);
QName operationQname = new QName(webServiceTopNameSpace, webServiceOperationLocalPart);
Call call = (Call) s.createCall(portQname, operationQname);
// To make sure we turn off sending XSIType for each tag.
call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);

QName orderQname = new QName(webServiceTypeMappingNameSpace, "Order" );
call.registerTypeMapping(Order.class, orderQname,
	new org.apache.axis.encoding.ser.BeanSerializerFactory(Order.class, orderQname),        
	new org.apache.axis.encoding.ser.BeanDeserializerFactory(Order.class, orderQname));

QName orderItemQname = new QName(webServiceTypeMappingNameSpace, "orderItem" );
call.registerTypeMapping(OrderItem.class, orderItemQname,
	new org.apache.axis.encoding.ser.BeanSerializerFactory(OrderItem.class, orderItemQname),        
	new org.apache.axis.encoding.ser.BeanDeserializerFactory(OrderItem.class, orderItemQname));

QName addressQname = new QName(webServiceTypeMappingNameSpace, "Address" );
call.registerTypeMapping(Address.class, addressQname,
	new org.apache.axis.encoding.ser.BeanSerializerFactory(Address.class, addressQname),        
	new org.apache.axis.encoding.ser.BeanDeserializerFactory(Address.class, addressQname));

QName orderStatusQname = new QName(webServiceTypeMappingNameSpace, "OrderStatus" );
call.registerTypeMapping(OrderStatus.class, orderStatusQname,
	new org.apache.axis.encoding.ser.BeanSerializerFactory(OrderStatus.class, orderStatusQname),        
	new org.apache.axis.encoding.ser.BeanDeserializerFactory(OrderStatus.class, orderStatusQname));

QName arrayOfOrderItemQname = new QName(webServiceTypeMappingNameSpace, "ArrayOfOrderItem" );
call.registerTypeMapping(ArrayOfOrderItem.class, arrayOfOrderItemQname,
	new org.apache.axis.encoding.ser.BeanSerializerFactory(ArrayOfOrderItem.class, arrayOfOrderItemQname),        
	new org.apache.axis.encoding.ser.BeanDeserializerFactory(ArrayOfOrderItem.class, arrayOfOrderItemQname));

call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE);
logger.warning("Encoding Style: " + call.getEncodingStyle());
logger.warning("Send Types: " + call.getProperty(Call.SEND_TYPE_ATTR));

OrderStatus orderStatus = (OrderStatus) call.invoke(new Object [] { order });
return orderStatus;
