请求超时/无法发送消息异常(SOAP CXF)

问题描述 投票:0回答:1

我正在尝试创建SOAP服务来回发送请求。一个接一个地遇到恒定错误。但是我不断收到异常:

    org.apache.cxf.interceptor.Fault: Could not receive Message.
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:65)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
        at com.sun.proxy.$Proxy115.processOrder(Unknown Source)
        at com.att.logicalprovisioning.common.gtc.shared.RequestListClient.run(RequestListClient.java:423)
Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking http://localhost:8080/GTC/services/ProcessGtcOrderSoapHttpPort: Read timed out
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1400)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1384)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:671)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63)
        ... 9 more

我编写的代码遍布各地,但是主要部分是:

WSDL服务声明:

<service name="ProcessGtcOrderService">
    <port name="ProcessGtcOrderSoapHttpPort" binding="tns:ProcessGtcOrderSoapHttpBinding">
        <soap:address location="http://localhost:8080/GTC/services/ProcessGtcOrderSoapHttpPort"/>
    </port>
</service>

我正在从客户端呼叫服务:

GtcWebServiceClient GtcWebServiceClient = getClient();
ProcessGtcOrderPortType processGtcOrderPortType = gtcWebServiceClient.getPort();

ProcessOrderResponse processOrderResponse = processGtcOrderPortType.processOrder(processOrderRequest);

setOrderResponse(processOrderResponse);

我通过以下方式初始化客户端:

URL wsdlLoc = new URL("http://localhost:8080/GTC/GtcProcessOrder/wsdl/GtcProcessOrder.wsdl");

// Create a service and add at least one port to it
processGtcOrderService = new ProcessGtcOrderService(wsdlLoc, new QName("http://logicalprovisioning.lpm.com/gtc/processorder", "ProcessGtcOrderService"));
setService(processGtcOrderService);
.
.
.   
getBindingProvider().getRequestContext().put(BindingProviderProperties.CONNECT_TIMEOUT, connectTimeout);
getBindingProvider().getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endPointUrl);

我不确定要提供什么其他信息,请让我知道,我将更新问题。任何帮助,将不胜感激。

java web-services soap cxf
1个回答
0
投票

我认为您缺少接收超时。尝试让我知道。

© www.soinside.com 2019 - 2024. All rights reserved.