import com.atomikos.hazelcast.AtomikosHazelcastInstanceFactory;
import com.atomikos.icatch.jta.UserTransactionManager;
...
HazelcastInstance hazelcastInstance = ... //your regular Hazelcast configuration setup
HazelcastInstance atomikosHazelcastInstance = AtomikosHazelcastInstanceFactory.createAtomikosInstance("my hazelcast instance name", hazelcastInstance);
import com.atomikos.hazelcast4.AtomikosHazelcastInstanceFactory;
import com.atomikos.icatch.jta.UserTransactionManager;
...
HazelcastInstance hazelcastInstance = ... //your regular Hazelcast configuration setup
HazelcastInstance atomikosHazelcastInstance = AtomikosHazelcastInstanceFactory.createAtomikosInstance("my hazelcast instance name", hazelcastInstance);
UserTransactionManager utm = new UserTransactionManager();
utm.begin();
TransactionContext ctx = atomikosHazelcastInstance.newTransactionContext(); //this will not start a new context but rather enlist in the JTA/XA transaction
final TransactionalMap<Object, Object> map = ctx.getMap("map");
map.put("key", "value");
utm.commit();
Instead of calling begin() and commit() on the UserTransactionManager, you can also use Spring's @Transactional annotation. That also works.