nimmt Dies ist meine gesamte WSDL:Top-down-Web-Service-Generation AXIS1 mit meinem complex auseinander
<?xml version="1.0" encoding="utf-8"?>
<definitions name="TokenService"
targetNamespace="urn:mace:ideas:TokenNamespace"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="urn:mace:ideas:TokenNamespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xs:schema targetNamespace="urn:mace:ideas:TokenNamespace"
version="1.0"
xmlns:tns="urn:mace:ideas:TokenNamespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- A single HTTP header -->
<xs:complexType name="httpHeader">
<xs:sequence>
<xs:element name="Content" type="xs:string" />
<xs:element name="Usage">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="new" id="new" />
<xs:enumeration value="always" id="always" />
<xs:enumeration value="once" id="once" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- A list of HTTP headers -->
<xs:complexType name="httpHeaders">
<xs:sequence>
<xs:element name="httpHeader" type="tns:httpHeader" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- EACommand Id -->
<xs:simpleType name="EACommandId">
<xs:restriction base="xs:string">
<xs:enumeration value="ReadDG" />
<xs:enumeration value="ReadRD" />
<xs:enumeration value="WriteRD" />
<xs:enumeration value="VerifyData" />
<xs:enumeration value="CheckAge" />
</xs:restriction>
</xs:simpleType>
<!-- EACommand operator -->
<xs:simpleType name="EACommandOperator">
<xs:restriction base="xs:string">
<xs:enumeration value="equal" />
<xs:enumeration value="less" />
<xs:enumeration value="greater" />
</xs:restriction>
</xs:simpleType>
<!-- EACommand -->
<xs:complexType name="EACommand">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="EACommandId" type="tns:EACommandId" />
<xs:element minOccurs="0" maxOccurs="1" name="dataId" type="xs:integer" />
<xs:element minOccurs="0" maxOccurs="1" name="EACommandOperator" type="tns:EACommandOperator" />
<xs:element minOccurs="0" maxOccurs="1" name="value" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- Batch command -->
<xs:complexType name="batchCommand">
<xs:sequence>
<xs:element name="stopOnAnyError" type="xs:boolean" nillable="false" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="command" type="tns:EACommand" />
</xs:sequence>
</xs:complexType>
<!-- TokenRequest -->
<xs:complexType name="tokenRequest">
<xs:sequence>
<xs:element minOccurs="1" name="raCode" type="xs:string" />
<xs:element minOccurs="1" name="appRefId" type="xs:string" />
<xs:element minOccurs="1" name="deptCode" type="xs:string" />
<xs:element minOccurs="1" name="raArtifactReceiverURL" type="xs:string" />
<xs:element minOccurs="1" name="target" type="xs:string" />
<xs:element minOccurs="0" name="dvnHash" type="xs:string" />
<xs:element minOccurs="0" name="msgHash" type="xs:string" />
<xs:element minOccurs="0" name="spinAction" type="xs:string" />
<xs:element minOccurs="0" name="locale" type="xs:string" />
<xs:element minOccurs="0" name="termsAndConditions" type="xs:string" />
<xs:element minOccurs="0" name="removeCard" type="xs:string" />
<xs:element minOccurs="0" name="reader" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- GetToken, a wrapper for TokenRequest -->
<xs:complexType name="getToken">
<xs:sequence>
<xs:element minOccurs="1" name="tokenRequest" type="tns:tokenRequest" />
</xs:sequence>
</xs:complexType>
<!-- TokenResponse -->
<xs:complexType name="tokenResponse">
<xs:sequence>
<xs:element minOccurs="1" name="ideasArtifactReceiverURL" type="xs:string" />
<xs:element minOccurs="1" name="ideasMAURL" type="xs:string" />
<xs:element minOccurs="1" name="errorCode" type="xs:string" />
<xs:element minOccurs="1" name="errorMessage" type="xs:string" />
</xs:sequence>
</xs:complexType>
<!-- getTokenResponse, a wrapper for TokenResponse -->
<xs:complexType name="getTokenResponse">
<xs:sequence>
<xs:element minOccurs="1" name="return" type="tns:tokenResponse" />
</xs:sequence>
</xs:complexType>
<xs:element name="getToken" type="tns:getToken" />
<xs:element name="batchCommand" type="tns:batchCommand" />
<xs:element name="httpHeaders" type="tns:httpHeaders" />
<xs:element name="getTokenResponse" type="tns:getTokenResponse" />
</xs:schema>
</types>
<message name="TokenService_getToken">
<part element="tns:getToken" name="getToken" />
</message>
<message name="TokenService_getToken2">
<part element="tns:getToken" name="getToken" />
<part element="tns:batchCommand" name="batchCommand" />
<part element="tns:httpHeaders" name="httpHeaders" />
</message>
<message name="TokenService_getTokenResponse">
<part element="tns:getTokenResponse" name="getTokenResponse" />
</message>
<portType name="TokenService">
<operation name="getToken" parameterOrder="getToken">
<input message="tns:TokenService_getToken" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
<operation name="getToken2" parameterOrder="getToken batchCommand httpHeaders">
<input message="tns:TokenService_getToken2" />
<output message="tns:TokenService_getTokenResponse" />
</operation>
</portType>
<binding name="TokenServiceBinding" type="tns:TokenService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="getToken">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
<operation name="getToken2">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="TokenService">
<port binding="tns:TokenServiceBinding" name="TokenServicePort">
<soap:address location="https://www0.ideas.hksarg/ideas/TokenService" />
</port>
</service>
</definitions>
Wenn ich einen Stummel (mit Eclipse Oxygen, top-down, Axis1) erzeugen, wird die Funktion erzeugt wie diese:
public TokenNamespace.ideas.mace.TokenResponse getToken(TokenNamespace.ideas.mace.TokenRequest tokenRequest) throws java.rmi.RemoteException {
return null;
}
public TokenNamespace.ideas.mace.TokenResponse getToken2(TokenNamespace.ideas.mace.TokenRequest tokenRequest, boolean stopOnAnyError, TokenNamespace.ideas.mace.EACommand[] command, TokenNamespace.ideas.mace.HttpHeader[] httpHeader) throws java.rmi.RemoteException {
return null;
}
Warum TokenRequest Klasse intakt gehalten wird, während BatchCommand und httpheaders demontiert?
Ich habe versucht, weitere Unterelemente unter HttpHeaders und BatchCommand hinzuzufügen, aber sie werden nur als zusätzliche Parameter aufgeteilt. Ich kann keinen Unterschied zwischen ihren Erklärungen und getTokens erkennen.
getToken (die alte API) hat einen Parameter, während getToken2 (die neue API) hat 3. Die Frage, die ich habe, ist, warum die Parametertypen BatchCommand und HttpHeaders nicht in generierten Code enthalten sind getToken ist. Wenn der Codegenerator entscheidet, BatchCommand und HttpHeaders zu optimieren und auszulassen, sollte er dieselbe Logik auf getToken anwenden und seine Felder in separate Parameter extrahieren. –
@KCWong Bitte beachten Sie diese https://StackOverflow.com/a/33686479/578855 – muasif80
Die httpHeaders und EACommand sind als Sammlungen anderer Typen neu darstellbar und dort MaxOccurs ist unbegrenzt, daher werden sie in Arrays geändert.Während maxOccurs für getToken nicht angegeben ist, ist es standardmäßig auf 1 gesetzt und wird daher im Java-Code nicht in ein Array geändert. Dies ist die korrekte Erklärung. – muasif80