package sessionbean; import static javax.ejb.TransactionAttributeType.*; import javax.ejb.Stateful; import javax.ejb.TransactionAttribute; import javax.ejb.Remote; import javax.ejb.EJB; import javax.annotation.PreDestroy; import javax.interceptor.Interceptors; import javax.interceptor.ExcludeClassInterceptors; import javax.interceptor.InvocationContext; /** * ************************************************************************** * <p/> * This code is provided for example purposes only. Oracle does not assume * any responsibility or liability for the consequences of using this code. * If you choose to use this code for any reason, including but not limited * to its use as an example you do so at your own risk and without the support * of Oracle. * <p/> * This code is provided under the following licenses: * <p/> * GNU General Public License (GPL-2.0) * COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 (CDDL-1.0) * <p/> * <p/> * **************************************************************************** * * Bean file that implements the Account business interface. * Uses the following EJB annotations: * - @Stateful: specifies that this is a stateful session EJB * - @TransactionAttribute - specifies that this EJB never runs * in a transaction * - @Remote - specifies the Remote interface for this EJB * - @EJB - specifies a dependency on the ServiceBean stateless * session ejb * - @Interceptors - Specifies that the bean file is associated with an * Interceptor class; by default all business methods invoke the * method in the interceptor class annotated with @AroundInvoke. * - @ExcludeClassInterceptors - Specifies that the interceptor methods * defined for the bean class should NOT fire for the annotated * method. * - @PreDestroy - Specifies lifecycle method that is invoked when the * bean is about to be destoryed by EJB container. * */ @Stateful @TransactionAttribute(NEVER) @Remote({sessionbean.Account.class}) @Interceptors({sessionbean.AuditInterceptor.class}) public class AccountBean implements Account { private int balance = 0; public void deposit(int amount) { balance += amount; System.out.println("deposited: "+amount+" balance: "+balance); } public void withdraw(int amount) { balance -= amount; System.out.println("withdrew: "+amount+" balance: "+balance); } public int getBalance(){ int bogus; return balance; } @ExcludeClassInterceptors public void sayHelloFromAccountBean() { } @PreDestroy public void preDestroy() { System.out.println("Invoking method: preDestroy()"); } }