2011-01-07 3 views
2

Also habe ich einen Webservice, der eine Flagge aus einer Tabelle in sql bekommt, die funktioniert. Ich versuche jetzt, die Funktionalität hinzuzufügen, um die gleiche Flagge zu setzen. Wenn ich nur eine Eingabe (d. H. Einen Benutzernamen ODER Flag-Wert) habe, funktioniert es perfekt. Wenn ich jedoch versuche, zwei Elemente als Eingabe zu verwenden, erhalte ich den folgenden Fehler, wenn mein AXIS versucht, zu deployen:AXIS: Der OperationDesc wurde nicht mit einer Methode synchronisiert

org.jboss.axis.InternalException: java.lang.Exception: Der OperationDesc für setPWFlag wurde nicht synchronisiert zu einer Methode von PWEndPoint.

Hier ist eine beschnittene Version meiner WSDL:

<complexType name="getPWFlagRequest"> 
    <sequence> 
    <element name="alias" type="xsd:string" /> 
    </sequence> 
    </complexType> 

    <complexType name="getPWFlagResponse"> 
    <sequence> 
    <element name="result" type="xsd:string" /> 
    </sequence> 
    </complexType> 

    <complexType name="setPWFlagRequest"> 
    <sequence> 
    <element name="id" type="xsd:string" /> 
    <!-- Having this line gives the OperationDesc Synch Error --> 
    <element name="flag" type="xsd:string" /> 
    </sequence> 
    </complexType> 

    <complexType name="setPWFlagResponse"/> 

    <element name="getPWFlagRequest" type="types:getPWFlagRequest" /> 
    <element name="getPWFlagResponse" type="types:getPWFlagResponse" /> 

    <element name="setPWFlagRequest" type="types:setPWFlagRequest" /> 
    <element name="setPWFlagResponse" type="types:setPWFlagResponse" /> 
</schema> 
</types> 

<message name="PWEndPoint_getPWFlagRequest" > 
    <part name="parameter" element="types:getPWFlagRequest"/> 
</message> 
<message name="PWEndPoint_getPWFlagResponse"> 
    <part name="result" element="types:getPWFlagResponse"/> 
</message> 

<message name="PWEndPoint_setPWFlagRequest" > 
    <part name="parameters" element="types:setPWFlagRequest"/> 
</message> 
<message name="PWEndPoint_setPWFlagResponse"/> 

<portType name="PWEndPoint"> 
    <operation name="getPWFlag" > 
     <input message="service:PWEndPoint_getPWFlagRequest"/> 
     <output message="service:PWEndPoint_getPWFlagResponse"/> 
    </operation> 
    <operation name="setPWFlag" > 
     <input message="service:PWEndPoint_setPWFlagRequest"/> 
     <output message="service:PWEndPoint_setPWFlagResponse"/> 
    </operation> 
</portType> 


<binding name="PWResetBinding" type="service:PWEndPoint"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
    <operation name="getPWFlag" > 
    <soap:operation soapAction="getPWFlag" /> 
    <input> 
    <soap:body use="literal" /> 
    </input> 
    <output> 
    <soap:body use="literal" /> 
    </output> 
    </operation> 
    <operation name="setPWFlag" > 
    <soap:operation soapAction="setPWFlag" /> 
    <input> 
    <soap:body /> 
    </input> 
    <output> 
    <soap:body use="literal" /> 
    </output> 
    </operation> 
</binding> 


<service name="PWService"> 
    <port name="PWEndPointPort" binding="service:PWResetBinding"> 
    <soap:address location="@[email protected]" /> 
    </port> 
</service> 

Was wirklich verwirrt mich ist, dass es sagt, es ist ein Problem, ein Verfahren in PWEndPoint Synchronisation, aber PWEndPoint wird durch Java2WSDL erzeugt. Hier ist die Schnittstelle, die erstellt wird:

public interface PWEndPoint extends java.rmi.Remote { 
    public java.lang.String getPWFlag(java.lang.String alias) throws 
     java.rmi.RemoteException; 
    public void setPWFlag(java.lang.String id, java.lang.String flag) throws 
    java.rmi.RemoteException; 
} 

Warum ist es, dass mit 2 Eingangsparametern bewirkt, dass es nicht in der Lage, richtig zu implementieren?

Antwort

1

Ich habe die Wurzel des Problems gefunden. Es gab ein Problem mit der Verwendung der Dokumentcodierung und der Definition komplexer Typen.

Ich habe es auf RPC umgestellt und modifiziert, wie ich meine SetPWFlagRequest definiert, die das Problem behoben.