Вызов (работающего) REST WebService из Java зависает без ответа - PullRequest
0 голосов
/ 10 сентября 2018

Для этого вопроса я предоставил только минимум кода, поскольку предоставление всего, что связано с этой проблемой, было бы слишком много. Если у вас есть идея и вы хотите увидеть конкретную реализацию, я, конечно, предоставлю ее позже.

Поскольку это, вероятно, общая проблема, а не ошибка в коде, я полагаю, в любом случае этого достаточно.

Я написал системный тест JUnit, чтобы протестировать некоторые из моих веб-сервисов. Если я тестирую 1 сервис для каждого метода (например, «writeTest»), он работает. С каждым тестом. Они работают, если я позвоню им с использованием SOAP UI.

К сожалению, поскольку я пытаюсь писать, читать и удалять объекты в моей базе данных, мне нужно написать объект, прежде чем я смогу его прочитать. И здесь проблема. Во время написания работ чтение приводит к зависанию.

  • Нет исключений
  • Нет журналов
  • Нет ошибки JUnit
  • Нет времени ожидания
  • Нет ответа
  • При удаленной отладке я подтвердил, что мой сервис даже не вызывается.

Если я изменю порядок, чтение работает и запись результатов в замороженном состоянии. Если я позвоню, пишу или читаю дважды, это все равно работает НО в тот момент, когда я ставлю 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();
      } 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...