Package org.jboss.ejb3.embedded.resource

Source Code of org.jboss.ejb3.embedded.resource.JBossWorkManager

/*     */ package org.jboss.ejb3.embedded.resource;
/*     */
/*     */ import javax.management.ObjectName;
/*     */ import javax.resource.spi.work.ExecutionContext;
/*     */ import javax.resource.spi.work.Work;
/*     */ import javax.resource.spi.work.WorkException;
/*     */ import javax.resource.spi.work.WorkListener;
/*     */ import javax.resource.spi.work.WorkManager;
/*     */ import javax.transaction.xa.Xid;
/*     */ import org.jboss.logging.Logger;
/*     */ import org.jboss.tm.JBossXATerminator;
/*     */ import org.jboss.util.threadpool.BasicThreadPool;
/*     */ import org.jboss.util.threadpool.ThreadPool;
/*     */
/*     */ public class JBossWorkManager
/*     */   implements WorkManager
/*     */ {
/*  43 */   private static final Logger log = Logger.getLogger(Ejb3DeploymentInfo.class);
/*     */
/*  45 */   private ThreadPool threadPool = new BasicThreadPool();
/*     */   private JBossXATerminator xaTerminator;
/*     */   private ObjectName xaTerminatorName;
/*     */
/*     */   public ObjectName getXATerminatorName()
/*     */   {
/*  55 */     return this.xaTerminatorName;
/*     */   }
/*     */
/*     */   public void setXATerminatorName(ObjectName xaTerminatorName)
/*     */   {
/*  60 */     this.xaTerminatorName = xaTerminatorName;
/*     */   }
/*     */
/*     */   public WorkManager getInstance()
/*     */   {
/*  65 */     return this;
/*     */   }
/*     */
/*     */   public void doWork(Work work, long startTimeout, ExecutionContext ctx, WorkListener listener) throws WorkException
/*     */   {
/*  70 */     if (ctx == null)
/*  71 */       ctx = new ExecutionContext();
/*  72 */     WorkWrapper wrapper = new WorkWrapper(this, work, 2, startTimeout, ctx, listener);
/*  73 */     importWork(wrapper);
/*  74 */     executeWork(wrapper);
/*  75 */     if (wrapper.getWorkException() != null)
/*  76 */       throw wrapper.getWorkException();
/*     */   }
/*     */
/*     */   public void doWork(Work work) throws WorkException
/*     */   {
/*  81 */     doWork(work, 9223372036854775807L, null, null);
/*     */   }
/*     */
/*     */   public long startWork(Work work, long startTimeout, ExecutionContext ctx, WorkListener listener) throws WorkException
/*     */   {
/*  86 */     if (ctx == null)
/*  87 */       ctx = new ExecutionContext();
/*  88 */     WorkWrapper wrapper = new WorkWrapper(this, work, 1, startTimeout, ctx, listener);
/*  89 */     importWork(wrapper);
/*  90 */     executeWork(wrapper);
/*  91 */     if (wrapper.getWorkException() != null)
/*  92 */       throw wrapper.getWorkException();
/*  93 */     return wrapper.getBlockedElapsed();
/*     */   }
/*     */
/*     */   public long startWork(Work work) throws WorkException
/*     */   {
/*  98 */     return startWork(work, 9223372036854775807L, null, null);
/*     */   }
/*     */
/*     */   public void scheduleWork(Work work, long startTimeout, ExecutionContext ctx, WorkListener listener) throws WorkException
/*     */   {
/* 103 */     if (ctx == null)
/* 104 */       ctx = new ExecutionContext();
/* 105 */     WorkWrapper wrapper = new WorkWrapper(this, work, 0, startTimeout, ctx, listener);
/* 106 */     importWork(wrapper);
/* 107 */     executeWork(wrapper);
/* 108 */     if (wrapper.getWorkException() != null)
/* 109 */       throw wrapper.getWorkException();
/*     */   }
/*     */
/*     */   public void scheduleWork(Work work) throws WorkException
/*     */   {
/* 114 */     scheduleWork(work, 9223372036854775807L, null, null);
/*     */   }
/*     */
/*     */   protected void importWork(WorkWrapper wrapper)
/*     */     throws WorkException
/*     */   {
/* 125 */     ExecutionContext ctx = wrapper.getExecutionContext();
/* 126 */     if (ctx != null)
/*     */     {
/* 128 */       Xid xid = ctx.getXid();
/* 129 */       if (xid != null)
/*     */       {
/* 131 */         long timeout = ctx.getTransactionTimeout();
/* 132 */         this.xaTerminator.registerWork(wrapper.getWork(), xid, timeout);
/*     */       }
/*     */     }
/*     */   }
/*     */
/*     */   protected void executeWork(WorkWrapper wrapper)
/*     */     throws WorkException
/*     */   {
/* 145 */     this.threadPool.runTaskWrapper(wrapper);
/*     */   }
/*     */
/*     */   protected void startWork(WorkWrapper wrapper)
/*     */     throws WorkException
/*     */   {
/* 156 */     ExecutionContext ctx = wrapper.getExecutionContext();
/* 157 */     if (ctx != null)
/*     */     {
/* 159 */       Xid xid = ctx.getXid();
/* 160 */       if (xid != null)
/*     */       {
/* 162 */         this.xaTerminator.startWork(wrapper.getWork(), xid);
/*     */       }
/*     */     }
/*     */   }
/*     */
/*     */   protected void endWork(WorkWrapper wrapper)
/*     */   {
/* 175 */     ExecutionContext ctx = wrapper.getExecutionContext();
/* 176 */     if (ctx != null)
/*     */     {
/* 178 */       Xid xid = ctx.getXid();
/* 179 */       if (xid != null)
/*     */       {
/* 181 */         this.xaTerminator.endWork(wrapper.getWork(), xid);
/*     */       }
/*     */     }
/*     */   }
/*     */
/*     */   protected void cancelWork(WorkWrapper wrapper)
/*     */   {
/* 194 */     ExecutionContext ctx = wrapper.getExecutionContext();
/* 195 */     if (ctx != null)
/*     */     {
/* 197 */       Xid xid = ctx.getXid();
/* 198 */       if (xid != null)
/*     */       {
/* 200 */         this.xaTerminator.cancelWork(wrapper.getWork(), xid);
/*     */       }
/*     */     }
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/jboss-embedded-all.jar
* Qualified Name:     org.jboss.ejb3.embedded.resource.JBossWorkManager
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.jboss.ejb3.embedded.resource.JBossWorkManager

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.