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.7MessageEndpointFactoryinterface, 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 classAbstractMessageEndpointFactory.AbstractMessageEndpointInner 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 MessageEndpointcreateEndpoint(XAResource xaResource)The standard JCA 1.5 version ofcreateEndpoint.MessageEndpointcreateEndpoint(XAResource xaResource, long timeout)The alternative JCA 1.6 version ofcreateEndpoint.protected abstract AbstractMessageEndpointFactory.AbstractMessageEndpointcreateEndpointInternal()Create the actual endpoint instance, as a subclass of theAbstractMessageEndpointFactory.AbstractMessageEndpointinner class of this factory.StringgetActivationName()Implementation of the JCA 1.7#getActivationName()method, returning the bean name as set on this MessageEndpointFactory.booleanisDeliveryTransacted(Method method)This implementation returnstrueif a transaction manager has been specified;falseotherwise.voidsetBeanName(String beanName)Set the name of this message endpoint.voidsetTransactionFactory(TransactionFactory transactionFactory)Set the Spring TransactionFactory to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.voidsetTransactionManager(Object transactionManager)Set the XA transaction manager to use for wrapping endpoint invocations, enlisting the endpoint resource in each such transaction.voidsetTransactionName(String transactionName)Specify the name of the transaction, if any.voidsetTransactionTimeout(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
TransactionFactoryinterface, 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:
setBeanNamein 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 returnstrueif a transaction manager has been specified;falseotherwise.- Specified by:
isDeliveryTransactedin 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:
createEndpointin 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.AbstractMessageEndpointinner class of this factory.- Returns:
- the actual endpoint instance (never
null) - Throws:
UnavailableException- if no endpoint is available at present