我与Wildfly和OpenJPA合作。我有一个乐观锁例外的情况。
我得到的错误消息是:
00:08:29373警告[com.arjuna.ats.arjuna](默认任务-39)arjuna01225:TwoPhaseCoordinator。beforeCompletion-SynchronizationImple失败
:org.apache.openjpa.persistence.乐观锁定异常:刷新到数据存储时检测到乐观锁定错误。以下对象可能已在另一个事务中同时修改:[com.earnix.eo.entities.optimizer.PricingMixEntity-30400]......
我的问题是EJBTransactionRolledbackException被抛出而不是乐观锁异常。因此,我的代码没有将异常视为乐观锁异常。您知道如何让Wildfly/JPA抛出EJBTransactionRolledbackException吗?
一些代码:
@Override
public List<PricingMixHeader> releasePricingRule(PricingMixHeader header) throws EOException {
for (int i = 0; ; i++) {
try {
return pricingRuleAccessor.releasePricingMix(header.getPk(), getSessionPk());
} catch (RemoteException e) {
DeadlockUtils.handleRemoteException(e, i);
} catch (EODeadlockException e) {
// recover from the deadlock
DeadlockUtils.recover(i, e.getOriginalExceptionStack());
}
}
}
这是客户端中的代码。pricingRuleAccessor。发布PricingMix(…)是对服务器端方法的远程方法调用。在服务器端,发生了乐观锁异常,然后捕获了RemoteException(TransactionRolledbackException继承自RemoteException)。
当抛出的异常是导致回滚的RuntimeException时,JBoss总是将抛出的异常(在您的案例中是OptimisticLockException)包装在EJBTransactionRollbackException中。
在您的客户端代码中,您必须检查EJBTransactionRollbackException,然后检查原因是否是乐观锁定异常:
try {
...
} catch (EJBTransactionRollbackException e) {
if (e.getCause() instanceof OptimisticLockException) {
...
}
}
我建议两件事:
1) 您可以在“OptimisticLockException”异常发生之前调用em.flush(),以获取此异常,然后根据需要抛出它。
2) 另一种可能是忽略出现OptimisticLockException的细节,并创建一个新的“MyRemoteException”(扩展EJBException的ApplicationException)。是这样的:
@ApplicationException(rollback = true)
public class MyRemoteException extends EJBException {
...
}
抛出此异常以被“视图层”捕获,然后它将决定显示哪些信息。
我现在有一个helloworld项目根据这个链接,我做了它的。帽子 文件成功。我有“DE-ABCM_TB”读卡器和SAM卡。 我的小程序AID是 我可以在卡片上选择我的小程序。(我通过"DualCard"发送SELECT APDU命令 2.8版“/pcsc选项卡)。我现在必须在发送时接收十六进制格式的hello 。但我收到6C0B!为什么我会得到这样的回应 我如何解决这个问题?我搜索了一下,但没有
问题是什么?
问题内容: 我希望有人能提供帮助。但是,每当我运行我的代码并尝试查看所有代码时,我都回到列表框中。 谁能看到原因? 码: 问题答案: 即使设置了列表框的和,我也总是要处理此问题。 您当前的代码正确无误,并且可以正常工作,如果您需要访问任意列的当前选定项目值,则可以让他们这样做: 我希望获得完整的结果是,如果您有更多的列,您仍然可以访问它们的值并对其进行任何操作。
问题内容: public class Category { 在正在生成。 问题答案: 当您执行时,您称呼孩子们的。这里没有问题,只不过您在这里调用了父对象。这将称呼孩子,等等。 不错的无限循环。 摆脱它的最好方法是将您的方法更改为: 这样,您将不打印parentCategory,而仅显示其名称,不显示无限循环,不显示StackOverflowError。 编辑: 正如博洛在下面说的那样,您将需要检
当我运行(Windows 7命令行)时: C:\rest-app\src\main\java\com\mycompany\app\test>java org.testng.testng testng.xml Suite1运行的测试总数:0,失败:0,跳过:0 ================================================== 此时我的testng.xml文件如下所