Я пытаюсь реализовать асинхронный JAX-RS. Ниже мой код:
@GET
@Path("/isAlive")
@Produces(MediaType.TEXT_HTML)
public void isAlive(@Suspended AsyncResponse ar) {
executor.execute(() -> {
System.out.println("Inside");
Connection conn = ConnectionUtil.getDBConnection();
PreparedStatement stmt;
int i = 0;
try {
stmt = conn.prepareStatement("insert into TEST_TABLE values(?)");
stmt.setString(1, "TEST INSERT");
i = stmt.executeUpdate();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
ar.resume(i);
});
}
После выполнения вышеуказанного кода я получаю Nulpointerexception в ar.resume(i)
.
13:31:35,286 ERROR [stderr] (pool-5-thread-1) Exception in thread "pool-5-thread-1" java.lang.NullPointerException
13:31:35,286 ERROR [stderr] (pool-5-thread-1) at com.test.PublishWSImpl.lambda$0(PublishWSImpl.java:51)
13:31:35,286 ERROR [stderr] (pool-5-thread-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
13:31:35,287 ERROR [stderr] (pool-5-thread-1) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
Что я делаю здесь неправильно? Если я удаляю ar.resume(i)
часть, она работает нормально. Почему и когда я должен использовать метод resume()
тогда?