我需要我的 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>