本地一切正常,但部署時,我得到ConcurrentModificationException
當我從一個servlet使用session.setAttribute()
時拋出。在使用HTML表單添加實體後,我使用它從數據存儲返回值。Google App Engine/Java:使用session.setAttribute()時拋出ConcurrentModificationException異常()
怎麼回事,我該怎麼辦呢?
這裏是破碎的servlet:
public class AdminServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Boolean logged = false;
HttpSession session = req.getSession(true);
Enumeration<String> names = session.getAttributeNames();
while(names.hasMoreElements()) {
String name = (String) names.nextElement();
if(name.equals("logged")) {
logged = (Boolean) session.getAttribute("logged");
}
}
if(logged) {
String p1 = req.getParameter("name");
String p2 = req.getParameter("value");
if(p1 != "" && p2 != "") {
Entity e= new Entity("MyEntity");
e.setProperty("name", p1);
e.setProperty("value", p2);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Transaction txn = datastore.beginTransaction();
Key k = datastore.put(e);
txn.commit();
if(txn.isActive())
txn.rollback();
session.setAttribute("returnedKey", KeyFactory.keyToString(k)); // CRASHES HERE
}
}
resp.sendRedirect("adminpage.jsp");
}
}
謝謝!
請參閱解決方案的方法...但現在我很好奇:爲什麼它能在本地版本上正常工作? – user1394563 2012-07-23 12:44:15