Hi all,

I use ServiceMix 4.3.1 with the felix framework.
I would like to use the JTA TransactionManager from Geronimo with hibernate.

Regarding to the documentation, it seems that we have to redefine our own 
TransactionManagerLookup class in order to tell to hibernate how to get the 
right TransactionManager.
See the documentation here : 
https://cwiki.apache.org/GMOxDOC10/jboss-to-geronimo-hibernate-migration.html

I find a simple sample that someone wrote on the web (see below), but it uses 
the eclipse DefaultClassLoader which I guess isn't the same that the felix 
class loader.

Does someone have any idea of how to adapt the sample with the felix framework ?

Here is the class :

import java.util.Properties;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader;
import org.hibernate.transaction.TransactionManagerLookup;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.util.tracker.ServiceTracker;
public class OsgiTransactionManagerLookup implements TransactionManagerLookup {
    private static TransactionManager transactionManager;

    @Override
    public TransactionManager getTransactionManager(Properties props) {
        try {
            if (transactionManager == null) {
                DefaultClassLoader classLoader = (DefaultClassLoader) 
this.getClass().getClassLoader();
                BundleContext context = 
classLoader.getBundle().getBundleContext();
                ServiceTracker serviceTracker = new ServiceTracker(context, 
context.createFilter("(objectClass=javax.transaction.TransactionManager)"), 
null);
                serviceTracker.open();
                transactionManager = (TransactionManager) 
serviceTracker.getService();
            }
        } catch (InvalidSyntaxException e) {
            throw new IllegalStateException("No 
javax.transaction.TransactionManager found as OSGi service.", e);
        }

        return transactionManager;
    }
    @Override
    public String getUserTransactionName() {
                return "java:comp/UserTransaction";
                }
    @Override
    public Object getTransactionIdentifier(Transaction transaction) {
        return transaction;
    }
}


Arnaud Deprez
Analyst-Programmer
Acquiring Back-Office
+32 2 727 72 09
arnaud.dep...@atos.net<http://intranet.atosworldline.com/Region1-fr/firstname.lastn...@atos.net>
Chaussee de Haecht 1442 Haachtsesteenweg
1130 Brussels
Belgium
atosworldline.be<http://atosworldline.be/>
[cid:image002.gif@01CD1EE9.5BAC1570]
P please don't print unless you really need to


________________________________

Atos Worldline SA/NV - Chaussee de Haecht 1442 Haachtsesteenweg
- 1130 Brussels - Belgium
RPM-RPR Bruxelles-Brussel - TVA-BTW BE 0418.547.872
Bankrekening-Compte Bancaire-Bank Account 310-0269424-44
BIC BBRUBEBB - IBAN BE55 3100 2694 2444

"The information contained in this e-mail and any attachment thereto is 
confidential and may contain information which is protected by intellectual 
property rights.
This information is intended for the exclusive use of the recipient(s) named 
above.
This e-mail does not constitute any binding relationship or offer toward any of 
the addressees.
If you are not one of the addressees , one of their employees or a proxy holder 
entitled to hand over this message to the addressee(s), any use of the 
information contained herein (e.g. reproduction, divulgation, communication or 
distribution,...) is prohibited.
If you have received this message in error, please notify the sender and 
destroy it immediately after.
The integrity and security of this message cannot be guaranteed and it may be 
subject to data corruption, interception and unauthorized amendment, for which 
we accept no liability."

Reply via email to