soap web服务响应非常慢

时间:2015-03-28 22:48:36

标签: java web-services soap wsdl

我生成了肥皂网服务

当我尝试使用此服务时,我遇到了问题

需要很多时间才能得到回复(超过4分钟)

我尝试使用此测试代码:

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

@WebService
@SOAPBinding(style = Style.RPC)
public interface Balance {


    @WebMethod String getValue();

}

这是java类

import javax.jws.WebService;



@WebService(endpointInterface = "com.dq.test.web.manager.impl.Balance")
public class BalanceImp implements Balance{


    @Override
    public String getValue() {
        // TODO Auto-generated method stub
        return "test";
    }


}

发布此Web服务我使用了以下代码:

Endpoint.publish(“http://192.168.1.13:8080/WS/TestSoap”,新的BalanceImp());

这是wsdl:

的代码
<!--
 Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. 
-->
<!--
 Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. 
-->
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://impl.manager.web.test.dq.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://impl.manager.web.test.dq.com/" name="BalanceImpService">
<types/>
<message name="getValue"/>
<message name="getValueResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="Balance">
<operation name="getValue">
<input message="tns:getValue"/>
<output message="tns:getValueResponse"/>
</operation>
</portType>
<binding name="BalanceImpPortBinding" type="tns:Balance">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="getValue">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://impl.manager.web.test.dq.com/"/>
</input>
<output>
<soap:body use="literal" namespace="http://impl.manager.web.test.dq.com/"/>
</output>
</operation>
</binding>
<service name="BalanceImpService">
<port name="BalanceImpPort" binding="tns:BalanceImpPortBinding">
<soap:address location="http://192.168.1.13:8080/WS/TestSoap"/>
</port>
</service>
</definitions>

我使用eclipse来生成和测试客户端:

这是测试代码:

BalanceImpServiceLocator loc = new BalanceImpServiceLocator();
BalanceImpPortBindingStub bindingStub = new BalanceImpPortBindingStub(new URL(loc.getBalanceImpPortAddress()),loc);

System.out.println(" -- start test ----");

String string = bindingStub.getValue()

我尝试使用另一个在网络(http://www.webservicex.net/WeatherForecast.asmx?WSDL)中发布的wsdl示例。

我也使用eclipse生成客户端。

此示例的响应速度非常快。

这是此示例的源代码:

wsdl:definitions xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.webservicex.net" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.webservicex.net">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for valid zip code or Place name in USA
</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.webservicex.net">
<s:element name="GetWeatherByZipCode">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ZipCode" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetWeatherByZipCodeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetWeatherByZipCodeResult" type="tns:WeatherForecasts"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="WeatherForecasts">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Latitude" type="s:float"/>
<s:element minOccurs="1" maxOccurs="1" name="Longitude" type="s:float"/>
<s:element minOccurs="1" maxOccurs="1" name="AllocationFactor" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="FipsCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PlaceName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="StateCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Details" type="tns:ArrayOfWeatherData"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfWeatherData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="WeatherData" type="tns:WeatherData"/>
</s:sequence>
</s:complexType>
<s:complexType name="WeatherData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Day" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="WeatherImage" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MaxTemperatureF" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MinTemperatureF" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MaxTemperatureC" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MinTemperatureC" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="GetWeatherByPlaceName">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PlaceName" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetWeatherByPlaceNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetWeatherByPlaceNameResult" type="tns:WeatherForecasts"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="WeatherForecasts" type="tns:WeatherForecasts"/>
</s:schema>
</wsdl:types>
<wsdl:message name="GetWeatherByZipCodeSoapIn">
<wsdl:part name="parameters" element="tns:GetWeatherByZipCode"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeSoapOut">
<wsdl:part name="parameters" element="tns:GetWeatherByZipCodeResponse"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameSoapIn">
<wsdl:part name="parameters" element="tns:GetWeatherByPlaceName"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameSoapOut">
<wsdl:part name="parameters" element="tns:GetWeatherByPlaceNameResponse"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpGetIn">
<wsdl:part name="ZipCode" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpGetOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpGetIn">
<wsdl:part name="PlaceName" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpGetOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpPostIn">
<wsdl:part name="ZipCode" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpPostOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpPostIn">
<wsdl:part name="PlaceName" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpPostOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:portType name="WeatherForecastSoap">
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeSoapIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeSoapOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameSoapIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="WeatherForecastHttpGet">
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeHttpGetIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeHttpGetOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameHttpGetIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameHttpGetOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="WeatherForecastHttpPost">
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeHttpPostIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeHttpPostOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameHttpPostIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameHttpPostOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WeatherForecastSoap" type="tns:WeatherForecastSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetWeatherByZipCode">
<soap:operation soapAction="http://www.webservicex.net/GetWeatherByZipCode" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<soap:operation soapAction="http://www.webservicex.net/GetWeatherByPlaceName" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WeatherForecastSoap12" type="tns:WeatherForecastSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetWeatherByZipCode">
<soap12:operation soapAction="http://www.webservicex.net/GetWeatherByZipCode" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<soap12:operation soapAction="http://www.webservicex.net/GetWeatherByPlaceName" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WeatherForecastHttpGet" type="tns:WeatherForecastHttpGet">
<http:binding verb="GET"/>
<wsdl:operation name="GetWeatherByZipCode">
<http:operation location="/GetWeatherByZipCode"/>
<wsdl:input>
<http:urlEncoded/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<http:operation location="/GetWeatherByPlaceName"/>
<wsdl:input>
<http:urlEncoded/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WeatherForecastHttpPost" type="tns:WeatherForecastHttpPost">
<http:binding verb="POST"/>
<wsdl:operation name="GetWeatherByZipCode">
<http:operation location="/GetWeatherByZipCode"/>
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<http:operation location="/GetWeatherByPlaceName"/>
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WeatherForecast">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
Get one week weather forecast for valid zip code or Place name in USA
</wsdl:documentation>
<wsdl:port name="WeatherForecastSoap" binding="tns:WeatherForecastSoap">
<soap:address location="http://www.webservicex.net/WeatherForecast.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherForecastSoap12" binding="tns:WeatherForecastSoap12">
<soap12:address location="http://www.webservicex.net/WeatherForecast.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherForecastHttpGet" binding="tns:WeatherForecastHttpGet">
<http:address location="http://www.webservicex.net/WeatherForecast.asmx"/>
</wsdl:port>
<wsdl:port name="WeatherForecastHttpPost" binding="tns:WeatherForecastHttpPost">
<http:address location="http://www.webservicex.net/WeatherForecast.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

我没有确定两个例子之间的区别 为什么在第一个例子中响应非常慢

1 个答案:

答案 0 :(得分:0)

问题在于发布方法

Endpoint.publish("http://192.168.1.13:8080/WS/TestSoap", new BalanceImp());

尝试使用在源应用程序(发布者)中使用eclipse创建和发布Web服务的向导。 该向导将通过添加

来更改web.xml
 <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  <servlet>
    <display-name>Axis Admin Servlet</display-name>
    <servlet-name>AdminServlet</servlet-name>
    <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
  </servlet-mapping>

并将您添加到WEB-INF /文件,例如deploy.wsdd,undeploy.wsdd,当然还有service.wsdl,您将在其中找到您的

 <wsdlsoap:address location=".."/>

部署时还会添加文件server-config.wsdd。

输入该地址,您将获得服务。

您的回复将是即时的。