001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.ejb.txtimer;
023:
024: // $Id: EJBTimerService.java 57209 2006-09-26 12:21:57Z dimitris@jboss.org $
025:
026: import javax.ejb.TimerService;
027: import javax.management.ObjectName;
028:
029: import org.jboss.ejb.Container;
030: import org.jboss.mx.util.ObjectNameFactory;
031:
032: /**
033: * A service that implements this interface provides a Tx aware EJBTimerService.
034: *
035: * @author Thomas.Diesler@jboss.org
036: * @author Dimitris.Andreadis@jboss.org
037: * @version $Revision: 57209 $
038: * @since 07-Apr-2004
039: */
040: public interface EJBTimerService {
041: /**
042: * The default object name
043: */
044: static final ObjectName OBJECT_NAME = ObjectNameFactory
045: .create("jboss.ejb:service=EJBTimerService");
046:
047: /**
048: * Create a TimerService for a given containerId/pKey (TimedObjectId) that lives in a JBoss Container.
049: * The TimedObjectInvoker is constructed from the invokerClassName.
050: *
051: * @param containerId The string identifier for a class of TimedObjects
052: * @param pKey The primary key for an instance of a TimedObject, may be null
053: * @param container The Container that is associated with the TimerService
054: * @return the TimerService
055: */
056: TimerService createTimerService(ObjectName containerId,
057: Object pKey, Container container)
058: throws IllegalStateException;
059:
060: /**
061: * Create a TimerService for a given containerId/pKey (TimedObjectId) that is invoked through the given invoker.
062: *
063: * @param containerId The string identifier for a class of TimedObjects
064: * @param pKey The primary key for an instance of a TimedObject, may be null
065: * @param invoker The TimedObjectInvoker
066: * @return the TimerService
067: */
068: TimerService createTimerService(ObjectName containerId,
069: Object pKey, TimedObjectInvoker invoker)
070: throws IllegalStateException;
071:
072: /**
073: * Get the TimerService for a given containerId/pKey (TimedObjectId).
074: *
075: * @param containerId The string identifier for a class of TimedObjects
076: * @param pKey The primary key for an instance of a TimedObject, may be null
077: * @return The TimerService, or null if it does not exist
078: */
079: TimerService getTimerService(ObjectName containerId, Object pKey)
080: throws IllegalStateException;
081:
082: /**
083: * Remove the TimerService for a given containerId/pKey (TimedObjectId),
084: * along with any persisted timer information.
085: *
086: * This should be used for removing the TimerService and Timers
087: * associated with a particular entity bean, when it gets removed.
088: *
089: * @param containerId The string identifier for a class of TimedObjects
090: * @param pKey The primary key for an instance of a TimedObject, may be null
091: */
092: void removeTimerService(ObjectName containerId, Object pKey)
093: throws IllegalStateException;
094:
095: /**
096: * Remove the TimerService for a given containerId.
097: *
098: * This should be used to remove the timer service and timers for
099: * any type of container (session, entity, message) at the time of
100: * undeployment.
101: *
102: * @param containerId The string identifier for a class of TimedObjects
103: * @param keepState Flag indicating whether timer persistent state should be kept or removed
104: */
105: void removeTimerService(ObjectName containerId, boolean keepState)
106: throws IllegalStateException;
107:
108: /**
109: * Restore the persisted timers for a given ejb container
110: *
111: * @param containerId The ejb container id
112: * @param loader The classloader to use for loading the timers
113: */
114: void restoreTimers(ObjectName containerId, ClassLoader loader)
115: throws IllegalStateException;
116:
117: }
|