Dubbo: Failed to invoke the method xxxxx in the service xxxxx......

Created on 1 Sep 2017  ·  11Comments  ·  Source: apache/dubbo

我在本地跑的项目,Dubbo2.8.4+zookeeper;两个提供者(提供小票数据Service,优惠券数据Service),一个消费者(将小票数据入库,优惠券数据入库)。

两个服务都注册了,在本地的dubbo-admin上也显示一切正常。优惠券Service调用,一切正常;但是小票Service调用总是报错,我百度过实在找不到原因,自己技术也不好,所以在这问问,很着急,谢谢。

控制台报错:

com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method insertOrUpdateOrderAndDetail in the service com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService. Tried 2 times of the providers [192.168.0.141:20883] (1/1) from the registry localhost:2181 on the consumer 192.168.0.141 using the dubbo version 2.8.4. Last error is: Invoke remote method timeout. method: insertOrUpdateOrderAndDetail, provider: dubbo://192.168.0.141:20883/com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService?anyhost=true&application=application_web&check=false&default.delay=-1&default.retries=1&default.timeout=3000&delay=-1&dubbo=2.8.4&generic=false&interface=com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService&methods=getPage,insertOrUpdateOrderAndDetail&pid=11428&revision=1.0.0&side=consumer&timestamp=1504246867426&version=1.0.0, cause: Waiting server-side response timeout. start time: 2017-09-01 14:23:35.296, end time: 2017-09-01 14:23:38.297, client elapsed: 0 ms, server elapsed: 3001 ms, timeout: 3000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=insertOrUpdateOrderAndDetail, parameterTypes=[class java.lang.String], arguments=[null], attachments={path=com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService, interface=com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService, version=1.0.0, timeout=3000}]], channel: /192.168.0.141:50361 -> /192.168.0.141:20883
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:101)
at com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:227)
at com.alibaba.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:72)
at com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:52)
at com.alibaba.dubbo.common.bytecode.proxy15.insertOrUpdateOrderAndDetail(proxy15.java)
at com.hszk.taurus.web.indb.IndbController.consumerDataIndb(IndbController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:817)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:237)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.hszk.taurus.filter.AutoLoginFilter.doFilter(AutoLoginFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:112)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:125)
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout. start time: 2017-09-01 14:23:35.296, end time: 2017-09-01 14:23:38.297, client elapsed: 0 ms, server elapsed: 3001 ms, timeout: 3000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=insertOrUpdateOrderAndDetail, parameterTypes=[class java.lang.String], arguments=[null], attachments={path=com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService, interface=com.hszk.taurus.analy.api.consumerorder.ConsumerOrderService, version=1.0.0, timeout=3000}]], channel: /192.168.0.141:50361 -> /192.168.0.141:20883
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:107)
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:84)
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:96)
at com.alibaba.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:144)
at com.alibaba.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:74)
at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:48)
at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)
at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
at com.alibaba.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:77)
... 77 more


service挺简单的:
@Service(version = "1.0.0")
@EnableAutoConfiguration
@Transactional
public class ConsumerOrderServiceImpl implements ConsumerOrderService {

@Autowired
private ConsumerOrderDao consumerOrderDao;
@Autowired
private ConsumerOrderDetailDao orderDetailDao;

//新增或更新消费数据
@Override
public void insertOrUpdateOrderAndDetail(String consumerData) throws Exception {

    ConsumerOrder order = JSONUtil.toBean(consumerData, ConsumerOrder.class);

    ConsumerOrder existOrder = consumerOrderDao.getByOrderAndStoreId(order.getOrderNo(),order.getStoreId());
    if(existOrder == null){
        consumerOrderDao.insertSelective(order);
        orderDetailDao.insertList(order.getDetailList());
    }else{
        int updateSucc = consumerOrderDao.updateByOrderAndMallId(order);
        if(updateSucc == 1){
            for (ConsumerOrderDetail detail : order.getDetailList()) {
                orderDetailDao.updateByIdAndOrderId(detail);
            }
        }
    }
}

}

涉及的小票数据的model和form如下:

public class ConsumerOrder implements Serializable {

private static final long serialVersionUID = 1L;

//order表的属性(createBy,createTime,updateBy,updateTime公用)
private Long id;
private Long storeId;// 门店id
private String printTime;// 打印时间
private String cashierNo;// 收银员编号
private Long terminalId;// 终端id
private String orderNo;// 单号--流水号
private String vipCardNo;// 积分卡号
private String rewardPoints;// 积分
private Integer shoppingQuantity;// 购买件数
private BigDecimal shouldPayAmount;// 应付金额
private BigDecimal cashAmount;// 现金
private BigDecimal paidInAmount;// 实收金额
private BigDecimal changes;// 找零
private Long createBy = new Long(0);//创建人
private Date createTime;//创建时间  
private Long updateBy = new Long(0);//修改人
private Date updateTime;//修改时间
private Long mallId;// 卖场id
private String terminalNo;// 终端编号
private String ossLocation;//消费小票在oss的路径

// 扩展属性
private String storeName;// 门店名
private String mallName;// 卖场名称
private String printCTime;// 开始时间
private String printETime;//结束时间
private BigDecimal shouldPayCAmount;// 金额范围的上下限
private BigDecimal shouldPayEAmount;// 金额范围的上限
private List<ConsumerOrderDetail> detailList;// 清单明细列表
private String isAdditional; // 是否是补打的

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public Long getStoreId() {
    return storeId;
}
public void setStoreId(Long storeId) {
    this.storeId = storeId;
}
public String getPrintTime() {
    return printTime;
}
public void setPrintTime(String printTime) {
    this.printTime = printTime;
}
public String getCashierNo() {
    return cashierNo;
}
public void setCashierNo(String cashierNo) {
    this.cashierNo = cashierNo;
}
public Long getTerminalId() {
    return terminalId;
}
public void setTerminalId(Long terminalId) {
    this.terminalId = terminalId;
}
public String getOrderNo() {
    return orderNo;
}
public void setOrderNo(String orderNo) {
    this.orderNo = orderNo;
}
public String getVipCardNo() {
    return vipCardNo;
}
public void setVipCardNo(String vipCardNo) {
    this.vipCardNo = vipCardNo;
}
public String getRewardPoints() {
    return rewardPoints;
}
public void setRewardPoints(String rewardPoints) {
    this.rewardPoints = rewardPoints;
}
public Integer getShoppingQuantity() {
    return shoppingQuantity;
}
public void setShoppingQuantity(Integer shoppingQuantity) {
    this.shoppingQuantity = shoppingQuantity;
}
public BigDecimal getShouldPayAmount() {
    return shouldPayAmount;
}
public void setShouldPayAmount(BigDecimal shouldPayAmount) {
    this.shouldPayAmount = shouldPayAmount;
}
public BigDecimal getCashAmount() {
    return cashAmount;
}
public void setCashAmount(BigDecimal cashAmount) {
    this.cashAmount = cashAmount;
}
public BigDecimal getPaidInAmount() {
    return paidInAmount;
}
public void setPaidInAmount(BigDecimal paidInAmount) {
    this.paidInAmount = paidInAmount;
}
public BigDecimal getChanges() {
    return changes;
}
public void setChanges(BigDecimal changes) {
    this.changes = changes;
}
public Long getCreateBy() {
    return createBy;
}
public void setCreateBy(Long createBy) {
    this.createBy = createBy;
}
public Date getCreateTime() {
    return createTime;
}
public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}
public Long getUpdateBy() {
    return updateBy;
}
public void setUpdateBy(Long updateBy) {
    this.updateBy = updateBy;
}
public Date getUpdateTime() {
    return updateTime;
}
public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}
public Long getMallId() {
    return mallId;
}
public void setMallId(Long mallId) {
    this.mallId = mallId;
}
public String getTerminalNo() {
    return terminalNo;
}
public void setTerminalNo(String terminalNo) {
    this.terminalNo = terminalNo;
}
public String getOssLocation() {
    return ossLocation;
}
public void setOssLocation(String ossLocation) {
    this.ossLocation = ossLocation;
}
public String getStoreName() {
    return storeName;
}
public void setStoreName(String storeName) {
    this.storeName = storeName;
}
public String getMallName() {
    return mallName;
}
public void setMallName(String mallName) {
    this.mallName = mallName;
}
public String getPrintCTime() {
    return printCTime;
}
public void setPrintCTime(String printCTime) {
    this.printCTime = printCTime;
}
public String getPrintETime() {
    return printETime;
}
public void setPrintETime(String printETime) {
    this.printETime = printETime;
}
public BigDecimal getShouldPayCAmount() {
    return shouldPayCAmount;
}
public void setShouldPayCAmount(BigDecimal shouldPayCAmount) {
    this.shouldPayCAmount = shouldPayCAmount;
}
public BigDecimal getShouldPayEAmount() {
    return shouldPayEAmount;
}
public void setShouldPayEAmount(BigDecimal shouldPayEAmount) {
    this.shouldPayEAmount = shouldPayEAmount;
}
public List<ConsumerOrderDetail> getDetailList() {
    return detailList;
}
public void setDetailList(List<ConsumerOrderDetail> detailList) {
    this.detailList = detailList;
}
public String getIsAdditional() {
    return isAdditional;
}
public void setIsAdditional(String isAdditional) {
    this.isAdditional = isAdditional;
}
@Override
public String toString() {
    return "ConsumerOrder [id=" + id + ", storeId=" + storeId
            + ", printTime=" + printTime + ", cashierNo=" + cashierNo
            + ", terminalId=" + terminalId + ", orderNo=" + orderNo
            + ", vipCardNo=" + vipCardNo + ", rewardPoints=" + rewardPoints
            + ", shoppingQuantity=" + shoppingQuantity
            + ", shouldPayAmount=" + shouldPayAmount + ", cashAmount="
            + cashAmount + ", paidInAmount=" + paidInAmount + ", changes="
            + changes + ", createBy=" + createBy + ", createTime="
            + createTime + ", updateBy=" + updateBy + ", updateTime="
            + updateTime + ", mallId=" + mallId + ", terminalNo="
            + terminalNo + ", ossLocation=" + ossLocation + ", storeName="
            + storeName + ", mallName=" + mallName + ", printCTime="
            + printCTime + ", printETime=" + printETime
            + ", shouldPayCAmount=" + shouldPayCAmount
            + ", shouldPayEAmount=" + shouldPayEAmount + ", detailList="
            + detailList + ", isAdditional=" + isAdditional + "]";
}

}

public class ConsumerOrderForm implements Serializable {

private static final long serialVersionUID = 1L;

// order表的属性(createBy,createTime,updateBy,updateTime公用)
private Long id;
private Long storeId;// 门店id
private String printTime;// 打印时间
private String cashierNo;// 收银员编号
private Long terminalId;// 终端id
private String orderNo;// 单号--流水号
private String vipCardNo;// 积分卡号
private String rewardPoints;// 积分
private Integer shoppingQuantity;// 购买件数
private BigDecimal shouldPayAmount;// 应付金额
private BigDecimal cashAmount;// 现金
private BigDecimal paidInAmount;// 实收金额
private BigDecimal changes;// 找零
private Long createBy = new Long(0);// 创建人
private Date createTime;// 创建时间
private Long updateBy = new Long(0);// 修改人
private Date updateTime;// 修改时间
private Long mallId;// 卖场id
private String terminalNo;// 终端编号
private String ossLocation;// 消费小票在oss的路径

// 扩展属性
private String storeName;// 门店名
private String mallName;// 卖场名称
private String printCTime;// 开始时间
private String printETime;// 结束时间
private BigDecimal shouldPayCAmount;// 金额范围的上下限
private BigDecimal shouldPayEAmount;// 金额范围的上限
private List<ConsumerOrderDetailForm> detailList;// 清单明细列表
private String isAdditional; // 是否是补打的

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public Long getStoreId() {
    return storeId;
}
public void setStoreId(Long storeId) {
    this.storeId = storeId;
}
public String getPrintTime() {
    return printTime;
}
public void setPrintTime(String printTime) {
    this.printTime = printTime;
}
public String getCashierNo() {
    return cashierNo;
}
public void setCashierNo(String cashierNo) {
    this.cashierNo = cashierNo;
}
public Long getTerminalId() {
    return terminalId;
}
public void setTerminalId(Long terminalId) {
    this.terminalId = terminalId;
}
public String getOrderNo() {
    return orderNo;
}
public void setOrderNo(String orderNo) {
    this.orderNo = orderNo;
}
public String getVipCardNo() {
    return vipCardNo;
}
public void setVipCardNo(String vipCardNo) {
    this.vipCardNo = vipCardNo;
}
public String getRewardPoints() {
    return rewardPoints;
}
public void setRewardPoints(String rewardPoints) {
    this.rewardPoints = rewardPoints;
}
public Integer getShoppingQuantity() {
    return shoppingQuantity;
}
public void setShoppingQuantity(Integer shoppingQuantity) {
    this.shoppingQuantity = shoppingQuantity;
}
public BigDecimal getShouldPayAmount() {
    return shouldPayAmount;
}
public void setShouldPayAmount(BigDecimal shouldPayAmount) {
    this.shouldPayAmount = shouldPayAmount;
}
public BigDecimal getCashAmount() {
    return cashAmount;
}
public void setCashAmount(BigDecimal cashAmount) {
    this.cashAmount = cashAmount;
}
public BigDecimal getPaidInAmount() {
    return paidInAmount;
}
public void setPaidInAmount(BigDecimal paidInAmount) {
    this.paidInAmount = paidInAmount;
}
public BigDecimal getChanges() {
    return changes;
}
public void setChanges(BigDecimal changes) {
    this.changes = changes;
}
public Long getCreateBy() {
    return createBy;
}
public void setCreateBy(Long createBy) {
    this.createBy = createBy;
}
public Date getCreateTime() {
    return createTime;
}
public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}
public Long getUpdateBy() {
    return updateBy;
}
public void setUpdateBy(Long updateBy) {
    this.updateBy = updateBy;
}
public Date getUpdateTime() {
    return updateTime;
}
public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}
public Long getMallId() {
    return mallId;
}
public void setMallId(Long mallId) {
    this.mallId = mallId;
}
public String getTerminalNo() {
    return terminalNo;
}
public void setTerminalNo(String terminalNo) {
    this.terminalNo = terminalNo;
}
public String getOssLocation() {
    return ossLocation;
}
public void setOssLocation(String ossLocation) {
    this.ossLocation = ossLocation;
}
public String getStoreName() {
    return storeName;
}
public void setStoreName(String storeName) {
    this.storeName = storeName;
}
public String getMallName() {
    return mallName;
}
public void setMallName(String mallName) {
    this.mallName = mallName;
}
public String getPrintCTime() {
    return printCTime;
}
public void setPrintCTime(String printCTime) {
    this.printCTime = printCTime;
}
public String getPrintETime() {
    return printETime;
}
public void setPrintETime(String printETime) {
    this.printETime = printETime;
}
public BigDecimal getShouldPayCAmount() {
    return shouldPayCAmount;
}
public void setShouldPayCAmount(BigDecimal shouldPayCAmount) {
    this.shouldPayCAmount = shouldPayCAmount;
}
public BigDecimal getShouldPayEAmount() {
    return shouldPayEAmount;
}
public void setShouldPayEAmount(BigDecimal shouldPayEAmount) {
    this.shouldPayEAmount = shouldPayEAmount;
}
public List<ConsumerOrderDetailForm> getDetailList() {
    return detailList;
}
public void setDetailList(List<ConsumerOrderDetailForm> detailList) {
    this.detailList = detailList;
}
public String getIsAdditional() {
    return isAdditional;
}
public void setIsAdditional(String isAdditional) {
    this.isAdditional = isAdditional;
}
@Override
public String toString() {
    return "ConsumerOrderForm [id=" + id + ", storeId=" + storeId
            + ", printTime=" + printTime + ", cashierNo=" + cashierNo
            + ", terminalId=" + terminalId + ", orderNo=" + orderNo
            + ", vipCardNo=" + vipCardNo + ", rewardPoints=" + rewardPoints
            + ", shoppingQuantity=" + shoppingQuantity
            + ", shouldPayAmount=" + shouldPayAmount + ", cashAmount="
            + cashAmount + ", paidInAmount=" + paidInAmount + ", changes="
            + changes + ", createBy=" + createBy + ", createTime="
            + createTime + ", updateBy=" + updateBy + ", updateTime="
            + updateTime + ", mallId=" + mallId + ", terminalNo="
            + terminalNo + ", ossLocation=" + ossLocation + ", storeName="
            + storeName + ", mallName=" + mallName + ", printCTime="
            + printCTime + ", printETime=" + printETime
            + ", shouldPayCAmount=" + shouldPayCAmount
            + ", shouldPayEAmount=" + shouldPayEAmount + ", detailList="
            + detailList + ", isAdditional=" + isAdditional + "]";
}

}

public class ConsumerOrderDetail implements Serializable{

private static final long serialVersionUID = 1L;

//detail表的属性(createBy,createTime,updateBy,updateTime公用)
private Long id;
private Long consumerOrderId;// 客户订单id
private Integer listOrder;// 购买物品序号
private String commodityName;// 商品名称
private String barCode;// 条形码
private Double quantity;// 数量
private BigDecimal salePrice;// 实售
private BigDecimal unitPrice;// 单价
private Double discount;// 折扣
private BigDecimal money;// 金额
private Long createBy = new Long(0);//创建人
private Date createTime;//创建时间
private Long updateBy = new Long(0);//修改人
private Date updateTime;//修改时间
private int isJoinActivity = 0;// 是否参与优惠活动。0-没参与,1参与
private String typeId;//商品小分类ID
private String brandCode;//商品code

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public Long getConsumerOrderId() {
    return consumerOrderId;
}
public void setConsumerOrderId(Long consumerOrderId) {
    this.consumerOrderId = consumerOrderId;
}
public Integer getListOrder() {
    return listOrder;
}
public void setListOrder(Integer listOrder) {
    this.listOrder = listOrder;
}
public String getCommodityName() {
    return commodityName;
}
public void setCommodityName(String commodityName) {
    this.commodityName = commodityName;
}
public String getBarCode() {
    return barCode;
}
public void setBarCode(String barCode) {
    this.barCode = barCode;
}
public Double getQuantity() {
    return quantity;
}
public void setQuantity(Double quanity) {
    this.quantity = quanity;
}
public BigDecimal getSalePrice() {
    return salePrice;
}
public void setSalePrice(BigDecimal salePrice) {
    this.salePrice = salePrice;
}
public BigDecimal getUnitPrice() {
    return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
    this.unitPrice = unitPrice;
}
public Double getDiscount() {
    return discount;
}
public void setDiscount(Double discount) {
    this.discount = discount;
}
public BigDecimal getMoney() {
    return money;
}
public void setMoney(BigDecimal money) {
    this.money = money;
}
public Long getCreateBy() {
    return createBy;
}
public void setCreateBy(Long createBy) {
    this.createBy = createBy;
}
public Date getCreateTime() {
    return createTime;
}
public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}
public Long getUpdateBy() {
    return updateBy;
}
public void setUpdateBy(Long updateBy) {
    this.updateBy = updateBy;
}
public Date getUpdateTime() {
    return updateTime;
}
public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}
public int getIsJoinActivity() {
    return isJoinActivity;
}
public void setIsJoinActivity(int isJoinActivity) {
    this.isJoinActivity = isJoinActivity;
}

public String getTypeId() {
    return typeId;
}
public void setTypeId(String typeId) {
    this.typeId = typeId;
}
public String getBrandCode() {
    return brandCode;
}
public void setBrandCode(String brandCode) {
    this.brandCode = brandCode;
}
@Override
public String toString() {
    return "ConsumerOrderDetail [id=" + id + ", consumerOrderId="
            + consumerOrderId + ", listOrder=" + listOrder
            + ", commodityName=" + commodityName + ", barCode=" + barCode
            + ", quantity=" + quantity + ", salePrice=" + salePrice
            + ", unitPrice=" + unitPrice + ", discount=" + discount
            + ", money=" + money + ", createBy=" + createBy
            + ", createTime=" + createTime + ", updateBy=" + updateBy
            + ", updateTime=" + updateTime + ", isJoinActivity="
            + isJoinActivity + ", typeId=" + typeId + ", brandCode="
            + brandCode + "]";
}

}

public class ConsumerOrderDetailForm implements Serializable {

private static final long serialVersionUID = 1L;

//detail表的属性(createBy,createTime,updateBy,updateTime公用)
private Long id;
private Long consumerOrderId;// 客户订单id
private Integer listOrder;// 购买物品序号
private String commodityName;// 商品名称
private String barCode;// 条形码
private Double quantity;// 数量
private BigDecimal salePrice;// 实售
private BigDecimal unitPrice;// 单价
private Double discount;// 折扣
private BigDecimal money;// 金额
private Long createBy = new Long(0);//创建人
private Date createTime;//创建时间
private Long updateBy = new Long(0);//修改人
private Date updateTime;//修改时间
private int isJoinActivity = 0;// 是否参与优惠活动。0-没参与,1参与
private String typeId;//商品小分类ID
private String brandCode;//商品code

public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public Long getConsumerOrderId() {
    return consumerOrderId;
}
public void setConsumerOrderId(Long consumerOrderId) {
    this.consumerOrderId = consumerOrderId;
}
public Integer getListOrder() {
    return listOrder;
}
public void setListOrder(Integer listOrder) {
    this.listOrder = listOrder;
}
public String getCommodityName() {
    return commodityName;
}
public void setCommodityName(String commodityName) {
    this.commodityName = commodityName;
}
public String getBarCode() {
    return barCode;
}
public void setBarCode(String barCode) {
    this.barCode = barCode;
}
public Double getQuantity() {
    return quantity;
}
public void setQuantity(Double quanity) {
    this.quantity = quanity;
}
public BigDecimal getSalePrice() {
    return salePrice;
}
public void setSalePrice(BigDecimal salePrice) {
    this.salePrice = salePrice;
}
public BigDecimal getUnitPrice() {
    return unitPrice;
}
public void setUnitPrice(BigDecimal unitPrice) {
    this.unitPrice = unitPrice;
}
public Double getDiscount() {
    return discount;
}
public void setDiscount(Double discount) {
    this.discount = discount;
}
public BigDecimal getMoney() {
    return money;
}
public void setMoney(BigDecimal money) {
    this.money = money;
}
public Long getCreateBy() {
    return createBy;
}
public void setCreateBy(Long createBy) {
    this.createBy = createBy;
}
public Date getCreateTime() {
    return createTime;
}
public void setCreateTime(Date createTime) {
    this.createTime = createTime;
}
public Long getUpdateBy() {
    return updateBy;
}
public void setUpdateBy(Long updateBy) {
    this.updateBy = updateBy;
}
public Date getUpdateTime() {
    return updateTime;
}
public void setUpdateTime(Date updateTime) {
    this.updateTime = updateTime;
}
public int getIsJoinActivity() {
    return isJoinActivity;
}
public void setIsJoinActivity(int isJoinActivity) {
    this.isJoinActivity = isJoinActivity;
}

public String getTypeId() {
    return typeId;
}
public void setTypeId(String typeId) {
    this.typeId = typeId;
}
public String getBrandCode() {
    return brandCode;
}
public void setBrandCode(String brandCode) {
    this.brandCode = brandCode;
}
@Override
public String toString() {
    return "ConsumerOrderDetail [id=" + id + ", consumerOrderId="
            + consumerOrderId + ", listOrder=" + listOrder
            + ", commodityName=" + commodityName + ", barCode=" + barCode
            + ", quantity=" + quantity + ", salePrice=" + salePrice
            + ", unitPrice=" + unitPrice + ", discount=" + discount
            + ", money=" + money + ", createBy=" + createBy
            + ", createTime=" + createTime + ", updateBy=" + updateBy
            + ", updateTime=" + updateTime + ", isJoinActivity="
            + isJoinActivity + ", typeId=" + typeId + ", brandCode="
            + brandCode + "]";
}

}

------------------------期待回复-------------------------------

All 11 comments

cause: Waiting server-side response timeout。是不是服务超时了,insertOrUpdateOrderAndDetail方法耗时大于timeout时间(看你的设置是3秒)。应该是这个原因,还有信息:client elapsed: 0 ms, server elapsed: 3001 ms, timeout: 3000 ms,

@abatorQ 你好,我把时间改成了6秒,还是这个错。我在本地跑的,数据库在公司局域网,而且存一条数据,这个数据量很小,存一条数据花不了这么多时间,肯定问题在别的地方。

打断点看看

@wonderlq 打断点了,还是这个错,而且还不知道是哪行

你可以先把insertOrUpdateOrderAndDetail方法里面的内容注释掉,不要留任何逻辑,先排除是 方法超时的原因吧。

服务端有接收到请求吗?如果有,那从接收到处理完一共花了多久,是否大于配置的超时时间,前后加几个log就可以知道了。如果没有接收到请求,那检查下配置吧

循环里面调用update是不是很慢啊。。

@abatorQ 我想我大概知道原因了,因为我加了断点,到时timeout

控制台发现这么一句:

Waiting server-side response timeout by scan timer. start time: 2017-09-01 16:20:18.311, end time: 2017-09-01 16:20:24.332, client elapsed: 0 ms, server elapsed: 6021 ms, timeout: 6000 ms,

6021 > 6000,所以timeout,所以dubbo retry 2次。

问题应该是明确了吧,应该是超时问题,我把问题关闭掉了

怎么解决?

@dingziyang 在忙吗?我也遇到同样的问题了,timeout设置1000s,还是报如下错误如何解决?
Tried 3 times of the providers [10.6.18.16:23880, 10.6.18.17:23880] (2/2) from the registry 10.8.8.2:2181 on the consumer 10.6.6.239 using the dubbo version 2.5.3. Last error is: Failed to invoke remote method: finRiCedDue,

Was this page helpful?
0 / 5 - 0 ratings