--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns="http://www.springframework.org/schema/jms"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:tool="http://www.springframework.org/schema/tool"
+ targetNamespace="http://www.springframework.org/schema/jms"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xsd:import namespace="http://www.springframework.org/schema/tool" schemaLocation="http://www.springframework.org/schema/tool/spring-tool-3.1.xsd"/>
+
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ Defines the configuration elements for the Spring Framework's JMS support.
+ Allows for configuring JMS listener containers in XML 'shortcut' style.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:element name="listener-container">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ Each listener child element will be hosted by a container whose configuration
+ is determined by this parent element. This variant builds standard JMS
+ listener containers, operating against a specified JMS ConnectionFactory.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation>
+ <tool:exports type="org.springframework.jms.listener.AbstractMessageListenerContainer"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="listener" type="listenerType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="container-type" default="default">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The type of this listener container: "default" or "simple", choosing
+ between DefaultMessageListenerContainer and SimpleMessageListenerContainer.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="default"/>
+ <xsd:enumeration value="simple"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="container-class" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A custom listener container implementation class as fully qualified class name.
+ Default is Spring's standard DefaultMessageListenerContainer or
+ SimpleMessageListenerContainer, according to the "container-type" attribute.
+ Note that a custom container class will typically be a subclass of either of
+ those two Spring-provided standard container classes: Nake sure that the
+ "container-type" attribute matches the actual base type that the custom class
+ derives from ("default" will usually be fine anyway, since most custom classes
+ will derive from DefaultMessageListenerContainer).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation>
+ <tool:expected-type type="java.lang.Class"/>
+ <tool:assignable-to type="org.springframework.jms.listener.AbstractMessageListenerContainer"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="connection-factory" type="xsd:string" default="connectionFactory">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the JMS ConnectionFactory bean.
+ Default is "connectionFactory".
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="javax.jms.ConnectionFactory"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="task-executor" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to a Spring TaskExecutor (or standard JDK 1.5 Executor) for executing
+ JMS listener invokers. Default is a SimpleAsyncTaskExecutor in case of a
+ DefaultMessageListenerContainer, using internally managed threads. For a
+ SimpleMessageListenerContainer, listeners will always get invoked within the
+ JMS provider's receive thread by default.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="java.util.concurrent.Executor"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="destination-resolver" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the DestinationResolver strategy for resolving destination names.
+ Default is a DynamicDestinationResolver, using the JMS provider's queue/topic
+ name resolution. Alternatively, specify a reference to a JndiDestinationResolver
+ (typically in a J2EE environment).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.jms.support.destination.DestinationResolver"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="message-converter" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the MessageConverter strategy for converting JMS Messages to
+ listener method arguments. Default is a SimpleMessageConverter.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.jms.support.converter.MessageConverter"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="error-handler" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to an ErrorHandler strategy for handling any uncaught Exceptions
+ that may occur during the execution of the MessageListener.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.util.ErrorHandler"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="destination-type" default="queue">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The JMS destination type for this listener: "queue", "topic" or "durableTopic".
+ The default is "queue".
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="queue"/>
+ <xsd:enumeration value="topic"/>
+ <xsd:enumeration value="durableTopic"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="client-id" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The JMS client id for this listener container.
+ Needs to be specified when using durable subscriptions.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="cache" default="auto">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The cache level for JMS resources: "none", "connection", "session", "consumer"
+ or "auto". By default ("auto"), the cache level will effectively be "consumer",
+ unless an external transaction manager has been specified - in which case the
+ effective default will be "none" (assuming J2EE-style transaction management
+ where the given ConnectionFactory is an XA-aware pool).
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="connection"/>
+ <xsd:enumeration value="session"/>
+ <xsd:enumeration value="consumer"/>
+ <xsd:enumeration value="auto"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="acknowledge" default="auto">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The native JMS acknowledge mode: "auto", "client", "dups-ok" or "transacted".
+ A value of "transacted" effectively activates a locally transacted Session;
+ as alternative, specify an external "transaction-manager" via the corresponding
+ attribute. Default is "auto".
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="client"/>
+ <xsd:enumeration value="dups-ok"/>
+ <xsd:enumeration value="transacted"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="transaction-manager" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to an external PlatformTransactionManager (typically an
+ XA-based transaction coordinator, e.g. Spring's JtaTransactionManager).
+ If not specified, native acknowledging will be used (see "acknowledge" attribute).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.transaction.PlatformTransactionManager"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="concurrency" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The number of concurrent sessions/consumers to start for each listener.
+ Can either be a simple number indicating the maximum number (e.g. "5")
+ or a range indicating the lower as well as the upper limit (e.g. "3-5").
+ Note that a specified minimum is just a hint and might be ignored at runtime.
+ Default is 1; keep concurrency limited to 1 in case of a topic listener
+ or if message ordering is important; consider raising it for general queues.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="prefetch" type="xsd:int">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The maximum number of messages to load into a single session.
+ Note that raising this number might lead to starvation of concurrent consumers!
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="receive-timeout" type="xsd:int">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The timeout to use for receive calls (in milliseconds).
+ The default is 1000 ms (1 sec); -1 indicates no timeout at all.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="phase" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The lifecycle phase within which this container should start and stop. The lower
+ the value the earlier this container will start and the later it will stop. The
+ default is Integer.MAX_VALUE meaning the container will start as late as possible
+ and stop as soon as possible.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="jca-listener-container">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ Each listener child element will be hosted by a container whose configuration
+ is determined by this parent element. This variant builds standard JCA-based
+ listener containers, operating against a specified JCA ResourceAdapter
+ (which needs to be provided by the JMS message broker, e.g. ActiveMQ).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation>
+ <tool:exports type="org.springframework.jms.listener.endpoint.JmsMessageEndpointManager"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="listener" type="listenerType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="resource-adapter" type="xsd:string" default="resourceAdapter">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the JCA ResourceAdapter bean for the JMS provider.
+ Default is "resourceAdapter".
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="javax.resource.spi.ResourceAdapter"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="activation-spec-factory" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the JmsActivationSpecFactory.
+ Default is to autodetect the JMS provider and its ActivationSpec class
+ (see DefaultJmsActivationSpecFactory).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.jms.listener.endpoint.JmsActivationSpecFactory"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="destination-resolver" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the DestinationResolver strategy for resolving destination names.
+ Default is to pass in the destination name Strings into the JCA ActivationSpec as-is.
+ Alternatively, specify a reference to a JndiDestinationResolver (typically in a J2EE
+ environment, in particular if the server insists on receiving Destination objects).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.jms.support.destination.DestinationResolver"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="message-converter" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the MessageConverter strategy for converting JMS Messages to
+ listener method arguments. Default is a SimpleMessageConverter.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref">
+ <tool:expected-type type="org.springframework.jms.support.converter.MessageConverter"/>
+ </tool:annotation>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="destination-type" default="queue">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The JMS destination type for this listener: "queue", "topic" or "durableTopic".
+ Default is "queue".
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="queue"/>
+ <xsd:enumeration value="topic"/>
+ <xsd:enumeration value="durableTopic"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="client-id" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The JMS client id for this listener container.
+ Needs to be specified when using durable subscriptions.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="acknowledge" default="auto">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The native JMS acknowledge mode: "auto", "client", "dups-ok" or "transacted".
+ A value of "transacted" effectively activates a locally transacted Session;
+ as alternative, specify an external "transaction-manager" via the corresponding
+ attribute. Default is "auto".
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:NMTOKEN">
+ <xsd:enumeration value="auto"/>
+ <xsd:enumeration value="client"/>
+ <xsd:enumeration value="dups-ok"/>
+ <xsd:enumeration value="transacted"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="transaction-manager" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ A reference to the Spring JtaTransactionManager or [javax.transaction.TransactionManager],
+ for kicking off an XA transaction for each incoming message.
+ If not specified, native acknowledging will be used (see "acknowledge" attribute).
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="concurrency" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The number of concurrent sessions/consumers to start for each listener.
+ Can either be a simple number indicating the maximum number (e.g. "5")
+ or a range indicating the lower as well as the upper limit (e.g. "3-5").
+ Note that a specified minimum is just a hint and will typically be ignored
+ at runtime when using a JCA listener container. Default is 1.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="prefetch" type="xsd:int">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The maximum number of messages to load into a single session.
+ Note that raising this number might lead to starvation of concurrent consumers!
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="phase" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The lifecycle phase within which this container should start and stop. The lower
+ the value the earlier this container will start and the later it will stop. The
+ default is Integer.MAX_VALUE meaning the container will start as late as possible
+ and stop as soon as possible.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="listenerType">
+ <xsd:attribute name="id" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The unique identifier for a listener.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="destination" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The destination name for this listener, resolved through the
+ container-wide DestinationResolver strategy (if any). Required.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="subscription" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The name for the durable subscription, if any.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="selector" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The JMS message selector for this listener.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="ref" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The bean name of the listener object, implementing
+ the MessageListener/SessionAwareMessageListener interface
+ or defining the specified listener method. Required.
+ ]]></xsd:documentation>
+ <xsd:appinfo>
+ <tool:annotation kind="ref"/>
+ </xsd:appinfo>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="method" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The name of the listener method to invoke. If not specified,
+ the target bean is supposed to implement the MessageListener
+ or SessionAwareMessageListener interface.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="response-destination" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation><![CDATA[
+ The name of the default response destination to send response messages to.
+ This will be applied in case of a request message that does not carry
+ a "JMSReplyTo" field. The type of this destination will be determined
+ by the listener-container's "destination-type" attribute.
+ Note: This only applies to a listener method with a return value,
+ for which each result object will be converted into a response message.
+ ]]></xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+
+</xsd:schema>