To jest mój cały WSDL:odgórne Web Generation obsługa za pomocą oś1 bierze mój complexType siebie
<?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>
Kiedy wygenerować niedopałek (przy użyciu Eclipse tlen, top-down, oś1), funkcja są generowane takie jak:
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;
}
Dlaczego TokenRequest klasa przechowywane w stanie nienaruszonym, a BatchCommand i HttpHeaders są zdemontowane?
Próbowałem dodać więcej pod-elementów w HttpHeaders i BatchCommand, ale one po prostu dzielą się jako dodatkowe parametry. Nie widzę żadnej różnicy między ich deklaracjami a getToken.
getToken (stary API) ma jeden parametr, natomiast getToken2 (nowy interfejs API) ma 3. Mam pytanie, dlaczego typy parametrów BatchCommand i HttpHeaders nie są zawarte w wygenerowanym kodzie, ale getToken jest. Jeśli generator kodu zdecyduje się zoptymalizować i pominąć BatchCommand i HttpHeaders, powinien zastosować tę samą logikę do getToken i wyodrębnić swoje pola do oddzielnych parametrów. –
@KCWong Proszę spojrzeć na ten https://stackoverflow.com/a/33686479/578855 – muasif80
httpHeaders i EACommand są ponownie prezentowane jako kolekcje innych typów i tam maxOccurs jest nieograniczony, dlatego są one zamieniane na tablice.Natomiast maxOccurs dla getToken nie jest określony, więc domyślnie wynosi 1 i dlatego nie jest zamieniany na tablicę w kodzie Java. To jest prawidłowe wyjaśnienie. – muasif80