代码之家  ›  专栏  ›  技术社区  ›  Tuomas Toivonen

WS-client超时时的javaee事务行为

  •  0
  • Tuomas Toivonen  · 技术社区  · 8 年前

    我已经发布了使用javaee和JAX-WS绑定到HTTP传输的同步soapweb服务。如果web服务使用者在服务方法返回之前超时,javaee规范是否要求JTA事务回滚?

    在从服务方法返回之前,我强制客户端超时并额外睡眠70秒,这导致 java.net.SocketTimeoutException: Read timed out SoapUI异常。web服务事务确实在返回后回滚。

    这种行为是javaee规范要求的,期望客户端TCP确认来提交事务吗?如果是,具体的协议是什么?或者这是一种更特定于SoapUI的情况,它不适用于所有客户机?

    为了澄清,我尝试模拟一个场景,在服务过程中网络延迟或故障 导致客户端超时。

    2 回复  |  直到 8 年前
        1
  •  2
  •   maress    8 年前

    事务与超时无关。提交事务的条件是bean方法是否正常返回。如果异常返回,无论是由于内部错误还是超时异常,事务都将回滚。

    @ApplicationException(rollback = false)

    https://docs.oracle.com/javaee/6/api/javax/ejb/ApplicationException.html

        2
  •  0
  •   Giorgio D.    8 年前

    你所要求的不能真正做到。或者尝试异步调用。或者你可以做另一个服务,客户可以通过它来询问交易是否成功。