<?xml version='1.0'?>
<!-- NOTE: this file is autogenerated by Apache XBean -->

<xs:schema elementFormDefault='qualified'
          targetNamespace='http://aries.apache.org/xmlns/transaction-jms/1.0'
          xmlns:xs='http://www.w3.org/2001/XMLSchema'
          xmlns:tns='http://aries.apache.org/xmlns/transaction-jms/1.0'>

 <!-- element for type: org.apache.aries.transaction.jms.PooledConnectionFactory -->
 <xs:element name='pooledConnectionFactory'>
   <xs:annotation>
     <xs:documentation><![CDATA[
       A JMS provider which pools Connection, Session and MessageProducer instances
so it can be used with tools like <a href="http://camel.apache.org/activemq.html">Camel</a> and Spring's <a
href="http://activemq.apache.org/spring-support.html">JmsTemplate and MessagListenerContainer</a>.
Connections, sessions and producers are returned to a pool after use so that they can be reused later
without having to undergo the cost of creating them again.

b>NOTE:</b> while this implementation does allow the creation of a collection of active consumers,
it does not 'pool' consumers. Pooling makes sense for connections, sessions and producers, which
are expensive to create and can remain idle a minimal cost. Consumers, on the other hand, are usually
just created at startup and left active, handling incoming messages as they come. When a consumer is
complete, it is best to close it rather than return it to a pool for later reuse: this is because,
even if a consumer is idle, ActiveMQ will keep delivering messages to the consumer's prefetch buffer,
where they'll get held until the consumer is active again.

If you are creating a collection of consumers (for example, for multi-threaded message consumption), you
might want to consider using a lower prefetch value for each consumer (e.g. 10 or 20), to ensure that
all messages don't end up going to just one of the consumers. See this FAQ entry for more detail:
http://activemq.apache.org/i-do-not-receive-messages-in-my-second-consumer.html
     ]]></xs:documentation>
   </xs:annotation>
   <xs:complexType>
     <xs:sequence>
       <xs:element name='connectionFactory' minOccurs='0' maxOccurs='1'>
         <xs:annotation>
           <xs:documentation><![CDATA[
             The actual JMS ConnectionFactory that will be pooled.
           ]]></xs:documentation>
         </xs:annotation>
         <xs:complexType>
           <xs:choice minOccurs='0' maxOccurs='1'>
             <xs:element ref='tns:pooledConnectionFactory'/>
             <xs:element ref='tns:xaPooledConnectionFactory'/>
             <xs:any namespace='##other'/>
           </xs:choice>
         </xs:complexType>
       </xs:element>
       <xs:element name='poolFactory' minOccurs='0' maxOccurs='1'>
         <xs:annotation>
           <xs:documentation><![CDATA[
             Sets the object pool factory used to create individual session pools for
each connection
           ]]></xs:documentation>
         </xs:annotation>
         <xs:complexType>
           <xs:sequence minOccurs='0' maxOccurs='1'><xs:any minOccurs='0' maxOccurs='unbounded'/></xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
     </xs:sequence>
     <xs:attribute name='blockIfSessionPoolIsFull' type='xs:boolean'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Controls the behavior of the internal session pool. By default the call to
Connection.getSession() will block if the session pool is full. If the
argument false is given, it will change the default behavior and instead the
call to getSession() will throw a JMSException.

The size of the session pool is controlled by the @see #maximumActive
property.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='connectionFactory' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           The actual JMS ConnectionFactory that will be pooled.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='expiryTimeout' type='xs:long'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Allow connections to expire, irrespective of load or idle time. This is useful with failover
to force a reconnect from the pool, to reestablish load balancing or use of the master post recovery.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='idleTimeout' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Specifies the amount of milliseconds after which an idle connection is discarded.
Defaults to 30 seconds.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='maxConnections' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Number of JMS connections to use. The default is 1 to use a single connection
to the broker. For high throughput, it may be interesting to raise this number
a bit.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='maximumActive' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Sets the maximum number of active sessions per connection
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='poolFactory' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Sets the object pool factory used to create individual session pools for
each connection
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='id' type='xs:ID'/>
     <xs:anyAttribute namespace='##other' processContents='lax'/>
   </xs:complexType>
 </xs:element>


 <!-- element for type: org.apache.aries.transaction.jms.RecoverablePooledConnectionFactory -->
 <xs:element name='xaPooledConnectionFactory'>
   <xs:annotation>
     <xs:documentation><![CDATA[
       A pooled connection factory which is dedicated to work with the Geronimo/Aries
transaction manager for proper recovery of in-flight transactions after a
crash.
     ]]></xs:documentation>
   </xs:annotation>
   <xs:complexType>
     <xs:sequence>
       <xs:element name='connectionFactory' minOccurs='0' maxOccurs='1'>
         <xs:annotation>
           <xs:documentation><![CDATA[
             The actual JMS ConnectionFactory that will be pooled.
           ]]></xs:documentation>
         </xs:annotation>
         <xs:complexType>
           <xs:choice minOccurs='0' maxOccurs='1'>
             <xs:element ref='tns:pooledConnectionFactory'/>
             <xs:element ref='tns:xaPooledConnectionFactory'/>
             <xs:any namespace='##other'/>
           </xs:choice>
         </xs:complexType>
       </xs:element>
       <xs:element name='poolFactory' minOccurs='0' maxOccurs='1'>
         <xs:annotation>
           <xs:documentation><![CDATA[
             Sets the object pool factory used to create individual session pools for
each connection
           ]]></xs:documentation>
         </xs:annotation>
         <xs:complexType>
           <xs:sequence minOccurs='0' maxOccurs='1'><xs:any minOccurs='0' maxOccurs='unbounded'/></xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:element name='transactionManager' minOccurs='0' maxOccurs='1'>
         <xs:annotation>
           <xs:documentation><![CDATA[
             The XA TransactionManager to use to enlist the JMS sessions into.
           ]]></xs:documentation>
         </xs:annotation>
         <xs:complexType>
           <xs:sequence minOccurs='0' maxOccurs='1'><xs:any minOccurs='0' maxOccurs='unbounded'/></xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:element name='xaConnectionFactory' minOccurs='0' maxOccurs='1'>
         <xs:complexType>
           <xs:sequence minOccurs='0' maxOccurs='1'><xs:any minOccurs='0' maxOccurs='unbounded'/></xs:sequence>
         </xs:complexType>
       </xs:element>
       <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded'/>
     </xs:sequence>
     <xs:attribute name='blockIfSessionPoolIsFull' type='xs:boolean'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Controls the behavior of the internal session pool. By default the call to
Connection.getSession() will block if the session pool is full. If the
argument false is given, it will change the default behavior and instead the
call to getSession() will throw a JMSException.

The size of the session pool is controlled by the @see #maximumActive
property.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='connectionFactory' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           The actual JMS ConnectionFactory that will be pooled.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='expiryTimeout' type='xs:long'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Allow connections to expire, irrespective of load or idle time. This is useful with failover
to force a reconnect from the pool, to reestablish load balancing or use of the master post recovery.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='idleTimeout' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Specifies the amount of milliseconds after which an idle connection is discarded.
Defaults to 30 seconds.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='maxConnections' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Number of JMS connections to use. The default is 1 to use a single connection
to the broker. For high throughput, it may be interesting to raise this number
a bit.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='maximumActive' type='xs:integer'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Sets the maximum number of active sessions per connection
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='name' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           The unique name for this managed XAResource. This name will be used
by the transaction manager to recover transactions.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='poolFactory' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           Sets the object pool factory used to create individual session pools for
each connection
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='transactionManager' type='xs:string'>
       <xs:annotation>
         <xs:documentation><![CDATA[
           The XA TransactionManager to use to enlist the JMS sessions into.
         ]]></xs:documentation>
       </xs:annotation>
     </xs:attribute>
     <xs:attribute name='xaConnectionFactory' type='xs:string'/>
     <xs:attribute name='id' type='xs:ID'/>
     <xs:anyAttribute namespace='##other' processContents='lax'/>
   </xs:complexType>
 </xs:element>


</xs:schema>