Hi Jens,
Thanks for the help again!
I set the scope to global on the server and removed the manual lock from my code. Unfortunately I have an other exception:
09:16:41,032 INFO [stdout] (http--127.0.0.1-8080-1) [warning 2013/09/11 09:16:41.031 BST <http--127.0.0.1-8080-1> tid=0x59] Distributed region /THROTTLING is being used in a client-initiated transaction. The transaction will only affect servers and this client. To keep from seeing this message use 'local' scope in client regions used in transactions.
09:16:41,191 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean] (http--127.0.0.1-8080-1) Creating Service {urn:vhorvath:throttling:simulation:wsdl:get-customer-by-id-v2}GetCustomerById from WSDL: vfs:/D:/utils/cygwin/home/Viktor/content/sim-service-get-customer-by-id-v2-1.1-SNAPSHOT.jar/wsdl/GetCustomerById.wsdl
09:16:45,702 WARN [com.arjuna.ats.arjuna] (http--127.0.0.1-8080-1) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffffc0a80017:67e391ec:5230260a:c, TXStateProxyImpl@7829970 txId:TXId: Viktor-PC(:loner):0:80f6170c:1 realDeal:class com.gemstone.gemfire.internal.cache.tx.ClientTXStateStub@31392160 target node: null isJTA:true >: com.gemstone.gemfire.cache.client.NoAvailableServersException
at com.gemstone.gemfire.cache.client.internal.pooling.ConnectionManagerImpl.borrowConnection(ConnectionManagerImpl.java:246) [gemfire.jar:]
at com.gemstone.gemfire.cache.client.internal.OpExecutorImpl.getNextOpServerLocation(OpExecutorImpl.java:310) [gemfire.jar:]
09:16:45,897 ERROR [org.jboss.ejb3.invocation] (http--127.0.0.1-8080-1) JBAS014134: EJB Invocation failed on component GetCustomerByIdService_V2 for method public vhorvath.throttling.simulation.wsdl.get_customer_by_id_v2.GetByIdResponse org.vhorvath.valogato.simulation.wsdl.get_customer_by_id_v2.GetCustomerByIdService_V2.getById(vhorvath.throttling.simulation.wsdl.get_customer_by_id_v2.GetByIdRequest) throws vhorvath.throttling.simulation.wsdl.get_customer_by_id_v2.GetByIdFault_Exception: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:115) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:95) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:232) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
Caused by: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1177)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:117)
Likely the problem is that I am not an experienced Gemfire user so it is possible that my configuration is not correct. What I want to achieve is to use a client-server communication. I started a locator and 2 servers:
- gemfire.bat start-locator -properties=../config/gemfire.properties -port=41111 -server=true
- cacheserver.bat start -J-Xmx1000m cache-xml-file=../config/cache_node0.xml locators=localhost[41111] -dir=../server0 -J-DgemfirePropertyFile=../config/gemfire.properties -server-port=40404 mcast-port=10338
- cacheserver.bat start -J-Xmx1000m cache-xml-file=../config/cache_node1.xml locators=localhost[41111] -dir=../server1 -J-DgemfirePropertyFile=../config/gemfire.properties -server-port=40405 mcast-port=10338
I want to add and get data to the cache from a client which can run on different server. I need to lock the specific key before adding a value and unlock it after that.
Is there any good tutorial or sample project that is similar to my scenario?
So I can use an automatic lock function by using global scope. Can you tell me how I could use manual lock?
Thank you very much!
V.