Return type in wsimport-generated service stub methods - wsdl

Here is an example of wsimport-generated service stub method:
#WebMethod(operationName = "GetSynonym", action = "GetSynonymRequest")
#WebResult(name = "Synonyms", targetNamespace = "service.bnsf.com/contact/ContactMessages")
#RequestWrapper(localName = "GetSynonym", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymRequest")
#ResponseWrapper(localName = "GetSynonymResponse", targetNamespace = "service.bnsf.com/contact/ContactMessages", className = "com.bnsf.service.contact.contactmessages.GetSynonymResponse")
public Synonyms getSynonym(
#WebParam(name = "RequestContext", targetNamespace = "service.bnsf.com/contact/ContactMessages") RequestContext requestContext,
#WebParam(name = "SynonymId", targetNamespace = "service.bnsf.com/contact/ContactMessages") EntityId synonymId)
throws BusinessFaultMessage, ServiceFaultMessage;
Note that return type is Synonyms class.
Here are the relevant wsdl parts:
<xs:element name="GetSynonymResponse" type="GetSynonymResponse"/>
<xs:complexType name="GetSynonymResponse">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="Synonyms" type="account:Synonyms"/>
</xs:sequence>
</xs:complexType>
...
<wsdl:message name="GetSynonymResponse">
<wsdl:part element="msg:GetSynonymResponse" name="GetSynonymResponse"/>
</wsdl:message>
...
<wsdl:operation name="GetSynonym">
<soap:operation soapAction="GetSynonymRequest" style="document"/>
<wsdl:input name="GetSynonymRequestRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="GetSynonymRequestResponse">
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="BusinessFault">
<soap:fault name="BusinessFault" use="literal"/>
</wsdl:fault>
<wsdl:fault name="ServiceFault">
<soap:fault name="ServiceFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
By default wsimport has generated service method with Synonyms class as return type rather than GetSynonymResponse class.
My question is whether this is customizable - is there a possibility to make wsimport generate service methods with different signatures, particularly having GetSynonymResponse class as return type?
Thanks in advance,
Valery

Found how this is configurable:
The feature called "WrapperStyle" should be disabled to make generated method return xxxResponse type.
This is accomplishable by providing -b parameter to wsimport like
wsimport" -b binding.xml ContactService.wsdl
with binding.xml contents as
<jaxws:bindings wsdlLocation="ContactService.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<!-- Turn off wrapper style Java method signature generation -->
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

Related

Use Sabre SOAP API with iOS

Does anyone know how to use sabre SOAP web services with IOS? anyone has done that ? I am using AFNetworking for the network call.
I am using AFHTTPRequestOperation to make a call to web service but that web service require authentication.
Authentication parameters are username , password , and IPCC. I can set username and password by
NSURLCredential *credential = [NSURLCredential credentialWithUser:#"aaaaa" password:#"aaaaaa" persistence:NSURLCredentialPersistenceNone];
[operation setCredential:credential];
but how can set that IPCC parameter?
Something like (quick and dirty):
NSString *soapMessage = [NSString stringWithFormat:
#"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:eb=\"http://www.ebxml.org/namespaces/messageHeader\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">"
" <SOAP-ENV:Header>"
" <eb:MessageHeader SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">"
" <eb:ConversationId/>"
" <eb:From>"
" <eb:PartyId type=\"urn:x12.org:IO5:01\">999999</eb:PartyId>"
" </eb:From>"
" <eb:To>"
" <eb:PartyId type=\"urn:x12.org:IO5:01\">123123</eb:PartyId>"
" </eb:To>"
" <eb:CPAId>IPCC</eb:CPAId>"
" <eb:Service eb:type=\"OTA\">SessionCreateRQ</eb:Service>"
" <eb:Action>SessionCreateRQ</eb:Action>"
" <eb:MessageData>"
" <eb:MessageId>1000</eb:MessageId>"
" <eb:Timestamp>2001-02-15T11:15:12Z</eb:Timestamp>"
" <eb:TimeToLive>2001-02-15T11:15:12Z</eb:TimeToLive>"
" </eb:MessageData>"
" </eb:MessageHeader>"
" <wsse:Security xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/12/secext\" xmlns:wsu=\"http://schemas.xmlsoap.org/ws/2002/12/utility\">"
" <wsse:UsernameToken>"
" <wsse:Username>%#</wsse:Username>"
" <wsse:Password>%#</wsse:Password>"
" <Organization>%#</Organization>"
" <Domain>DEFAULT</Domain>"
" </wsse:UsernameToken>"
" </wsse:Security>"
" </SOAP-ENV:Header>"
" <SOAP-ENV:Body>"
" <eb:Manifest SOAP-ENV:mustUnderstand=\"1\" eb:version=\"1.0\">"
" <eb:Reference xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"cid:rootelement\" xlink:type=\"simple\"/>"
" </eb:Manifest>"
" </SOAP-ENV:Body>"
"</SOAP-ENV:Envelope>"
,username
,password
,ipccValue
];
I assume you mean the ipccValue in the Organization block, rather than the eb:CPAId block
from https://developer.sabre.com/docs/read/soap_basics/Authentication
and credits to send parameter in soap web service from ios
When i tried the above snippet its returning me this
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.opentravel.org/OTA/2002/11" xmlns:tns="https://webservices.sabre.com/websvc" xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" targetNamespace="https://webservices.sabre.com/websvc">
<types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.opentravel.org/OTA/2002/11" schemaLocation="SessionCreateRQRS.xsd"/>
<xsd:import namespace="http://www.ebxml.org/namespaces/messageHeader" schemaLocation="msg-header-2_0.xsd"/>
<xsd:import namespace="http://schemas.xmlsoap.org/ws/2002/12/secext" schemaLocation="wsse.xsd"/>
</xsd:schema>
</types>
<message name="GetSessionCreateInput">
<part name="header" element="eb:MessageHeader"/>
<part name="header2" element="wsse:Security"/>
<part name="body" element="xsd1:SessionCreateRQ"/>
</message>
<message name="GetSessionCreateOutput">
<part name="header" element="eb:MessageHeader"/>
<part name="header2" element="wsse:Security"/>
<part name="body" element="xsd1:SessionCreateRS"/>
</message>
<portType name="SessionCreatePortType">
<operation name="SessionCreateRQ">
<input message="tns:GetSessionCreateInput"/>
<output message="tns:GetSessionCreateOutput"/>
</operation>
</portType>
<binding name="SessionCreateSoapBinding" type="tns:SessionCreatePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="SessionCreateRQ">
<soap:operation soapAction="OTA"/>
<input>
<soap:header message="tns:GetSessionCreateInput" part="header" use="literal"/>
<soap:header message="tns:GetSessionCreateInput" part="header2" use="literal"/>
<soap:body parts="body" use="literal"/>
</input>
<output>
<soap:header message="tns:GetSessionCreateOutput" part="header" use="literal"/>
<soap:header message="tns:GetSessionCreateOutput" part="header2" use="literal"/>
<soap:body parts="body" use="literal"/>
</output>
</operation>
</binding>
<service name="SessionCreateRQService">
<port name="SessionCreatePortType" binding="tns:SessionCreateSoapBinding">
<soap:address location="https://webservices.sabre.com"/>
</port>
</service>
</definitions>

generate wsdl from legacy jax-ws client code

it´s possible to generate a WSDL using the JAX-WS client code only?
I have a legacy client code without wsdl inside, just remote wsdl uri, and I need to create mockservices for that client code and I need the WSDL to create this mocks.
Any idea?
For purpose of creating a mock/stub service provider, I believe it is better to download the original WSDL if you can. The risk with generating a WSDL from client generated code is the definite possibility the generated WSDL doesn't exactly match the original, which defeats the purpose of mocking or stubbing.
However, here were the steps I used to generate a WSDL from a generated JAX-WS client. I did have to hand-code an implementation class.
Original WSDL: http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
Generate JAX-WS client:
wsimport -extension -keep http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
This creates the sample JAX-WS client, which includes a generated service endpoint interface (SEI): com.cdyne.ws.weatherws.WeatherSoap
Oddly enough, we need an implementation class to run wsgen to generate a WSDL. I manually created an implementation class, declared it to implement the SEI, then copied all methods from the interface definition and gave each a return null; implementation.
package com.cdyne.ws.weatherws;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
#WebService(name = "WeatherSoap", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
public class WeatherSoapStubImpl implements WeatherSoap {
/**
* Gets Information for each WeatherID
*
* #return
* returns com.cdyne.ws.weatherws.ArrayOfWeatherDescription
*/
#WebMethod(operationName = "GetWeatherInformation", action = "http://ws.cdyne.com/WeatherWS/GetWeatherInformation")
#WebResult(name = "GetWeatherInformationResult", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
#RequestWrapper(localName = "GetWeatherInformation", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetWeatherInformation")
#ResponseWrapper(localName = "GetWeatherInformationResponse", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetWeatherInformationResponse")
public ArrayOfWeatherDescription getWeatherInformation() {
return null;
}
/**
* Allows you to get your City Forecast Over the Next 7 Days, which is updated hourly. U.S. Only
*
* #param zip
* #return
* returns com.cdyne.ws.weatherws.ForecastReturn
*/
#WebMethod(operationName = "GetCityForecastByZIP", action = "http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP")
#WebResult(name = "GetCityForecastByZIPResult", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
#RequestWrapper(localName = "GetCityForecastByZIP", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetCityForecastByZIP")
#ResponseWrapper(localName = "GetCityForecastByZIPResponse", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetCityForecastByZIPResponse")
public ForecastReturn getCityForecastByZIP(
#WebParam(name = "ZIP", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
String zip) {
return null;
}
/**
* Allows you to get your City's Weather, which is updated hourly. U.S. Only
*
* #param zip
* #return
* returns com.cdyne.ws.weatherws.WeatherReturn
*/
#WebMethod(operationName = "GetCityWeatherByZIP", action = "http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP")
#WebResult(name = "GetCityWeatherByZIPResult", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
#RequestWrapper(localName = "GetCityWeatherByZIP", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetCityWeatherByZIP")
#ResponseWrapper(localName = "GetCityWeatherByZIPResponse", targetNamespace = "http://ws.cdyne.com/WeatherWS/", className = "com.cdyne.ws.weatherws.GetCityWeatherByZIPResponse")
public WeatherReturn getCityWeatherByZIP(
#WebParam(name = "ZIP", targetNamespace = "http://ws.cdyne.com/WeatherWS/")
String zip) {
return null;
}
}
Compile the stub implementation class.
javac com/cdyne/ws/weatherws/WeatherSoapStubImpl.java
Generate the WSDL. This is where command line switches can be used to try to get as close as possible to the original.
wsgen -keep -cp . com.cdyne.ws.weatherws.WeatherSoapStubImpl -wsdl:Xsoap1.2 -extension -inlineSchemas
(creates WSDL in current dir):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#8c29a9a53251ff741fca1664a8221dc876b2eac8. -->
<definitions targetNamespace="http://ws.cdyne.com/WeatherWS/" name="WeatherSoapStubImplService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:tns="http://ws.cdyne.com/WeatherWS/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">
<types>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://ws.cdyne.com/WeatherWS/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="GetCityForecastByZIP" type="tns:GetCityForecastByZIP"/>
<xs:element name="GetCityForecastByZIPResponse" type="tns:GetCityForecastByZIPResponse"/>
<xs:element name="GetCityWeatherByZIP" type="tns:GetCityWeatherByZIP"/>
<xs:element name="GetCityWeatherByZIPResponse" type="tns:GetCityWeatherByZIPResponse"/>
<xs:element name="GetWeatherInformation" type="tns:GetWeatherInformation"/>
<xs:element name="GetWeatherInformationResponse" type="tns:GetWeatherInformationResponse"/>
<xs:complexType name="GetWeatherInformation">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="GetWeatherInformationResponse">
<xs:sequence>
<xs:element name="GetWeatherInformationResult" type="tns:ArrayOfWeatherDescription" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfWeatherDescription">
<xs:sequence>
<xs:element name="WeatherDescription" type="tns:WeatherDescription" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="WeatherDescription">
<xs:sequence>
<xs:element name="WeatherID" type="xs:short"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="PictureURL" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GetCityWeatherByZIP">
<xs:sequence>
<xs:element name="ZIP" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GetCityWeatherByZIPResponse">
<xs:sequence>
<xs:element name="GetCityWeatherByZIPResult" type="tns:WeatherReturn" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="WeatherReturn">
<xs:sequence>
<xs:element name="Success" type="xs:boolean"/>
<xs:element name="ResponseText" type="xs:string" minOccurs="0"/>
<xs:element name="State" type="xs:string" minOccurs="0"/>
<xs:element name="City" type="xs:string" minOccurs="0"/>
<xs:element name="WeatherStationCity" type="xs:string" minOccurs="0"/>
<xs:element name="WeatherID" type="xs:short"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
<xs:element name="Temperature" type="xs:string" minOccurs="0"/>
<xs:element name="RelativeHumidity" type="xs:string" minOccurs="0"/>
<xs:element name="Wind" type="xs:string" minOccurs="0"/>
<xs:element name="Pressure" type="xs:string" minOccurs="0"/>
<xs:element name="Visibility" type="xs:string" minOccurs="0"/>
<xs:element name="WindChill" type="xs:string" minOccurs="0"/>
<xs:element name="Remarks" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GetCityForecastByZIP">
<xs:sequence>
<xs:element name="ZIP" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GetCityForecastByZIPResponse">
<xs:sequence>
<xs:element name="GetCityForecastByZIPResult" type="tns:ForecastReturn" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ForecastReturn">
<xs:sequence>
<xs:element name="Success" type="xs:boolean"/>
<xs:element name="ResponseText" type="xs:string" minOccurs="0"/>
<xs:element name="State" type="xs:string" minOccurs="0"/>
<xs:element name="City" type="xs:string" minOccurs="0"/>
<xs:element name="WeatherStationCity" type="xs:string" minOccurs="0"/>
<xs:element name="ForecastResult" type="tns:ArrayOfForecast" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ArrayOfForecast">
<xs:sequence>
<xs:element name="Forecast" type="tns:Forecast" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Forecast">
<xs:sequence>
<xs:element name="Date" type="xs:dateTime"/>
<xs:element name="WeatherID" type="xs:short"/>
<xs:element name="Desciption" type="xs:string" minOccurs="0"/>
<xs:element name="Temperatures" type="tns:temp"/>
<xs:element name="ProbabilityOfPrecipiation" type="tns:POP"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="temp">
<xs:sequence>
<xs:element name="MorningLow" type="xs:string" minOccurs="0"/>
<xs:element name="DaytimeHigh" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="POP">
<xs:sequence>
<xs:element name="Nighttime" type="xs:string" minOccurs="0"/>
<xs:element name="Daytime" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="GetWeatherInformation">
<part name="parameters" element="tns:GetWeatherInformation"/>
</message>
<message name="GetWeatherInformationResponse">
<part name="parameters" element="tns:GetWeatherInformationResponse"/>
</message>
<message name="GetCityForecastByZIP">
<part name="parameters" element="tns:GetCityForecastByZIP"/>
</message>
<message name="GetCityForecastByZIPResponse">
<part name="parameters" element="tns:GetCityForecastByZIPResponse"/>
</message>
<message name="GetCityWeatherByZIP">
<part name="parameters" element="tns:GetCityWeatherByZIP"/>
</message>
<message name="GetCityWeatherByZIPResponse">
<part name="parameters" element="tns:GetCityWeatherByZIPResponse"/>
</message>
<portType name="WeatherSoap">
<operation name="GetWeatherInformation">
<input wsam:Action="http://ws.cdyne.com/WeatherWS/GetWeatherInformation" message="tns:GetWeatherInformation"/>
<output wsam:Action="http://ws.cdyne.com/WeatherWS/WeatherSoap/GetWeatherInformationResponse" message="tns:GetWeatherInformationResponse"/>
</operation>
<operation name="GetCityForecastByZIP">
<input wsam:Action="http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP" message="tns:GetCityForecastByZIP"/>
<output wsam:Action="http://ws.cdyne.com/WeatherWS/WeatherSoap/GetCityForecastByZIPResponse" message="tns:GetCityForecastByZIPResponse"/>
</operation>
<operation name="GetCityWeatherByZIP">
<input wsam:Action="http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP" message="tns:GetCityWeatherByZIP"/>
<output wsam:Action="http://ws.cdyne.com/WeatherWS/WeatherSoap/GetCityWeatherByZIPResponse" message="tns:GetCityWeatherByZIPResponse"/>
</operation>
</portType>
<binding name="WeatherSoapPortBinding" type="tns:WeatherSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="GetWeatherInformation">
<soap12:operation soapAction="http://ws.cdyne.com/WeatherWS/GetWeatherInformation"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
<operation name="GetCityForecastByZIP">
<soap12:operation soapAction="http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
<operation name="GetCityWeatherByZIP">
<soap12:operation soapAction="http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
</binding>
<service name="WeatherSoapStubImplService">
<port name="WeatherSoapPort" binding="tns:WeatherSoapPortBinding">
<soap12:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
Create the stub or mock service with tooling such as SOAPUI
With this approach and simple service interface I was able to successfully send SOAP messages with the client to a mock service provider created in SOAPUI created with the generated WSDL.

context.Trigger.JobDataMap values via xml configuration

In quartz_jobs.xml, I can set some parameters for the job.....
<job>
<name>MyJob</name>
<group>MyJob</group>
<description>My Job</description>
<job-type>MyAssembly.MyJob, MyAssembly</job-type>
<durable>true</durable>
<recover>false</recover>
<job-data-map>
<entry>
<key>JobMapDataKeyOne</key>
<value>JobMapDataValueOne</value>
</entry>
<entry>
<key>JobMapDataKeyTwo</key>
<value>JobMapDataValueTwo</value>
</entry>
</job-data-map>
</job>
and here is the code:
public class MyJob: IJob
{
public virtual void Execute(IJobExecutionContext context)
{
JobKey key = context.JobDetail.Key;
JobDataMap jbDataMap = context.JobDetail.JobDataMap;
string jobMapDataValueOne = jbDataMap.GetString("JobMapDataKeyOne");
string jobMapDataValueTwo = jbDataMap.GetString("JobMapDataKeyOne");
}
}
Now, I can "code up a job and trigger" (not using .xml setup) (code not seen).... and I can get the below to work.
(And have populated values for triggerParameter001Value and triggerParameter002Value ).
public class MyJob: IJob
{
public virtual void Execute(IJobExecutionContext context)
{
JobKey key = context.JobDetail.Key;
JobDataMap trgDataMap = context.Trigger.JobDataMap;
string triggerParameter001Value = trgDataMap.GetString("TriggerParameter001Key");
string triggerParameter002Value = trgDataMap.GetString("TriggerParameter002Key");
}
}
But I don't see a way to pass parameters for the Trigger...defined in the xml.
I searched for
"trigger-data-map"
and
"jobtrigger-data-map"
to no avail.
I fished around the "http://quartznet.sourceforge.net/JobSchedulingData" xsd as well.
Is this just missing in the xml?
Am I missing something?
Ok. This one was SNEAKY!
The below will NOT work: (note the position of "job-data-map" element ~under the "simple" element)
<job>
<name>MyJob</name>
<group>MyJobGroup</group>
<description>My Job</description>
<job-type>MyAssembly.MyJob, MyAssembly</job-type>
<durable>true</durable>
<recover>false</recover>
<job-data-map>
<entry>
<key>JobMapDataKeyOne</key>
<value>JobMapDataValueOne</value>
</entry>
<entry>
<key>JobMapDataKeyTwo</key>
<value>JobMapDataValueTwo</value>
</entry>
</job-data-map>
</job>
<trigger>
<simple>
<name>MyTrigger</name>
<group>MyTriggerJobGroup</group>
<description>MyTriggerDescription</description>
<job-name>MyJob</job-name>
<job-group>MyJobGroup</job-group>
<!--<start-time>1982-06-28T18:15:00.0Z</start-time>-->
<!--<end-time>2020-05-04T18:13:51.0Z</end-time>-->
<misfire-instruction>SmartPolicy</misfire-instruction>
<!-- repeat indefinitely every 10 seconds -->
<repeat-count>-1</repeat-count>
<repeat-interval>5000</repeat-interval>
<job-data-map>
<entry>
<key>TriggerParameter001Key</key>
<value>TriggerParameter001Value</value>
</entry>
<entry>
<key>TriggerParameter002Key</key>
<value>TriggerParameter002Value</value>
</entry>
</job-data-map>
</simple>
</trigger>
The above xml was giving me an error like this:
Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin.ProcessFile Error Error scheduling jobs: The element 'simple' in namespace 'http://quartznet.sourceforge.net/JobSchedulingData' has invalid child element 'job-data-map' in namespace 'http://quartznet.sourceforge.net/JobSchedulingData'.
........................
The below WILL work (note the position change of "job-data-map" (still under "simple" element, but moved "up" some)
<job>
<name>MyJob</name>
<group>MyJobGroup</group>
<description>My Job</description>
<job-type>MyAssembly.MyJob, MyAssembly</job-type>
<durable>true</durable>
<recover>false</recover>
<job-data-map>
<entry>
<key>JobMapDataKeyOne</key>
<value>JobMapDataValueOne</value>
</entry>
<entry>
<key>JobMapDataKeyTwo</key>
<value>JobMapDataValueTwo</value>
</entry>
</job-data-map>
</job>
<trigger>
<simple>
<name>MyTrigger</name>
<group>MyTriggerJobGroup</group>
<description>MyTriggerDescription</description>
<job-name>MyJob</job-name>
<job-group>MyJobGroup</job-group>
<job-data-map>
<entry>
<key>TriggerParameter001Key</key>
<value>TriggerParameter001Value</value>
</entry>
<entry>
<key>TriggerParameter002Key</key>
<value>TriggerParameter002Value</value>
</entry>
</job-data-map>
<!--<start-time>1982-06-28T18:15:00.0Z</start-time>-->
<!--<end-time>2020-05-04T18:13:51.0Z</end-time>-->
<misfire-instruction>SmartPolicy</misfire-instruction>
<!-- repeat indefinitely every 10 seconds -->
<repeat-count>-1</repeat-count>
<repeat-interval>5000</repeat-interval>
</simple>
</trigger>
Why?
The xsd uses an abstractType
<xs:complexType name="abstractTriggerType" abstract="true">
<xs:annotation>
<xs:documentation>Common Trigger definitions</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="group" type="xs:string" minOccurs="0" />
<xs:element name="description" type="xs:string" minOccurs="0" />
<xs:element name="job-name" type="xs:string" />
<xs:element name="job-group" type="xs:string" minOccurs="0" />
<xs:element name="priority" type="xs:nonNegativeInteger" minOccurs="0" />
<xs:element name="calendar-name" type="xs:string" minOccurs="0" />
<xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" />
<xs:complexType name="simpleTriggerType">
<xs:annotation>
<xs:documentation>Define a SimpleTrigger</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="abstractTriggerType">
<xs:sequence>
<xs:element name="misfire-instruction" type="simple-trigger-misfire-instructionType" minOccurs="0" />
<xs:sequence minOccurs="0">
<xs:element name="repeat-count" type="repeat-countType" />
<xs:element name="repeat-interval" type="xs:nonNegativeInteger" />
</xs:sequence>
So everything that is a part of the abstract has to be defined ~before~ any of the concrete properties.
That is sneaky!

ZF2 and implementing a SOAP server returning a complex type

I'm trying to implement a SOAP server using Zend Framework 2 in PHP5.5. I've come as far as this:
library.php
<?php
namespace Library;
class IncrementedInt
{
/**
* #var integer
**/
public $original;
/**
* #var integer
**/
public $incremented;
public function __construct($num)
{
$this->original = $num;
$this->incremented = ++$num;
}
}
webservice.php
<?php
require_once 'library.php';
require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
class Math
{
/**
* This method takes ...
*
* #param integer $inputParam
* #return \Library\IncrementedInt
*/
public function increment($inputParam)
{
return new \Library\IncrementedInt($inputParam);
}
}
if (isset($_GET['wsdl'])) {
$autodiscover = new \Zend\Soap\AutoDiscover();
$autodiscover->setClass('Math')
->setBindingStyle(array('style' => 'document'))
->setUri('http://localhost' . $_SERVER['SCRIPT_NAME']);
header('Content-type: application/xml');
echo $autodiscover->toXml();
}
else {
// pointing to the current file here
$soap = new \Zend\Soap\Server('http://localhost' . $_SERVER['SCRIPT_NAME'] . '?wsdl');
$soap->setClass('Math');
$soap->handle();
}
Loading the URL http://localhost/webservice.php?wsdl in a browser will output:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://localhost/webservice.php" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" name="Math" targetNamespace="http://localhost/webservice.php">
<script/>
<types>
<xsd:schema targetNamespace="http://localhost/webservice.php">
<xsd:element name="increment">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="inputParam" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="IncrementedInt">
<xsd:all>
<xsd:element name="original" type="xsd:int" nillable="true"/>
<xsd:element name="incremented" type="xsd:int" nillable="true"/>
</xsd:all>
</xsd:complexType>
<xsd:element name="incrementResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="incrementResult" type="tns:IncrementedInt"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<portType name="MathPort">
<operation name="increment">
<documentation>This method takes ...</documentation>
<input message="tns:incrementIn"/>
<output message="tns:incrementOut"/>
</operation>
</portType>
<binding name="MathBinding" type="tns:MathPort">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="increment">
<soap:operation soapAction="http://localhost/webservice.php#increment"/>
<input>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="MathService">
<port name="MathPort" binding="tns:MathBinding">
<soap:address location="http://localhost/webservice.php"/>
</port>
</service>
<message name="incrementIn">
<part name="parameters" element="tns:increment"/>
</message>
<message name="incrementOut">
<part name="parameters" element="tns:incrementResponse"/>
</message>
</definitions>
As you can see the IncrementedInt class and its properties original and incremented are defined. Yet when I call the service with sending this XML (using soapUI):
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://localhost/webservice.php">
<soapenv:Header/>
<soapenv:Body>
<web:increment>
<inputParam xsi:type="xsd:int">2</inputParam>
</web:increment>
</soapenv:Body>
</soapenv:Envelope>
The server will respond like:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:incrementResponse>
<return xsi:type="ns1:IncrementedInt"/>
</ns1:incrementResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
As you can see the return value is not expanded and it's just like the type is named. Has anyone successfully returned a complex type in ZF2 SOAP server? How? I searched the Internet for an example but I could not find any!
It turned out all I was missing was the fact that Zend Framework caches WSDLs by default. So all I needed to do was to:
<?php
require_once 'library.php';
require_once 'Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->register();
class Math
{
/**
* This method takes ...
*
* #param integer $inputParam
* #return \Library\IncrementedInt
*/
public function increment($inputParam)
{
return new \Library\IncrementedInt($inputParam);
}
}
if (isset($_GET['wsdl'])) {
$autodiscover = new \Zend\Soap\AutoDiscover();
$autodiscover->setClass('Math')
->setUri('http://localhost' . $_SERVER['SCRIPT_NAME']);
header('Content-type: application/xml');
echo $autodiscover->toXml();
}
else {
// pointing to the current file here
$soap = new \Zend\Soap\Server('http://localhost' . $_SERVER['SCRIPT_NAME'] . '?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE));
$soap->setClass('Math');
$soap->handle();
}
The changes are:
When instantiating a Server it is set as options to disable WSDL caching.
The ->setBindingStyle(array('style' => 'document')) method call to AutoDiscovery is omitted as it causes trouble and prevents a successful SOAP call.

How do I debug WSDL when WSDL2Java fails?

We are upgrading our web services to use JAX-WS 2.1.
Our current web services was generated java-first and using Axis1 to auto-generate WSDL.
Now we have this auto-generated WSDL and need to generate JAX-WS compliant Java code from it.
I'm using Wsdl2java from Axis2 which should work fine, but when I try to run it on our WSDL I get multiple errors, indicating the generated WSDL was not really well-formed.
Being not so familiar with WSDL and XML name spaces, I find it hard to debug. Could anyone please lend me a hand here?
Currently I'm stuck with this error:
"[INFO] org.apache.axis2.wsdl.codegen.CodeGenerationException: org.apache.axis2.wsdl.databinding.UnmatchedTypeException: No type was mapped to the name AdbRuleException with namespace http://exception.common.adb.example.com"
If anyone have any idea where I can begin then I would be very happy! :)
This is the XML:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="http://webservice.adb.example.com"
xmlns:intf="http://webservice.adb.example.com"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns1="http://exception.common.adb.example.com"
xmlns:tns2="http://exception.xml.adb.example.com"
xmlns:tns3="http://sax.xml.org" xmlns:tns4="http://lang.java"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://webservice.adb.example.com">
<!--WSDL created by Apache Axis version: 1.3
Built on Oct 05, 2005 (05:23:37 EDT)-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://webservice.adb.example.com">
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdConnexionException">
<sequence/>
</complexType>
<complexType name="ArrayOf_soapenc_string">
<complexContent>
<restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="soapenc:string[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.apache.org/xml-soap">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="mapItem">
<sequence>
<element name="key" nillable="true" type="xsd:anyType"/>
<element name="value" nillable="true" type="xsd:anyType"/>
</sequence>
</complexType>
<complexType name="Map">
<sequence>
<element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exception.common.adb.example.com">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdbRuleException">
<sequence>
<element name="errorKey" nillable="true" type="soapenc:int"/>
<element name="errorMessage" nillable="true" type="soapenc:string"/>
<element name="exceptionKeyMap" nillable="true" type="apachesoap:Map"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://sax.xml.org">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://exception.xml.adb.example.com"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="SAXException">
<sequence>
<element name="cause" nillable="true" type="xsd:anyType"/>
<element name="exception" nillable="true" type="xsd:anyType"/>
<element name="message" nillable="true" type="soapenc:string"/>
</sequence>
</complexType>
</schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://exception.xml.adb.example.com">
<import namespace="http://webservice.adb.example.com"/>
<import namespace="http://exception.common.adb.example.com"/>
<import namespace="http://lang.java"/>
<import namespace="http://xml.apache.org/xml-soap"/>
<import namespace="http://sax.xml.org"/>
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="AdConnexionRuleException">
<complexContent>
<extension base="tns3:SAXException">
<sequence/>
</extension>
</complexContent>
</complexType>
</schema>
</wsdl:types>
<wsdl:message name="getDeadlineExceptionsByMarketIdResponse">
<wsdl:part name="getDeadlineExceptionsByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getDeadlinesResponse">
<wsdl:part name="getDeadlinesReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getOrderStatusResponse">
<wsdl:part name="getOrderStatusReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getStatusResponse">
<wsdl:part name="getStatusReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="AdbRuleException">
<wsdl:part name="fault" element="tns1:AdbRuleException"/>
</wsdl:message>
<wsdl:message name="requestResponse">
<wsdl:part name="requestReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getDeadlinesByMarketIdResponse">
<wsdl:part name="getDeadlinesByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="cancelOrderRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="AdConnexionException">
<wsdl:part name="fault" element="impl:AdConnexionException"/>
</wsdl:message>
<wsdl:message name="getDeadlinesByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getProductsByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPackageInfoRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="cancelOrderResponse">
<wsdl:part name="cancelOrderReturn" type="xsd:boolean"/>
</wsdl:message>
<wsdl:message name="getDeadlinesRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getRealEstatePlacementsResponse">
<wsdl:part name="getRealEstatePlacementsReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getStatusRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getRealEstatePlacementsRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="helloWorldResponse">
<wsdl:part name="helloWorldReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getOrderStatusRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="getProductsByMarketIdResponse">
<wsdl:part name="getProductsByMarketIdReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPlacementsResponse">
<wsdl:part name="getPlacementsReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="AdConnexionRuleException">
<wsdl:part name="fault" element="tns2:AdConnexionRuleException"/>
</wsdl:message>
<wsdl:message name="helloWorldRequest">
</wsdl:message>
<wsdl:message name="getDeadlineExceptionsByMarketIdRequest">
<wsdl:part name="in0" type="soapenc:int"/>
</wsdl:message>
<wsdl:message name="requestRequest">
<wsdl:part name="in0" type="soapenc:string"/>
</wsdl:message>
<wsdl:message name="getPlacementsRequest">
<wsdl:part name="in0" type="soapenc:string"/>
<wsdl:part name="in1" type="impl:ArrayOf_soapenc_string"/>
</wsdl:message>
<wsdl:message name="getPackageInfoResponse">
<wsdl:part name="getPackageInfoReturn" type="soapenc:string"/>
</wsdl:message>
<wsdl:portType name="AdConnexionService">
<wsdl:operation name="getPackageInfo" parameterOrder="in0 in1">
<wsdl:input message="impl:getPackageInfoRequest" name="getPackageInfoRequest"/>
<wsdl:output message="impl:getPackageInfoResponse" name="getPackageInfoResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="request" parameterOrder="in0">
<wsdl:input message="impl:requestRequest" name="requestRequest"/>
<wsdl:output message="impl:requestResponse" name="requestResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="helloWorld">
<wsdl:input message="impl:helloWorldRequest" name="helloWorldRequest"/>
<wsdl:output message="impl:helloWorldResponse" name="helloWorldResponse"/>
</wsdl:operation>
<wsdl:operation name="getRealEstatePlacements" parameterOrder="in0">
<wsdl:input message="impl:getRealEstatePlacementsRequest" name="getRealEstatePlacementsRequest"/>
<wsdl:output message="impl:getRealEstatePlacementsResponse" name="getRealEstatePlacementsResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getPlacements" parameterOrder="in0 in1">
<wsdl:input message="impl:getPlacementsRequest" name="getPlacementsRequest"/>
<wsdl:output message="impl:getPlacementsResponse" name="getPlacementsResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getProductsByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getProductsByMarketIdRequest" name="getProductsByMarketIdRequest"/>
<wsdl:output message="impl:getProductsByMarketIdResponse" name="getProductsByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getStatus" parameterOrder="in0 in1">
<wsdl:input message="impl:getStatusRequest" name="getStatusRequest"/>
<wsdl:output message="impl:getStatusResponse" name="getStatusResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlines" parameterOrder="in0">
<wsdl:input message="impl:getDeadlinesRequest" name="getDeadlinesRequest"/>
<wsdl:output message="impl:getDeadlinesResponse" name="getDeadlinesResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getOrderStatus" parameterOrder="in0">
<wsdl:input message="impl:getOrderStatusRequest" name="getOrderStatusRequest"/>
<wsdl:output message="impl:getOrderStatusResponse" name="getOrderStatusResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="cancelOrder" parameterOrder="in0">
<wsdl:input message="impl:cancelOrderRequest" name="cancelOrderRequest"/>
<wsdl:output message="impl:cancelOrderResponse" name="cancelOrderResponse"/>
<wsdl:fault message="impl:AdbRuleException" name="AdbRuleException"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
<wsdl:fault message="impl:AdConnexionRuleException" name="AdConnexionRuleException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlinesByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getDeadlinesByMarketIdRequest" name="getDeadlinesByMarketIdRequest"/>
<wsdl:output message="impl:getDeadlinesByMarketIdResponse" name="getDeadlinesByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
<wsdl:operation name="getDeadlineExceptionsByMarketId" parameterOrder="in0">
<wsdl:input message="impl:getDeadlineExceptionsByMarketIdRequest" name="getDeadlineExceptionsByMarketIdRequest"/>
<wsdl:output message="impl:getDeadlineExceptionsByMarketIdResponse" name="getDeadlineExceptionsByMarketIdResponse"/>
<wsdl:fault message="impl:AdConnexionException" name="AdConnexionException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AdConnexionServiceSoapBinding" type="impl:AdConnexionService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getPackageInfo">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getPackageInfoRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getPackageInfoResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="request">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="requestRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="requestResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="helloWorld">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="helloWorldRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="helloWorldResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getRealEstatePlacements">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getRealEstatePlacementsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getRealEstatePlacementsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getPlacements">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getPlacementsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getPlacementsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getProductsByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getProductsByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getProductsByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getStatusRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getStatusResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlines">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlinesRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlinesResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getOrderStatus">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getOrderStatusRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getOrderStatusResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="cancelOrder">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="cancelOrderRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="cancelOrderResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdbRuleException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdbRuleException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
<wsdl:fault name="AdConnexionRuleException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionRuleException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlinesByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlinesByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlinesByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeadlineExceptionsByMarketId">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getDeadlineExceptionsByMarketIdRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:input>
<wsdl:output name="getDeadlineExceptionsByMarketIdResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:output>
<wsdl:fault name="AdConnexionException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="AdConnexionException" namespace="http://webservice.adb.example.com" use="encoded"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AdConnexionServiceService">
<wsdl:port binding="impl:AdConnexionServiceSoapBinding" name="AdConnexionService">
<wsdlsoap:address location="http://adb.example.com/adbXmlService/webservice/AdConnexionService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Because of these use="encoded" you should stick with Axis 1.4 (or other JAX-RPC compliant implementation). Axis2 (and CXF and JAX-WS-RI for that matter) doesn't support rpc/encoded style of web services.

Resources