Search in sources :

Example 1 with DefaultTransactionService

use of com.sun.jts.CosTransactions.DefaultTransactionService in project Payara by payara.

the class TransactionIIOPInterceptorFactory method createInterceptor.

private void createInterceptor(ORBInitInfo info, Codec codec) {
    if (processEnv.getProcessType().isServer()) {
        try {
            System.setProperty(InterceptorImpl.CLIENT_POLICY_CHECKING, String.valueOf(false));
        } catch (Exception ex) {
            _logger.log(Level.WARNING, "iiop.readproperty_exception", ex);
        }
        initJTSProperties(true);
    } else {
        initJTSProperties(false);
    }
    try {
        // register JTS interceptors
        // first get hold of PICurrent to allocate a slot for JTS service.
        Current pic = (Current) info.resolve_initial_references("PICurrent");
        // allocate a PICurrent slotId for the transaction service.
        int[] slotIds = new int[2];
        slotIds[0] = info.allocate_slot_id();
        slotIds[1] = info.allocate_slot_id();
        interceptor = new InterceptorImpl(pic, codec, slotIds, null);
        // Get the ORB instance on which this interceptor is being
        // initialized
        com.sun.corba.ee.spi.orb.ORB theORB = ((ORBInitInfoExt) info).getORB();
        // Set ORB and TSIdentification: needed for app clients,
        // standalone clients.
        interceptor.setOrb(theORB);
        try {
            DefaultTransactionService jts = new DefaultTransactionService();
            jts.identify_ORB(theORB, tsIdent, jtsProperties);
            interceptor.setTSIdentification(tsIdent);
            // V2-XXX should jts.get_current() be called everytime
            // resolve_initial_references is called ??
            org.omg.CosTransactions.Current transactionCurrent = jts.get_current();
            theORB.getLocalResolver().register(ORBConstants.TRANSACTION_CURRENT_NAME, NullaryFunction.Factory.makeConstant((org.omg.CORBA.Object) transactionCurrent));
            // the JTS PI use this to call the proprietary hooks
            theORB.getLocalResolver().register("TSIdentification", NullaryFunction.Factory.makeConstant((org.omg.CORBA.Object) tsIdent));
            txServiceInitialized = true;
        } catch (Exception ex) {
            throw new INITIALIZE("JTS Exception: " + ex, POASystemException.JTS_INIT_ERROR, CompletionStatus.COMPLETED_MAYBE);
        }
        // Add IOR Interceptor only for OTS tagged components
        TxIORInterceptor iorInterceptor = new TxIORInterceptor(codec, serviceLocator);
        info.add_ior_interceptor(iorInterceptor);
    } catch (Exception e) {
        if (_logger.isLoggable(Level.FINE)) {
            _logger.log(Level.FINE, "Exception registering JTS interceptors", e);
        }
        throw new RuntimeException(e.getMessage());
    }
}
Also used : ORBInitInfoExt(com.sun.corba.ee.spi.legacy.interceptor.ORBInitInfoExt) POASystemException(com.sun.corba.ee.spi.logging.POASystemException) DefaultTransactionService(com.sun.jts.CosTransactions.DefaultTransactionService) Current(org.omg.PortableInterceptor.Current) InterceptorImpl(com.sun.jts.pi.InterceptorImpl)

Aggregations

ORBInitInfoExt (com.sun.corba.ee.spi.legacy.interceptor.ORBInitInfoExt)1 POASystemException (com.sun.corba.ee.spi.logging.POASystemException)1 DefaultTransactionService (com.sun.jts.CosTransactions.DefaultTransactionService)1 InterceptorImpl (com.sun.jts.pi.InterceptorImpl)1 Current (org.omg.PortableInterceptor.Current)1