javax.ejb.MessageDrivenBean Java Examples
The following examples show how to use
javax.ejb.MessageDrivenBean.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MdbInstanceFactory.java From tomee with Apache License 2.0 | 5 votes |
/** * Frees an instance no longer needed by the resource adapter. This method makes all the necessary lifecycle * callbacks and decrements the instance count. This method should not be used to disposed of beans that have * thrown a system exception. Instead the discardInstance method should be called. * * @param instance the bean instance to free * @param ignoredInstanceCount */ public void freeInstance(final Instance instance, final boolean ignoredInstanceCount) { if (instance == null) { throw new NullPointerException("bean is null"); } // decrement the instance count if (!ignoredInstanceCount) { synchronized (this) { instanceCount--; } } final ThreadContext callContext = ThreadContext.getThreadContext(); final Operation originalOperation = callContext == null ? null : callContext.getCurrentOperation(); final BaseContext.State[] originalAllowedStates = callContext == null ? null : callContext.getCurrentAllowedStates(); try { // call post destroy method if (callContext != null) { callContext.setCurrentOperation(Operation.PRE_DESTROY); } final Method remove = instance.bean instanceof MessageDrivenBean ? MessageDrivenBean.class.getMethod("ejbRemove") : null; final List<InterceptorData> callbackInterceptors = beanContext.getCallbackInterceptors(); final InterceptorStack interceptorStack = new InterceptorStack(instance.bean, remove, Operation.PRE_DESTROY, callbackInterceptors, instance.interceptors); interceptorStack.invoke(); if (instance.creationalContext != null) { instance.creationalContext.release(); } } catch (final Throwable re) { MdbInstanceFactory.logger.error("The bean instance " + instance.bean + " threw a system exception:" + re, re); } finally { if (callContext != null) { callContext.setCurrentOperation(originalOperation); callContext.setCurrentAllowedStates(originalAllowedStates); } } }
Example #2
Source File: MdbInstanceFactory.java From tomee with Apache License 2.0 | 5 votes |
private Object constructBean() throws UnavailableException { final BeanContext beanContext = this.beanContext; final ThreadContext callContext = new ThreadContext(beanContext, null, Operation.INJECTION); final ThreadContext oldContext = ThreadContext.enter(callContext); try { final InstanceContext context = beanContext.newInstance(); if (context.getBean() instanceof MessageDrivenBean) { callContext.setCurrentOperation(Operation.CREATE); final Method create = beanContext.getCreateMethod(); final InterceptorStack ejbCreate = new InterceptorStack(context.getBean(), create, Operation.CREATE, new ArrayList(), new HashMap()); ejbCreate.invoke(); } return new Instance(context.getBean(), context.getInterceptors(), context.getCreationalContext()); } catch (Throwable e) { if (e instanceof InvocationTargetException) { e = ((InvocationTargetException) e).getTargetException(); } final String message = "The bean instance threw a system exception:" + e; MdbInstanceFactory.logger.error(message, e); throw new UnavailableException(message, e); } finally { ThreadContext.exit(oldContext); } }