Search in sources :

Example 6 with Work

use of javax.resource.spi.work.Work in project spring-framework by spring-projects.

the class WorkManagerTaskExecutor method execute.

@Override
public void execute(Runnable task, long startTimeout) {
    Assert.state(this.workManager != null, "No WorkManager specified");
    Work work = new DelegatingWork(this.taskDecorator != null ? this.taskDecorator.decorate(task) : task);
    try {
        if (this.blockUntilCompleted) {
            if (startTimeout != TIMEOUT_INDEFINITE || this.workListener != null) {
                this.workManager.doWork(work, startTimeout, null, this.workListener);
            } else {
                this.workManager.doWork(work);
            }
        } else if (this.blockUntilStarted) {
            if (startTimeout != TIMEOUT_INDEFINITE || this.workListener != null) {
                this.workManager.startWork(work, startTimeout, null, this.workListener);
            } else {
                this.workManager.startWork(work);
            }
        } else {
            if (startTimeout != TIMEOUT_INDEFINITE || this.workListener != null) {
                this.workManager.scheduleWork(work, startTimeout, null, this.workListener);
            } else {
                this.workManager.scheduleWork(work);
            }
        }
    } catch (WorkRejectedException ex) {
        if (WorkException.START_TIMED_OUT.equals(ex.getErrorCode())) {
            throw new TaskTimeoutException("JCA WorkManager rejected task because of timeout: " + task, ex);
        } else {
            throw new TaskRejectedException("JCA WorkManager rejected task: " + task, ex);
        }
    } catch (WorkException ex) {
        throw new SchedulingException("Could not schedule task on JCA WorkManager", ex);
    }
}
Also used : TaskTimeoutException(org.springframework.core.task.TaskTimeoutException) TaskRejectedException(org.springframework.core.task.TaskRejectedException) WorkRejectedException(javax.resource.spi.work.WorkRejectedException) WorkException(javax.resource.spi.work.WorkException) Work(javax.resource.spi.work.Work) SchedulingException(org.springframework.scheduling.SchedulingException)

Example 7 with Work

use of javax.resource.spi.work.Work in project narayana by jbosstm.

the class TxWorkManager method addWork.

/*
	 * Although we allow multiple units of work per transaction, currently
	 * JCA only allows one. Might not be worth the hassle of maintaining this
	 * support.
	 */
/**
 * Add the specified work unit to the specified transaction.
 *
 * @param work The work to associate with the transaction.
 * @param tx The transaction to have associated with the work.
 *
 * @throws WorkCompletedException thrown if there is already work
 * associated with the transaction.
 */
public static void addWork(Work work, Transaction tx) throws WorkCompletedException {
    Stack<Work> workers;
    synchronized (_transactions) {
        workers = _transactions.get(tx);
        if (workers == null) {
            workers = new Stack<Work>();
            _transactions.put(tx, workers);
        } else
            throw new WorkCompletedException(jtaxLogger.i18NLogger.get_jtax_transaction_jts_jca_busy(), WorkException.TX_CONCURRENT_WORK_DISALLOWED);
    }
    synchronized (workers) {
        workers.push(work);
    }
}
Also used : Work(javax.resource.spi.work.Work) WorkCompletedException(javax.resource.spi.work.WorkCompletedException)

Example 8 with Work

use of javax.resource.spi.work.Work in project wildfly by wildfly.

the class MultipleResourceAdapter2 method start.

/**
 * This is called when a resource adapter instance is bootstrapped.
 *
 * @param ctx A bootstrap context containing references
 * @throws ResourceAdapterInternalException indicates bootstrap failure.
 */
public void start(BootstrapContext ctx) throws ResourceAdapterInternalException {
    log.trace("start()");
    if (ctx instanceof NamedBootstrapContext) {
        NamedBootstrapContext nc = (NamedBootstrapContext) ctx;
        setBootstrapContextName(nc.getName());
        log.trace("Bootstrap-context:" + nc.getName());
    }
    WorkManager wm = ctx.getWorkManager();
    if (wm instanceof NamedWorkManager) {
        NamedWorkManager nw = (NamedWorkManager) wm;
        setWorkManagerName(nw.getName());
        log.trace("Work-manager:" + nw.getName());
    }
    Work myWork1 = new MultipleWork();
    Work myWork2 = new MultipleWork();
    Work myWork3 = new MultipleWork();
    try {
        wm.doWork(myWork1);
        wm.scheduleWork(myWork2);
        wm.startWork(myWork3);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : NamedWorkManager(org.jboss.as.connector.services.workmanager.NamedWorkManager) WorkManager(javax.resource.spi.work.WorkManager) NamedWorkManager(org.jboss.as.connector.services.workmanager.NamedWorkManager) NamedBootstrapContext(org.jboss.as.connector.services.bootstrap.NamedBootstrapContext) Work(javax.resource.spi.work.Work) ResourceException(javax.resource.ResourceException) ResourceAdapterInternalException(javax.resource.spi.ResourceAdapterInternalException)

Aggregations

Work (javax.resource.spi.work.Work)8 ResourceException (javax.resource.ResourceException)2 WorkCompletedException (javax.resource.spi.work.WorkCompletedException)2 WorkException (javax.resource.spi.work.WorkException)2 IOException (java.io.IOException)1 ClosedWatchServiceException (java.nio.file.ClosedWatchServiceException)1 Semaphore (java.util.concurrent.Semaphore)1 ResourceAdapterInternalException (javax.resource.spi.ResourceAdapterInternalException)1 MessageEndpoint (javax.resource.spi.endpoint.MessageEndpoint)1 WorkManager (javax.resource.spi.work.WorkManager)1 WorkRejectedException (javax.resource.spi.work.WorkRejectedException)1 MDBActivationSpec (org.apache.cxf.jca.inbound.MDBActivationSpec)1 MDBActivationWork (org.apache.cxf.jca.inbound.MDBActivationWork)1 NamedBootstrapContext (org.jboss.as.connector.services.bootstrap.NamedBootstrapContext)1 NamedWorkManager (org.jboss.as.connector.services.workmanager.NamedWorkManager)1 TelnetListener (org.jboss.as.test.integration.ejb.mdb.dynamic.api.TelnetListener)1 TelnetServer (org.jboss.as.test.integration.ejb.mdb.dynamic.impl.TelnetServer)1 Test (org.junit.Test)1 TaskRejectedException (org.springframework.core.task.TaskRejectedException)1 TaskTimeoutException (org.springframework.core.task.TaskTimeoutException)1