根据我的理解,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)
如果能得到这个问题的答案,那就太好了。