Class AbstractMessageEndpointFactory
- java.lang.Object
- org.springframework.jca.endpoint.AbstractMessageEndpointFactory
- All Implemented Interfaces:
MessageEndpointFactory
,Aware
,BeanNameAware
- Direct Known Subclasses:
GenericMessageEndpointFactory
,JmsMessageEndpointFactory
public abstract class AbstractMessageEndpointFactory extends Object implements MessageEndpointFactory, BeanNameAware
Abstract base implementation of the JCA 1.5/1.6/1.7MessageEndpointFactory
interface, providing transaction management capabilities as well as ClassLoader exposure for endpoint invocations.- Since:
- 2.5
- Author:
- Juergen Hoeller
- See Also:
setTransactionManager(java.lang.Object)
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AbstractMessageEndpointFactory.AbstractMessageEndpoint
Inner class for actual endpoint implementations, based on template method to allow for any kind of concrete endpoint implementation.
Constructor Summary
Constructors Constructor Description AbstractMessageEndpointFactory()
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description MessageEndpoint
createEndpoint(XAResource xaResource)
The standard JCA 1.5 version ofcreateEndpoint
.MessageEndpoint
createEndpoint(XAResource xaResource, long timeout)
The alternative JCA 1.6 version ofcreateEndpoint
.protected abstract AbstractMessageEndpointFactory.AbstractMessageEndpoint
createEndpointInternal()
Create the actual endpoint instance, as a subclass of theAbstractMessageEndpointFactory.AbstractMessageEndpoint
inner class of this factory.String
getActivationName()
Implementation of the JCA 1.7#getActivationName()
method, returning the bean name as set on this MessageEndpointFactory.boolean
isDeliveryTransacted(Method method)
This implementation returnstrue
if a transaction manager has been specified;false
otherwise.void
setBeanName(String beanName)
Set the name of this message endpoint.void
setTransactionFactory(TransactionFactory transactionFactory)
Set the Spring TransactionFactory to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.void
setTransactionManager(Object transactionManager)
Set the XA transaction manager to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.void
setTransactionName(String transactionName)
Specify the name of the transaction, if any.void
setTransactionTimeout(int transactionTimeout)
Specify the transaction timeout, if any.
Constructor Detail
AbstractMessageEndpointFactory
public AbstractMessageEndpointFactory()
Method Detail
setTransactionManager
public void setTransactionManager(Object transactionManager)
Set the XA transaction manager to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.The passed-in object may be a transaction manager which implements Spring's
TransactionFactory
interface, or a plainTransactionManager
.If no transaction manager is specified, the endpoint invocation will simply not be wrapped in an XA transaction. Check out your resource provider's ActivationSpec documentation for local transaction options of your particular provider.
setTransactionFactory
public void setTransactionFactory(TransactionFactory transactionFactory)
Set the Spring TransactionFactory to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.Alternatively, specify an appropriate transaction manager through the
"transactionManager"
property.If no transaction factory is specified, the endpoint invocation will simply not be wrapped in an XA transaction. Check out your resource provider's ActivationSpec documentation for local transaction options of your particular provider.
setTransactionName
public void setTransactionName(String transactionName)
Specify the name of the transaction, if any.Default is none. A specified name will be passed on to the transaction manager, allowing to identify the transaction in a transaction monitor.
setTransactionTimeout
public void setTransactionTimeout(int transactionTimeout)
Specify the transaction timeout, if any.Default is -1: rely on the transaction manager's default timeout. Specify a concrete timeout to restrict the maximum duration of each endpoint invocation.
setBeanName
public void setBeanName(String beanName)
Set the name of this message endpoint. Populated with the bean name automatically when defined within Spring's bean factory.- Specified by:
setBeanName
in interfaceBeanNameAware
- Parameters:
beanName
- the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use theBeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.
getActivationName
public String getActivationName()
Implementation of the JCA 1.7#getActivationName()
method, returning the bean name as set on this MessageEndpointFactory.- See Also:
setBeanName(java.lang.String)
isDeliveryTransacted
public boolean isDeliveryTransacted(Method method) throws NoSuchMethodException
This implementation returnstrue
if a transaction manager has been specified;false
otherwise.- Specified by:
isDeliveryTransacted
in interfaceMessageEndpointFactory
- Throws:
NoSuchMethodException
- See Also:
setTransactionManager(java.lang.Object)
,setTransactionFactory(org.springframework.transaction.jta.TransactionFactory)
createEndpoint
public MessageEndpoint createEndpoint(XAResource xaResource) throws UnavailableException
The standard JCA 1.5 version ofcreateEndpoint
.This implementation delegates to
createEndpointInternal()
, initializing the endpoint's XAResource before the endpoint gets invoked.- Specified by:
createEndpoint
in interfaceMessageEndpointFactory
- Throws:
UnavailableException
createEndpoint
public MessageEndpoint createEndpoint(XAResource xaResource, long timeout) throws UnavailableException
The alternative JCA 1.6 version ofcreateEndpoint
.This implementation delegates to
createEndpointInternal()
, ignoring the specified timeout. It is only here for JCA 1.6 compliance.- Throws:
UnavailableException
createEndpointInternal
protected abstract AbstractMessageEndpointFactory.AbstractMessageEndpoint createEndpointInternal() throws UnavailableException
Create the actual endpoint instance, as a subclass of theAbstractMessageEndpointFactory.AbstractMessageEndpoint
inner class of this factory.- Returns:
- the actual endpoint instance (never
null
) - Throws:
UnavailableException
- if no endpoint is available at present