并发CDO写入事务

时间:2018-01-22 15:56:02

标签: java eclipse concurrency emf cdo

根据我的理解,CDOTransactions提供包含资源和对象的读写访问权限。 我有一个资源集,有两个CDO资源文件,resource1,resource2。

具有session1和TransactionalEditingDomain1的User1打开CDOTransaction T1。

具有session2和TransactionalEditingDomain2的User2打开CDOTransaction T2。

使用T1,user1创建一个新的CDO对象并添加到resource1。

使用T2,user2创建一个新的CDO对象并添加到resource2。

当user1提交事务T1时,它会保存更改,但会抛出下面提到的IllegalStateException。

  

java.lang.IllegalStateException:无法修改资源集   写交易   org.eclipse.emf.transaction.impl.TransactionChangeRecorder.assertWriting(TransactionChangeRecorder.java:348)     在   org.eclipse.emf.transaction.impl.TransactionChangeRecorder.appendNotification(TransactionChangeRecorder.java:302)     在   org.eclipse.emf.transaction.impl.TransactionChangeRecorder.processObjectNotification(TransactionChangeRecorder.java:284)     在   org.eclipse.emf.transaction.impl.TransactionChangeRecorder.notifyChanged(TransactionChangeRecorder.java:240)     在   org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)     在   org.eclipse.emf.common.notify.impl.NotificationChainImpl.dispatch(NotificationChainImpl.java:98)     在   org.eclipse.emf.common.notify.impl.NotificationChainImpl.dispatch(NotificationChainImpl.java:86)     在   org.eclipse.emf.internal.cdo.view.CDOViewImpl.sendDeltaNotifications(CDOViewImpl.java:1111)     在   org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:999)     在   org.eclipse.emf.internal.cdo.view.CDOViewImpl $ InvalidationRunnable.doRun(CDOViewImpl.java:1956)     在   org.eclipse.net4j.internal.util.concurrent.RunnableWithName.run(RunnableWithName.java:46)     在   org.eclipse.net4j.internal.util.concurrent.ExecutorWorkSerializer $ 1.run(ExecutorWorkSerializer.java:105)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)     在java.lang.Thread.run(Thread.java:745)

如果能得到这个问题的答案,那就太好了。

0 个答案:

没有答案