Немного фона: PropertyFunction
- это интерфейс в Jena API , который позволяет выполнять пользовательские операции с использованием синтаксиса SPARQL.Пример:
select ?result { ?result f:myPropertyFunction 'someObject' . }
Итак, я создал класс Launch
, который реализует этот интерфейс и расширяет класс Client
.В теле метода exec
моего класса Launch
я устанавливаю соединение с сервером и, пока отправка информации не представляет проблемы, ожидание ответа сервера.Всякий раз, когда я пытаюсь wait()
для ответа сервера, я получаю следующее исключение: java.lang.IllegalMonitorStateException
.
Вот тело моего exec
метода для справки:
QueryIterator it = null;
try {
this.connect(); // works well
this.send(algorithmAndArgs); // works well
this.wait(); // exception is thrown
@SuppressWarnings("unused")
ResultSet rs = ResultSetFactory.create(it, Arrays.asList(resultIdentifiers));
} catch (Exception e) {
e.printStackTrace();
}
return it;
Кто-нибудь знаетв чем может быть проблема?Спасибо за ваш ответ.
РЕДАКТИРОВАТЬ 1: Одна вещь, которую я забыл упомянуть, состоит в том, что класс Client
имеет метод с именем onObjectReceived(Object o, Socket s)
, который запускается при каждом получении чего-либос сервера.Я попытался использовать переменную isDone
с циклом while
в методе exec
и установить его в значение true после получения объекта, но это не сработало.