I have a flow like the one in Attachments. So, if a single put in the LOOP fails all puts (even previous) must be rollbacked, and if jms message send fails, the previous puts must be rollbacked.
I read that Terracotta supports Transaction in fact i added transactionalMode=“local” in cache configuration file. More in detail:
I have defined a cache manager and a corresponding cache using Integration Server web console. I have also added the “transactionalMode” parameter in
- “ehcache-cache-manager.xml” file placed in “/IntegrationServer/instances/default/config/Caching”
the following is how the configuration file looks:
<cache
name="testcache4"
maxEntriesLocalHeap="10000"
copyOnWrite="true"
copyOnRead="true"
cacheLoaderTimeoutMillis="30000"
transactionalMode="local">
<persistence
strategy="distributed"/>
<terracotta
consistency="STRONG">
<nonstop/>
</terracotta>
<searchable/>
</cache>
The cache manager started then the configuration is ok.
Then i use pub.cache:put to write to cache like in Attachmemnts image, surrounded by pub.art.transaction:startTransaction, pub.art.transaction:commitTransaction and pub.art.transaction:rollbackTransaction to control a single transaction.
However I don’t seem to get it working since the pub.cache.put raise the following exception:
1. com.wm.app.b2b.server.ServiceException: net.sf.ehcache.transaction.TransactionException: transaction not started
2. at pub.cacheimpl.put(cacheimpl.java:164)
3. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
4. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
5. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
6. at java.lang.reflect.Method.invoke(Method.java:497)
7. at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:407)
8. at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
9. at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
10. at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49)
11. at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
12. at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
13. at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
14. at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:303)
15. at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34)
16. at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:371)
17. at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
18. at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:384)
19. at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:238)
20. at com.wm.app.b2b.server.BaseService.invoke(BaseService.java:225)
21. at com.wm.lang.flow.FlowInvoke.invoke(FlowInvoke.java:254)
22. at com.wm.lang.flow.FlowState.invokeNode(FlowState.java:511)
23. at com.wm.lang.flow.FlowState.stepIncremental(FlowState.java:428)
24. at com.wm.lang.flow.FlowState.invoke(FlowState.java:331)
25. at wm.server.flowdebugger.stepFlow(flowdebugger.java:935)
26. at wm.server.flowdebugger.execute(flowdebugger.java:465)
27. at sun.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)
28. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
29. at java.lang.reflect.Method.invoke(Method.java:497)
30. at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:417)
31. at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:643)
32. at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
33. at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49)
34. at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
35. at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
36. at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
37. at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:303)
38. at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34)
39. at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:371)
40. at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547)
41. at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:384)
42. at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:238)
43. at com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119)
44. at com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:156)
45. at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:178)
46. at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:386)
47. at com.wm.util.pool.PooledThread.run(PooledThread.java:127)
48. at java.lang.Thread.run(Thread.java:745)
49. Caused by: net.sf.ehcache.transaction.TransactionException: transaction not started
50. at net.sf.ehcache.transaction.local.LocalTransactionStore.getCurrentTransactionContext(LocalTransactionStore.java:101)
51. at net.sf.ehcache.transaction.local.LocalTransactionStore.assertNotTimedOut(LocalTransactionStore.java:107)
52. at net.sf.ehcache.transaction.local.LocalTransactionStore.put(LocalTransactionStore.java:202)
53. at net.sf.ehcache.store.AbstractCopyingCacheStore.put(AbstractCopyingCacheStore.java:78)
54. at net.sf.ehcache.store.TerracottaTransactionalCopyingCacheStore.put(TerracottaTransactionalCopyingCacheStore.java:31)
55. at org.terracotta.modules.ehcache.store.nonstop.NonStopStoreWrapper.put(NonStopStoreWrapper.java:820)
56. at net.sf.ehcache.Cache.putInternal(Cache.java:1617)
57. at net.sf.ehcache.Cache.put(Cache.java:1543)
58. at net.sf.ehcache.Cache.put(Cache.java:1508)
59. at pub.cacheimpl.put(cacheimpl.java:160)
60. ... 46 more
It seems that pub.cache:put doesn’t detect the transaction.
There is a method to force pub.cache:put to detect the Integration Server Transaction Manager?
Thanks

#webMethods#Integration-Server-and-ESB