public static JmxActivityContextHandle encode(ActivityContextHandle ach) { return new JmxActivityContextHandle(ach.getActivityType(), ach.getActivityType() == ActivityType.RA ? ((ResourceAdaptorActivityContextHandle) ach).getResourceAdaptorEntity().getName() : "", handleToString(ach.getActivityHandle()), ach.getActivityHandle().toString()); }
/** * Checks if the entity has activities besides the one passed as parameter (if not null). * @param exceptHandle * @return */ private boolean hasActivities() { try { for (ActivityContextHandle handle : sleeContainer .getActivityContextFactory() .getAllActivityContextsHandles()) { if (handle.getActivityType() == ActivityType.RA) { ResourceAdaptorActivityContextHandle raHandle = (ResourceAdaptorActivityContextHandle) handle; if (raHandle.getResourceAdaptorEntity().equals(this)) { logger.debug("**** AllActivityContextsHandles: "+sleeContainer .getActivityContextFactory() .getAllActivityContextsHandles()); if (logger.isDebugEnabled()) { logger.debug("RA entity "+name+" has (at least) activity "+handle.getActivityHandle()); } return true; } } } } catch (Throwable e) { logger.error(e.getMessage(), e); } return false; }
for (ActivityContextHandle ach : acf .getAllActivityContextsHandles(ActivityType.SERVICE)) { logger.info("Waiting for " + ach.getActivityHandle() + " to stop..."); noActivities = false;
private void queryLiveness(ActivityContextHandle ach,long currentTime) { if (ach.getActivityType() != ActivityType.RA) return; if(logger.isDebugEnabled()) logger .debug("Periodic Liveliness Task is on the run, processing AC "+ach); ActivityContextImpl ac = acFactory.getActivityContext(ach); if(ac == null) { return; } if ((currentTime - ac.getLastAccessTime()) < acFactory.getConfiguration().getMaxTimeIdleInMs()) { // This one has been accessed in near past, so we dont // want to query it return; } final ResourceAdaptorActivityContextHandle raach = (ResourceAdaptorActivityContextHandle) ach; final ResourceAdaptorEntity raEntity = raach.getResourceAdaptorEntity(); if (logger.isDebugEnabled()) { logger.debug("Invoking ra entity "+raEntity.getName()+" queryLiveness() for activity handle "+ach.getActivityHandle()); } raEntity.getResourceAdaptorObject().queryLiveness( ach.getActivityHandle()); }
public void activityUnreferenced() { if (logger.isDebugEnabled()) { logger.debug("Activity Context with handle " + activityContextHandle + " is now unreferenced"); } switch (activityContextHandle.getActivityType()) { case RA: // external activity, notify RA that the activity is unreferenced ((ResourceAdaptorActivityContextHandle) activityContextHandle) .getResourceAdaptorEntity() .getResourceAdaptorObject() .activityUnreferenced( activityContextHandle.getActivityHandle()); break; case NULL: // null activity unreferenced, end it ActivityContext ac = sleeContainer.getActivityContextFactory() .getActivityContext(activityContextHandle); if (ac != null) ac.endActivity(); break; default: // do nothing break; } }
public void activityEnded() { if (logger.isDebugEnabled()) { logger.debug("Activity ended with handle " + getActivityContextHandle()); } // remove references to this AC in timer and ac naming facility removeNamingBindings(); removeFromTimers(); // Spec 7.3.4.1 Step 10 final int activityFlags = activityContextHandle.getActivityType() == ActivityType.RA ? getActivityFlags() : -1; TransactionContext txContext = sleeContainer.getTransactionManager() .getTransactionContext(); removeFromCache(txContext); factory.removeActivityContext(this); if (activityContextHandle.getActivityType() == ActivityType.RA) { // external activity, notify RA that the activity has ended ((ResourceAdaptorActivityContextHandle) activityContextHandle) .getResourceAdaptorEntity().activityEnded( activityContextHandle.getActivityHandle(), activityFlags); } else if (activityContextHandle.getActivityType() == ActivityType.SERVICE) { sleeContainer.getServiceManagement().activityEnded( (ServiceActivityHandle) activityContextHandle .getActivityHandle()); } }