WebsocketTxManager.java
- /*
- * The coLAB project
- * Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
- *
- * Licensed under the MIT License
- */
- package ch.colabproject.colab.api.controller;
- import java.io.Serializable;
- import javax.annotation.PostConstruct;
- import javax.annotation.Resource;
- import javax.inject.Inject;
- import javax.transaction.TransactionScoped;
- import javax.transaction.TransactionSynchronizationRegistry;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- /**
- * To synchronize websockets with JTA session
- *
- * @author maxence
- */
- @TransactionScoped
- public class WebsocketTxManager implements Serializable {
- private static final long serialVersionUID = 1L;
- /** logger */
- private static final Logger logger = LoggerFactory.getLogger(WebsocketTxManager.class);
- /**
- * Tx sync registry
- */
- @Resource
- private transient TransactionSynchronizationRegistry jtaSyncRegistry;
- /**
- * The bag
- */
- @Inject
- private EntityGatheringBagForPropagation bean;
- /**
- * make sure bean exists
- */
- public void touch() {
- logger.trace("Touch WsTxManager");
- }
- /**
- * Called each time a new transaction is created.
- */
- @PostConstruct
- public void construct() {
- logger.trace("NEW TRANSACTION BEANLIFE CYCLE");
- if (jtaSyncRegistry != null) {
- WebsocketTxSync synchronizer = bean.getSynchronizer();
- if (synchronizer == null) {
- logger.trace("Create Sync");
- synchronizer = new WebsocketTxSync(bean);
- bean.setSynchronizer(synchronizer);
- jtaSyncRegistry.registerInterposedSynchronization(synchronizer);
- } else {
- logger.trace("Synchronizer already registered");
- }
- } else {
- logger.error(" * NULL -> NO-CONTEXT");
- }
- }
- }