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