I have asynchronous web service method in which I want to send response 202 (Accepted), and do same changes with DB. How can I implement it with JPA? Here my service method:
@Transactional
public void createTask(@Suspended AsyncResponse response){
new Thread(){
public void run(){
RequestTask requestTask = new RequestTask();
requestTask.setAim("all tables");
requestTask.setDescription("Update Tables");
requestTask.setOwner("John Calagan");
requestTaskDao.createRequestTask(requestTask);
}
}.start();
Response acceptedResponse = Response.status(Response.Status.ACCEPTED).build();
response.resume(acceptedResponse);
}
My Dao level:
@PersistenceContext(unitName = "administration")
private EntityManager entityManager;
@Override
public void createRequestTask(RequestTask requestTask) {
entityManager.persist(requestTask);
}
But I have an exception:
Exception in thread "Thread-6" javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityMa nagerInvocationHandler.invoke(SharedEntityManagerCreator.java:282) at com.sun.proxy.$Proxy33.persist(Unknown Source) at...
How can I resolve this problem?