gpt4 book ai didi

java - 如何在 servlet 级别捕获 OptimisticLockException?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:11 25 4
gpt4 key购买 nike

我正在使用 JPA toplink-essential,构建 REST 网络应用程序。

我有一个 servlet,它可以找到一个实体并将其删除。

在代码下方,我认为我可以在 servlet 级别捕获乐观锁异常,但事实并非如此!而是抛出 RollbackException,这就是文档所说的:

但是当我看到 Netbean IDE GlassFish 日志时,某处抛出了 optimisticLockException。它只是没有被我的代码捕获。 (我的系统打印消息没有显示,所以我确定它不会在那里。)

我尝试导入每个包(当然一次一个)并使用 catch 子句进行测试,但两次都没有进入 catch block ,即使日志错误显示“乐观异常”。

import javax.persistence.OptimisticLockException;
import oracle.toplink.essentials.exceptions.OptimisticLockException;

那么 OptimisticLockException 是在什么地方抛出的?????

@Path("delete")
@DELETE
@Consumes("application/json")
public Object planDelete(String content) {

try {
EntityManager em = EmProvider.getInstance().getEntityManagerFactory().createEntityManager();

EntityTransaction txn = em.getTransaction();
txn.begin();
jObj = new JSONObject(content);
MyBeany bean = em.find(123);

bean.setVersion(Integer.parseInt(12345));
em.remove(bean);


//here commit!!!!!
em.getTransaction().commit();
}
catch(OptimisticLockException e) { //this is not caught here :(
System.out.pritnln("here");
//EntityTransactionManager.rollback(txn);
return HttpStatusHandler.sendConflict();
}
catch(RollbackException e) {
return HttpStatusHandler.sendConflict();
}
catch(Exception e) {
return HttpStatusHandler.sendServerError(e);
}
finally {
if(em != null) {
em.close();
}
}

错误信息:

[TopLink Warning]: 2011.01.28 05:11:24.007--UnitOfWork(22566987)
--Exception [TOPLINK-5006]
(Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))):
oracle.toplink.essentials.exceptions.OptimisticLockException

[TopLink Warning]: 2011.02.01 08:50:15.095--UnitOfWork(681660)--
javax.persistence.OptimisticLockException: Exception [TOPLINK-5006] (Oracle TopLink
Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))):
oracle.toplink.essentials.exceptions.OptimisticLockException

最佳答案

不是 100% 确定,但是否可能是您捕获了 javax.persistence.OptimisticLockException(注意包),但由于抛出的异常是 oracle.toplink.essentials.exceptions.OptimisticLockException,它没有被捕获?尽管异常类的名称相同,但它们不是同一个类。

关于java - 如何在 servlet 级别捕获 OptimisticLockException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4826154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com