0
我的servlet由三个读取结果的设备同时联系。 发生了一件奇怪的事情:第一个设备显示结果,通常是第二个,而第三个设备收到500内部服务器错误,因为引发了异常org.hibernate.ResourceClosedException:此TransactionCoordinator已关闭(如下所示代码)。 因此,我知道会话是在数据库由三个设备共享的情况下启动的,当其中一个设备关闭后,会结束操作并关闭会话。为什么会发生?我想为每位导师提供专门的会话。我的servlet抛出异常ResourceClosed
@WebServlet("/UpdateTutor")
public class UpdateTutor extends HttpServlet {
Session s;
int i=0;
static Logger log= Log.getLogger(UpdateTutor.class);
public UpdateTutor() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String tipo = request.getParameter("tipo");
String seriale = request.getParameter("seriale");
PrintWriter out = response.getWriter();
s = PersistanceSessionFactory.openSession("UpdateTutor"+seriale);
log.infoServlet("Ricevo una richiesta di aggiornamento sul tutor "+seriale);
if(seriale==null){
out.write("No serial");
s.close();
return;
}
if(tipo==null){
out.write(notificaAggiornamento(seriale));
s.close();
}else{
out.write(updateAll(seriale));
s.close();
}
return;
}
public String updateAll(String seriale) {
log.infoServlet("Aggiornamento in corso..stampo lo stato attuale della centrale");
String out = "";
/*Addetti*/
out+="<addetti val = \""+updateAddetti(seriale)+"\"/>\n";
.....
return out;
}
public String updateAddetti(String seriale){
.............
if(a!=null){
String den ="";
//Exception org.hibernate.ResourceClosedException: This TransactionCoordinator has been closed
Azienda az = (Azienda) s.get(Azienda.class, a.getId().getIdAzienda());
public class PersistanceSessionFactory {
private static String TAG = "PersistanceSessionFactory";
private static SessionFactory sf = null;
.....
public static Session openSession(String source){
return sf.openSession();
}
.....
}
@Saverio它有帮助吗? – Keerthivasan
天啊!我是一个非常粗心的白痴,你是一个非常善良的人。这是问题,现在它起作用了。非常感谢你 –
@SaverioPuccia你非常欢迎! – Keerthivasan