我正在用Wildfly开发Java EE中的Web应用程序,我必须开发可立即响应客户端的Web服务,但是您必须创建一个任务或线程来执行某些任务,并最终更新数据库中的记录
这是一个基本示例,这里创建了线程
@GET
@Path("/createReq")
@Produces("application/json")
public void createReq() {
objThread trip = new ObjThread();
trip.setIdTrip("id");
trip.start();
}
这是一个基本示例,这里创建了线程
public class ObjThread extends Thread {
volatile boolean ejecutar = true;
public String idTrip;
private int time = 0;
@Inject
Tbl_car_tripDAO tripDAO;
@Override
public void run() {
try {
while (ejecutar) {
if (time == 1) {
// task 1
} else if (time == 3) { //30
// task 2
} else if (time >= 5) { //45
// task 3
detener();
changeStatus();
}
Thread.sleep(1000);
time++;
}
} catch (Exception e) {
// TODO: handle exception
}
}
public void detener() {
ejecutar = false;
}
public void changeStatus() {
try {
Tbl_car_trip trip= tripDAO.getTripByIdTrip(idTrip);
trip.setCar_tri_status("data");
tripDAO.update(trip);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}
public void setIdTrip(String idTrip) {
this.idTrip = idTrip;
}
}
但是在执行时,我在changeStatus方法中遇到了持久性错误,但是如果我在另一个类中使用带有@inject批注的相同方法,则它可以正常工作。请提出建议,以帮助解决我的问题。谢谢
ObjThread必须是一个Spring bean,因此您可以注入依赖项(Tbl_car_tripDAO)。