首页 > 解决方案 > 从 Java 调用(工作的)REST WebService 冻结而没有响应

问题描述

对于这个问题,我只提供了最少的代码,因为提供与此问题相关的所有内容都太多了。如果您有想法并希望看到具体的实现,我当然会在之后提供。

由于这可能是一个普遍的问题,而不是代码中的错误,我想无论如何这已经足够了。

我写了一个 JUnit 系统测试来测试我的一些 Web 服务。如果我为每个方法测试 1 个服务(例如“writeTest”),它就可以工作。每次测试。如果我也使用 SOAP UI 调用它们,它们也会起作用。

不幸的是,由于我正在尝试向我的数据库写入、读取和删除对象,因此我需要先写入一个对象才能读取它。这就是问题所在。在写作作品时,阅读它会导致冻结。

如果我更改顺序,阅读作品和写作会导致冻结状态。如果我调用两次写作或阅读,它仍然有效!但是,当我将2 个 不同的 服务调用放入1 个方法中时,我就遇到了这个问题。

在这花了 2 天后,我通过关闭客户端连接并打开一个新连接找到了解决方法。不幸的是,这不是很干净。

任何有关如何解决此问题的建议都值得赞赏。由于客户端包含自己编写的代码,这可能毕竟是一个编程问题,但我们假设它不是,因为它在其他几个类中使用完全没有问题(不过,如果你有,请随时询问更多代码一个猜测,问题可能是什么)。

谢谢你。

    @Test
    public void myTests() {

        //Create simple object first
        try {
            client.getMyWebService().writeTest(repo, object, prop);
        } catch (final WebApplicationException | ParseException e) {
            Assert.fail(e.getMessage());
        }  

        resetClient();

        //Read the object
        Properties result= new DataExtensionObjectParam();
        try {       
            result = client.getMyWebService().readTest(repo, object);//Freeze           
        } catch (final WebApplicationException | ParseException e) {
            Assert.fail(e.getMessage());
        }
    }


    private void resetClient() {

      client.closeClient();
      try {
          client = getStandardClient();
      } catch (IOException ex) {
          ex.printStackTrace();
      } 
    }

标签: javarestweb-servicesjakarta-eejunit

解决方案


推荐阅读