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

jakarta.resource.spi.BootstrapContext Maven / Gradle / Ivy

/*
 * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package jakarta.resource.spi;

import java.util.Timer;
import jakarta.resource.spi.work.WorkManager;
import jakarta.resource.spi.work.WorkContext;
import jakarta.transaction.TransactionSynchronizationRegistry;

/**
 * This provides a mechanism to pass a bootstrap context to a resource adapter
 * instance when it is bootstrapped. That is, when 
 * (start(BootstrapContext)) method on the 
 * ResourceAdapter class is invoked. The bootstrap
 * context contains references to useful facilities that could be used by the
 * resource adapter instance.
 *
 * @author  Ram Jeyaraman, Sivakumar Thyagarajan
 */
public interface BootstrapContext {
    /**
     * Provides a handle to a WorkManager instance. The
     * WorkManager instance could be used by a resource adapter to
     * do its work by submitting Work instances for execution. 
     *
     * @return a WorkManager instance.
     */
    WorkManager getWorkManager();

    /**
     * Provides a handle to a XATerminator instance. The
     * XATerminator instance could be used by a resource adapter 
     * to flow-in transaction completion and crash recovery calls from an EIS.
     *
     * @return a XATerminator instance.
     */
    XATerminator getXATerminator();

    /**
     * Creates a new java.util.Timer instance. The
     * Timer instance could be used to perform periodic 
     * Work executions or other tasks.
     *
     * @throws UnavailableException indicates that a 
     * Timer instance is not available. The 
     * request may be retried later.
     *
     * @return a new Timer instance.
     */
    Timer createTimer() throws UnavailableException;

    /**
     * A resource adapter can check an application server's support 
     * for a particular WorkContext type through this method. 
     * This mechanism enables a resource adapter developer to
     * dynamically change the WorkContexts submitted with a Work instance 
     * based on the support provided by the application server.
     *
     * The application server must employ an exact type equality check (that is
     * java.lang.Class.equals(java.lang.Class) check) in
     * this method, to check if it supports the WorkContext type provided
     * by the resource adapter. This method must be idempotent, that is all 
     * calls to this method by a resource adapter for a particular 
     * WorkContext type must return the same boolean value 
     * throughout the lifecycle of that resource adapter instance.
     * 
     * @param workContextClass The WorkContext type that is tested for
     * support by the application server.
     *     
     * @return true if the workContextClass is supported
     * by the application server. false if the workContextClass
     * is unsupported or unknown to the application server.
     *
     * @since 1.6
     */

    boolean isContextSupported(
            Class workContextClass);


    /**
     * Provides a handle to a TransactionSynchronization instance. The
     * TransactionSynchronizationRegistry instance could be used by a 
     * resource adapter to register synchronization objects, get transaction state and
     * status etc. This interface is implemented by the application server by a 
     * stateless service object. The same object can be used by any number of 
     * resource adapter objects with thread safety. 
     *
     * @return a TransactionSynchronizationRegistry instance.
     * @since 1.6
     */
    TransactionSynchronizationRegistry getTransactionSynchronizationRegistry();    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy