You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Dave Overbeck <do...@turnkey.com> on 2005/12/06 16:24:43 UTC

OperationDesc not synchronized ?

Hello,

I'm using WSDL2Java to generate server-side code, and I'm trying to sort out 
all the pieces. I've written the Impl, and originally deployed that which 
gave me a null reference in my .NET client, but have since learned that I'm 
supposed to deploy the Skeleton. I did that, and got this in the Services 
List:

Exception - org.apache.axis.InternalException: java.lang.Exception: The 
OperationDesc for strtest was not synchronized to a method of 
AxisWS.AxisWSBindingSkeleton.

In looking at the code, this seems plausible -- although frankly I don't 
understand much in the Skeleton -- because I have not done anything to 
connect the methods in the two classes (although of course they have the 
same name). So my question is, where do I do this? In the Impl? Skeleton? 
deployment descriptor?

Another thing that puzzles me is, in the User Guide it says:
If you don't specify the "--skeletonDeploy true" option, a skeleton will not 
be generated. Instead, the generated deploy.wsdd will indicate that the 
implementation class is deployed directly. In such cases, the deploy.wsdd 
contains extra meta data describing the operations and parameters of the 
implementation class.

I tried this, and did not get a Skeleton, but in either case the deployment 
descriptor is empty (it only has the <deployment> tags). Is something 
supposed to get generated there?

Another thing that puzzles me is, if I just use the 
" --server-side --skeletonDeploy true " qualifiers, I don't get the holders 
or a class for my data structure. I had to look through the API and use " -A 
" to get all the classes. So it seems I have a lot to learn about WSDL2Java.

The wsdd and wsdl are below. Any suggestions would be appreciated,

Thanks,
Dave Overbeck

<deployment
    xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <service name="AxisWS" provider="java:RPC" style="wrapped" use="literal">
    <parameter name="className" value="AxisWS.AxisWSBindingSkeleton"/>
    <parameter name="allowedMethods" value="*"/>
    <operation name="strtest">
      <parameter name="str_arg" mode="OUT"/>
    </operation>
    <requestFlow>
      <handler type="soapmonitor"/>
    </requestFlow>
    <responseFlow>
      <handler type="soapmonitor"/>
    </responseFlow>
  </service>
</deployment>


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:tky="urn:AxisWS" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
xmlns:xse="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns="http://schemas.xmlsoap.org/wsdl/" name="urn:AxisWS" 
targetNamespace="urn:AxisWS">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:AxisWS">
<complexType name="byteArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:byte[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="shortArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:short[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="intArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:int[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="longArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:long[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="floatArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:float[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="doubleArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:double[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="stringArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:string[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="dateArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:date[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="timeArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="xsd:time[]"/>
</restriction>
</complexContent>
</complexType>
<complexType name="DhoWS">
<all>
<element name="Number" type="xsd:int"/>
<element name="Name" nillable="true" type="xsd:string"/>
</all>
</complexType>
<complexType name="DhoWSArray">
<complexContent>
<restriction base="xse:Array">
<attribute ref="xse:arrayType" wsdl:arrayType="tky:DhoWS[]"/>
</restriction>
</complexContent>
</complexType>
</schema>
</types>
<message name="empty"/>
<message name="strtestResponse">
<part name="return" type="xsd:int"/>
<part name="struct" type="tky:DhoWS"/>
</message>
<portType name="AxisWSPort">
<operation name="strtest" parameterOrder="struct">
<input message="tky:empty"/>
<output message="tky:strtestResponse"/>
</operation>
</portType>
<binding name="AxisWSBinding" type="tky:AxisWSPort">
<binding xmlns="http://schemas.xmlsoap.org/wsdl/http/" verb="POST"/>
<binding xmlns="http://schemas.xmlsoap.org/wsdl/soap/" style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="strtest">
<operation xmlns="http://schemas.xmlsoap.org/wsdl/soap/" 
soapAction="strtest"/>
<input>
<soap:body use="literal" namespace="urn:AxisWS" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="literal" namespace="urn:AxisWS" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="AxisWSService">
<port xmlns="http://schemas.xmlsoap.org/wsdl/soap/" name="AxisWSPort" 
binding="tky:AxisWSBinding">
<address location="http://192.168.1.6:8080"/>
</port>
</service>
</definitions>