問題タブ [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.

0 投票する
0 に答える
94 参照

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) で

この問題に対する答えを得ることができれば、それは素晴らしいことです。