Package org.springframework.jca.endpoint
Class AbstractMessageEndpointFactory.AbstractMessageEndpoint
- java.lang.Object
- org.springframework.jca.endpoint.AbstractMessageEndpointFactory.AbstractMessageEndpoint
- All Implemented Interfaces:
MessageEndpoint
- Enclosing class:
- AbstractMessageEndpointFactory
protected abstract class AbstractMessageEndpointFactory.AbstractMessageEndpoint extends Object implements MessageEndpoint
Inner class for actual endpoint implementations, based on template method to allow for any kind of concrete endpoint implementation.
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractMessageEndpoint()
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
afterDelivery()
ThisafterDelivery
implementation resets the thread context ClassLoader and completes the transaction, if any.void
beforeDelivery(Method method)
ThisbeforeDelivery
implementation starts a transaction, if necessary, and exposes the endpoint ClassLoader as current thread context ClassLoader.protected abstract ClassLoader
getEndpointClassLoader()
Template method for exposing the endpoint's ClassLoader (typically the ClassLoader that the message listener class has been loaded with).protected boolean
hasBeforeDeliveryBeenCalled()
Return whether thebeforeDelivery(java.lang.reflect.Method)
method of this endpoint has already been called.protected void
onEndpointException(Throwable ex)
Callback method for notifying the endpoint base class that the concrete endpoint invocation led to an exception.void
release()
Constructor Detail
AbstractMessageEndpoint
protected AbstractMessageEndpoint()
Method Detail
beforeDelivery
public void beforeDelivery(Method method) throws ResourceException
ThisbeforeDelivery
implementation starts a transaction, if necessary, and exposes the endpoint ClassLoader as current thread context ClassLoader.Note that the JCA 1.5 specification does not require a ResourceAdapter to call this method before invoking the concrete endpoint. If this method has not been called (check
hasBeforeDeliveryBeenCalled()
), the concrete endpoint method should callbeforeDelivery
and its siblingafterDelivery()
explicitly, as part of its own processing.- Specified by:
beforeDelivery
in interfaceMessageEndpoint
- Throws:
ResourceException
getEndpointClassLoader
protected abstract ClassLoader getEndpointClassLoader()
Template method for exposing the endpoint's ClassLoader (typically the ClassLoader that the message listener class has been loaded with).- Returns:
- the endpoint ClassLoader (never
null
)
hasBeforeDeliveryBeenCalled
protected final boolean hasBeforeDeliveryBeenCalled()
Return whether thebeforeDelivery(java.lang.reflect.Method)
method of this endpoint has already been called.
onEndpointException
protected final void onEndpointException(Throwable ex)
Callback method for notifying the endpoint base class that the concrete endpoint invocation led to an exception.To be invoked by subclasses in case of the concrete endpoint throwing an exception.
- Parameters:
ex
- the exception thrown from the concrete endpoint
afterDelivery
public void afterDelivery() throws ResourceException
ThisafterDelivery
implementation resets the thread context ClassLoader and completes the transaction, if any.Note that the JCA 1.5 specification does not require a ResourceAdapter to call this method after invoking the concrete endpoint. See the explanation in
beforeDelivery(java.lang.reflect.Method)
's javadoc.- Specified by:
afterDelivery
in interfaceMessageEndpoint
- Throws:
ResourceException
release
public void release()
- Specified by:
release
in interfaceMessageEndpoint