Examples of XAResourceProducer


Examples of bitronix.tm.resource.common.XAResourceProducer

        int errorCount = 0;

        for (Map.Entry<String, List<PropertyPair>> entry : entries.entrySet()) {
            String uniqueName = entry.getKey();
            List<PropertyPair> propertyPairs = entry.getValue();
            XAResourceProducer producer = buildXAResourceProducer(uniqueName, propertyPairs);

            if (ResourceRegistrar.get(producer.getUniqueName()) != null) {
                if (log.isDebugEnabled()) { log.debug("resource already registered, skipping it:" + producer.getUniqueName()); }
                continue;
            }

            if (log.isDebugEnabled()) { log.debug("creating resource " + producer); }
            try {
                producer.init();
            } catch (ResourceConfigurationException ex) {
                log.warn("unable to create resource with unique name " + producer.getUniqueName(), ex);
                producer.close();
                errorCount++;
            }

            resourcesByUniqueName.put(producer.getUniqueName(), producer);
        }

        return errorCount;
    }
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

     * @throws ResourceConfigurationException if the {@link XAResourceProducer} cannot be built.
     */
    private XAResourceProducer buildXAResourceProducer(String configuredName, List<PropertyPair> propertyPairs) throws ResourceConfigurationException {
        String lastPropertyName = "className";
        try {
            XAResourceProducer producer = createBean(configuredName, propertyPairs);

            for (PropertyPair propertyPair : propertyPairs) {
                lastPropertyName = propertyPair.getName();
                String propertyValue = propertyPair.getValue();

                PropertyUtils.setProperty(producer, lastPropertyName, propertyValue);
            }
            if (producer.getUniqueName() == null)
                throw new ResourceConfigurationException("missing mandatory property [uniqueName] of resource [" + configuredName + "] in resources configuration file");

            return producer;
        } catch (ResourceConfigurationException ex) {
            throw ex;
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

     */
    private XAResourceProducer createBean(String configuredName, List<PropertyPair> propertyPairs) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        for (PropertyPair propertyPair : propertyPairs) {
            if (propertyPair.getName().equals("className")) {
                String className = propertyPair.getValue();
                XAResourceProducer producer = instantiate(className);
                if (producer == null)
                    throw new ResourceConfigurationException("property [className] " +
                            "of resource [" + configuredName + "] in resources configuration file " +
                            "must be the name of a class implementing either javax.sql.XADataSource or javax.jms.XAConnectionFactory");
                return producer;
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

     */
    private void recoverAllResources() {
        // a cloned registeredResources Map must be iterated as the original one can be modified in the loop
        for (Map.Entry<String, XAResourceProducer> entry : new HashMap<String, XAResourceProducer>(registeredResources).entrySet()) {
            String uniqueName = entry.getKey();
            XAResourceProducer producer = entry.getValue();

            try {
                if (log.isDebugEnabled()) { log.debug("performing recovery on " + uniqueName); }
                Set<BitronixXid> xids = recover(producer);
                if (log.isDebugEnabled()) { log.debug("recovered " + xids.size() + " XID(s) from resource " + uniqueName); }
                recoveredXidSets.put(uniqueName, xids);
                producer.setFailed(false);
            } catch (XAException ex) {
                producer.setFailed(true);
                registeredResources.remove(uniqueName);
                String extraErrorDetails = TransactionManagerServices.getExceptionAnalyzer().extractExtraXAExceptionDetails(ex);
                log.warn("error running recovery on resource '" + uniqueName + "', resource marked as failed (background recoverer will retry recovery)" +
                        " (error=" + Decoder.decodeXAExceptionErrorCode(ex) + ")" + (extraErrorDetails == null ? "" : ", extra error=" + extraErrorDetails), ex);
            } catch (Exception ex) {
                producer.setFailed(true);
                registeredResources.remove(uniqueName);
                log.warn("error running recovery on resource '" + uniqueName + "', resource marked as failed (background recoverer will retry recovery)", ex);
            }
        }
    }
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

     * @param xid the {@link Xid} to commit.
     * @return true when commit was successful.
     * @throws RecoveryException if an error preventing recovery happened.
     */
    private boolean commit(String uniqueName, Xid xid) throws RecoveryException {
        XAResourceProducer producer = registeredResources.get(uniqueName);
        try {
            XAResourceHolderState xaResourceHolderState = producer.startRecovery();
            return RecoveryHelper.commit(xaResourceHolderState, xid);
        } finally {
            producer.endRecovery();
        }
    }
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

     * @param xid the {@link Xid} to rollback.
     * @return true when rollback was successful.
     * @throws RecoveryException if an error preventing recovery happened.
     */
    private boolean rollback(String uniqueName, Xid xid) throws RecoveryException {
        XAResourceProducer producer = registeredResources.get(uniqueName);
        if (producer == null) {
            if (log.isDebugEnabled()) { log.debug("resource " + uniqueName + " has not recovered, skipping rollback"); }
            return false;
        }

        try {
            XAResourceHolderState xaResourceHolderState = producer.startRecovery();
            return RecoveryHelper.rollback(xaResourceHolderState, xid);
        } finally {
            producer.endRecovery();
        }
    }
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

    ExecutorService executorService;
    XAResourceProducer producer;

    private XAResourceProducer createMockProducer(String uniqueName) throws RecoveryException {
        XAResourceProducer producer;
        producer = mock(XAResourceProducer.class);
        when(producer.getUniqueName()).thenReturn(uniqueName);

        ResourceBean resourceBean = mock(ResourceBean.class);
        when(resourceBean.getUniqueName()).thenReturn(uniqueName);

        XAResourceHolder resourceHolder = mock(XAResourceHolder.class);
        when(resourceHolder.getResourceBean()).thenReturn(resourceBean);

        XAResource xaResource = mock(XAResource.class);
        when(resourceHolder.getXAResource()).thenReturn(xaResource);

        when(producer.startRecovery()).thenReturn(new XAResourceHolderState(resourceHolder, resourceBean));
        return producer;
    }
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

        ResourceRegistrar.register(createMockProducer("äöü"));
    }

    @Test
    public void testNonRecoverableProducersAreNotRegistered() throws Exception {
        final XAResourceProducer producer = createMockProducer("non-recoverable");
        when(producer.startRecovery()).thenThrow(new RecoveryException("recovery not possible"));

        try {
            ResourceRegistrar.register(producer);
            fail("expecting RecoveryException");
        } catch (RecoveryException e) {
View Full Code Here

Examples of bitronix.tm.resource.common.XAResourceProducer

    }

    @Test
    public void testFindXAResourceHolderDelegatesAndDoesNotCallUninitialized() throws Exception {
        final XAResource resource = mock(XAResource.class);
        final XAResourceProducer uninitializedProducer = createMockProducer("uninitialized");

        CountDownLatch border = new CountDownLatch(1);
        Future future = registerBlockingProducer(uninitializedProducer, border);

        ResourceRegistrar.findXAResourceHolder(resource);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.