それ自体に配列を持つ次の顧客クラスの配列を返すには、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>