1

それ自体に配列を持つ次の顧客クラスの配列を返すには、Web サービス クラスが必要です。

Web サービスを作成すると wsdl が作成されますが、その URL を使用してアクセスしようとすると、次のエラーが表示されます。

アドレスに ?wsdl を追加すると、次のエラーが表示されます

軸エラー

WSDL を生成できませんでした!

この場所には SOAP サービスはありません

アドレスに ?wsdl を追加しないと、次のエラーが表示されます

AXIS error

No service is available at this URL

私の顧客クラス

package myclasses;

public class customer {
private String name;
private int age;
private int[] rankings;

public customer(){
    //Any initializations here.
}

public customer(String n, int a) {
    this.name = n;
    this.age = a;
    rankings = new int[2];
    rankings[0] = 1;
    rankings[1] = 2;

}

public String getName() {
    return name;
}

............Rest of setter and getters goes here .............

}

私の Web サービス クラス

     package services;

import myclasses.customer;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.soap.SOAPBinding; 

@WebService (name="Hellos", 
targetNamespace="http://localhost:8081/Mywebservice2/services/Hellos")  
@SOAPBinding  
(  
      style = SOAPBinding.Style.RPC,  
      use = SOAPBinding.Use.LITERAL,  
      parameterStyle = SOAPBinding.ParameterStyle.WRAPPED  
 )  
public class Hellos {

    @WebMethod
    public @WebResult(name="name",partName="name") String getName(){
        return "Jack";
    }
    
    @WebMethod
    public @WebResult (name="customers",partName="customers") customer[] mycustomers() {
        customer[] cus = new customer[2];
        cus[0] = new customer("Jack", 28);
        cus[1] = new customer("Alex", 29);
        return cus;
        
    }
}

私のWSDL

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://services" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://services" xmlns:intf="http://services" xmlns:tns1="http://myclasses" 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 elementFormDefault="qualified" targetNamespace="http://services" xmlns="http://www.w3.org/2001/XMLSchema">
   <import namespace="http://myclasses"/>
   <element name="getName">
    <complexType/>
   </element>
   <element name="getNameResponse">
    <complexType>
     <sequence>
      <element name="getNameReturn" type="xsd:string"/>
     </sequence>
    </complexType>
   </element>
   <element name="mycustomers">
    <complexType/>
   </element>
   <element name="mycustomersResponse">
    <complexType>
     <sequence>
      <element maxOccurs="unbounded" name="mycustomersReturn" type="tns1:customer"/>
     </sequence>
    </complexType>
   </element>
  </schema>
  <schema elementFormDefault="qualified" targetNamespace="http://myclasses" xmlns="http://www.w3.org/2001/XMLSchema">
   <complexType name="customer">
    <sequence>
     <element name="age" type="xsd:int"/>
     <element name="name" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="getNameResponse">

      <wsdl:part element="impl:getNameResponse" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:message name="mycustomersResponse">

      <wsdl:part element="impl:mycustomersResponse" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:message name="mycustomersRequest">

      <wsdl:part element="impl:mycustomers" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:message name="getNameRequest">

      <wsdl:part element="impl:getName" name="parameters">

      </wsdl:part>

   </wsdl:message>

   <wsdl:portType name="Hellos">

      <wsdl:operation name="getName">

         <wsdl:input message="impl:getNameRequest" name="getNameRequest">

       </wsdl:input>

         <wsdl:output message="impl:getNameResponse" name="getNameResponse">

       </wsdl:output>

      </wsdl:operation>

      <wsdl:operation name="mycustomers">

         <wsdl:input message="impl:mycustomersRequest" name="mycustomersRequest">

       </wsdl:input>

         <wsdl:output message="impl:mycustomersResponse" name="mycustomersResponse">

       </wsdl:output>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="HellosSoapBinding" type="impl:Hellos">

      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="getName">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="getNameRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>

         <wsdl:output name="getNameResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

      <wsdl:operation name="mycustomers">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="mycustomersRequest">

            <wsdlsoap:body use="literal"/>

         </wsdl:input>

         <wsdl:output name="mycustomersResponse">

            <wsdlsoap:body use="literal"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="HellosService">

      <wsdl:port binding="impl:HellosSoapBinding" name="Hellos">

 

        <wsdlsoap:address location="http://localhost:8081/Mywebservice2/services/Hellos"/>
    
           </wsdl:port>
    
        </wsdl:service>
    
     </wsdl:definitions>
4

3 に答える 3

1

Webサービス定義でこれを試してください

@SOAPBinding
(
style = SOAPBinding.Style.DOCUMENT,
use = SOAPBinding.Use.LITERAL,
parameterStyle = SOAPBinding.ParameterStyle.WRAPPED
) 
于 2013-01-08T04:38:21.610 に答える
1

サービス クラス「services.Hellos」を介して使用される値型「myclasses.customer」には、パブリック デフォルト コンストラクターがありません

これを顧客クラスで使用するだけです。

public customer()
{
  //Any initializations here.
}
于 2013-01-08T04:18:52.587 に答える