All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.atomikos.transactions.internal.AtomikosActivator Maven / Gradle / Ivy

There is a newer version: 6.0.0
Show newest version
/**
 * Copyright (C) 2000-2016 Atomikos 
 *
 * LICENSE CONDITIONS
 *
 * See http://www.atomikos.com/Main/WhichLicenseApplies for details.
 */

package com.atomikos.transactions.internal;

import java.util.Dictionary;
import java.util.Hashtable;

import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

import com.atomikos.icatch.jta.UserTransactionImp;
import com.atomikos.icatch.jta.UserTransactionManager;
import com.atomikos.logging.Logger;
import com.atomikos.logging.LoggerFactory;

/**
 * @author pascalleclercq When transactions-osgi bundle starts It register theses Impl in the service registry.
 */
public class AtomikosActivator implements BundleActivator {
	private static final Logger LOGGER = LoggerFactory.createLogger(AtomikosActivator.class);

	private UserTransactionManager utm;
	private ServiceRegistration utmRegistration;
	private ServiceRegistration userTransactionRegistration;
	private UserTransactionImp userTransaction;

	public void start(BundleContext context) throws Exception {
		try {
			// TransactionManager
			utm = new UserTransactionManager();
			utm.init();
			Dictionary tmProps = new Hashtable();
			tmProps.put("osgi.jndi.service.name", "AtomikosV4");
			utmRegistration = context.registerService(TransactionManager.class.getName(), utm, tmProps);
			// UserTransaction
			userTransaction = new UserTransactionImp();
			Dictionary utmProps = new Hashtable();
			utmProps.put("osgi.jndi.service.name", "AtomikosV4");
			userTransactionRegistration = context.registerService(UserTransaction.class.getName(), userTransaction, utmProps);
		} catch (Exception e) {
			LOGGER.logFatal(e.getMessage(), e);
		}
	}

	public void stop(BundleContext context) throws Exception {
		try {
			if (utmRegistration != null) {
				utmRegistration.unregister();
				utmRegistration = null;
			}

			if (utm != null) {
				utm.close();
			}
			if (userTransactionRegistration != null) {
				userTransactionRegistration.unregister();
				userTransactionRegistration = null;
			}

		} catch (Exception e) {
			LOGGER.logError(e.getMessage(), e);
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy