Hello Again,

I have just tried changing the wsdl from rpc to literal support but it only gives out this error. The error happens when I try to call WSDL2Java for generating the skeleton. Could there be a conflict since I tried to generate the WSDL with Java2WSDL using apache axis?

[ERROR] No element type is defined for message addUserRequest
org.apache.axis2.description.WSDL11ToAxisServiceBuilder$WSDLProcessingException: No element type is defined for message
addUserRequest

so I looked around for an answer and one of the possible solutions was appending the elements with xsd like this:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:voxsant"
                 xmlns:apachesoap="http://xml.apache.org/xml-soap";
                 xmlns:impl="urn:voxsant"
                 xmlns:intf="urn:voxsant"
                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
                 xmlns:tns1="http://model.voxsant";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
<wsdl:types>
<schema targetNamespace="http://model.voxsant"; xmlns="http://www.w3.org/2001/XMLSchema";>
  <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
  <complexType name="User">
<sequence> <xsd:element name="username" type="xsd:string"/>
       <xsd:element name="password" type="xsd:string"/>
       <xsd:element name="firstName" type="xsd:string"/>
       <xsd:element name="middleInitial" type="xsd:string"/>
       <xsd:element name="lastName"  type="xsd:string"/>
       <xsd:element name="country" nillable="true" type="xsd:string"/>
       <xsd:element name="state" nillable="true" type="xsd:string"/>
       <xsd:element name="city" nillable="true" type="xsd:string"/>
       <xsd:element name="address1" nillable="true" type="xsd:string"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="virtualNumbers" nillable="true" type="xsd:string"/>
   </sequence>
  </complexType>
 </schema>
</wsdl:types>

  <wsdl:message name="addUserRequest">
     <wsdl:part name="in0" type="tns1:User"/>
  </wsdl:message>
  <wsdl:message name="addUserResponse">
     <wsdl:part name="addUserResponse" type="xsd:string"/>
  </wsdl:message>
  <wsdl:portType name="VoxsantService">
     <wsdl:operation name="addUser">
        <wsdl:input message="impl:addUserRequest" name="addUserRequest"/>
<wsdl:output message="impl:addUserResponse" name="addUserResponse"/>
     </wsdl:operation>
  </wsdl:portType>
<wsdl:binding name="VoxsantServiceSoapBinding" type="impl:VoxsantService"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
     <wsdl:operation name="addUser">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="addUserRequest">
           <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="addUserResponse">
           <wsdlsoap:body use="literal"/>
        </wsdl:output>
     </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="VoxsantServiceService">
<wsdl:port binding="impl:VoxsantServiceSoapBinding" name="VoxsantService"> <wsdlsoap:address location="http://localhost:8080/axis2/services/VoxsantService"/>
     </wsdl:port>
  </wsdl:service>
</wsdl:definitions> But still it gives out the same error problem. Is there a particular point here that I am missing because right now I am stumped? Would really appreciate any help. Thanks again in advance.

Carlo Fabian


Anne Thomas Manes wrote:
Are you working with Axis or Axis2? (I'm guessing Axis) Which version?

Older versions of Axis had some trouble supporting rpc/literal. You
might want to use wrapped document/literal instead.

One problem I see in the WSDL: You must remove the soapEncoding
attribute from the <wsdlsoap:body> elements in your binding
definitions. (You use that attribute only if use="encoded").

Anne

On Feb 4, 2008 4:31 AM, Jose Carlo Fabian <[EMAIL PROTECTED]> wrote:
Hello everyone. I am a beginner when it comes to creating web services
and I have encountered a problem that I cannot seem to find a solution
to. I have created a simple web service that adds a user based on the
parameters passed by the client. Now I can receive the xml(server side)
and can parse it but the problem is, the elements that I have declared
nillable=true, even if I have entered values in them, arrives to the
server without any values. Here is the wsdl for reference:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="urn:voxsant" xmlns:impl="urn:voxsant"
xmlns:intf="urn:voxsant"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
xmlns:apachesoap="http://xml.apache.org/xml-soap";
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
xmlns:tns1="http://model.voxsant";>
  <wsdl:types>
    <schema targetNamespace="http://model.voxsant";
xmlns="http://www.w3.org/2001/XMLSchema";>
   <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="User">
    <sequence>
        <element name="username" type="xsd:string"/>
        <element name="password" type="xsd:string"/>
        <element name="firstName" type="xsd:string"/>
        <element name="middleInitial" type="xsd:string"/>
        <element name="lastName" type="xsd:string"/>
        <element name="country" nillable="true" type="xsd:string"/>
        <element name="state" nillable="true" type="xsd:string"/>
        <element name="city" nillable="true" type="xsd:string"/>
        <element name="address1" nillable="true" type="xsd:string"/>
        <element maxOccurs="unbounded" minOccurs="0"
name="virtualNumbers" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
  </schema>
  </wsdl:types>
  <wsdl:message name="addUserRequest">
    <wsdl:part name="in0" type="tns1:User">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="addUserResponse">
    <wsdl:part name="addUserReturn" type="xsd:string">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="VoxsantService">
    <wsdl:operation name="addUser">
      <wsdl:input name="addUserRequest" message="impl:addUserRequest">
    </wsdl:input>
      <wsdl:output name="addUserResponse" message="impl:addUserResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="VoxsantServiceSoapBinding" type="impl:VoxsantService">
    <wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="addUser">
      <wsdlsoap:operation soapAction=""/>
      <wsdl:input name="addUserRequest">
        <wsdlsoap:body use="literal"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="urn:voxsant"/>
      </wsdl:input>
      <wsdl:output name="addUserResponse">
        <wsdlsoap:body use="literal"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
namespace="urn:voxsant"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="VoxsantServiceService">
    <wsdl:port name="VoxsantService"
binding="impl:VoxsantServiceSoapBinding">
      <wsdlsoap:address
location="http://localhost:8080/axis2/services/VoxsantService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


For the entries wherein I did not enter a nillable=true, their values
arrive, but for the other entries(country, state, virtual numbers etc),
I do not get the values even if my test client passes it to the ws. Does
anyone know where I went wrong? Would really appreciate any help, thanks

Carlo F.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Reply via email to