問題タブ [cdo-emf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 同時 CDO 書き込みトランザクション
私の理解によると、CDOTransactions
リソースとオブジェクトを含む読み取り/書き込みアクセスを提供します。2 つの 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.org.eclipse.emf.internal.cdo.view.CDOViewImpl.sendDeltaNotifications(CDOViewImpl.java:1111) のディスパッチ (NotificationChainImpl.java:86) 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. java.lang.Thread.run(Thread.java:745) の ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:999) の sendDeltaNotifications(CDOViewImpl.java:1111) 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.ジャワ:745)org.eclipse.emf.internal.cdo.view.CDOViewImpl.doInvalidate(CDOViewImpl.java:999) の sendDeltaNotifications(CDOViewImpl.java:1111) 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.ジャワ:745)CDOViewImpl$InvalidationRunnable.doRun(CDOViewImpl.java:1956) at org.eclipse.net4j.internal.util.concurrent.RunnableWithName.run(RunnableWithName.java:46) at org.eclipse.net4j.internal.util.concurrent.ExecutorWorkSerializer$1 .run(ExecutorWorkSerializer.java:105) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang. Thread.run(スレッド.java:745)CDOViewImpl$InvalidationRunnable.doRun(CDOViewImpl.java:1956) at org.eclipse.net4j.internal.util.concurrent.RunnableWithName.run(RunnableWithName.java:46) at org.eclipse.net4j.internal.util.concurrent.ExecutorWorkSerializer$1 .run(ExecutorWorkSerializer.java:105) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang. Thread.run(スレッド.java:745)1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で java.lang.Thread.run(Thread.java:745) で1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で java.lang.Thread.run(Thread.java:745) で
この問題に対する答えを得ることができれば、それは素晴らしいことです。