【发布时间】:2013-01-08 04:14:04
【问题描述】:
我需要我的 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 .............
}
我的网络服务类
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>
【问题讨论】:
-
@Telthien,感谢您的评论,但我不明白您的问题。
-
很抱歉。评论放置不当。忽略它:P
标签: java web-services soap wsdl axis