[jboss-svn-commits] JBL Code SVN: r16211 - in labs/jbossesb/trunk/product: rosetta/src/org/jboss/soa/esb/listeners/config/mappers and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 31 13:28:56 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-10-31 13:28:56 -0400 (Wed, 31 Oct 2007)
New Revision: 16211

Modified:
   labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/SqlListenerMapper.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
   labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml
Log:
Added transactional SQL gateway: JBESB-1188

Modified: labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd
===================================================================
--- labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd	2007-10-31 17:19:59 UTC (rev 16210)
+++ labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd	2007-10-31 17:28:56 UTC (rev 16211)
@@ -1,1136 +1,1528 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--Generated by Turbo XML 2.4.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
-<xsd:schema xmlns:jesb="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd">
+<xsd:schema
+	xmlns:jesb="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	elementFormDefault="qualified"
+	targetNamespace="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd">
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       Document root + some basic types.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Document root + some basic types.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
 
-    <xsd:element name="jbossesb">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">The jbossesb configuration for a single instance.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:providers"/>
-                <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:services"/>
-            </xsd:sequence>
-            <xsd:attribute default="180" name="parameterReloadSecs" use="optional"/>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="jbossesb">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				The jbossesb configuration for a single instance.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="1" minOccurs="0"
+					ref="jesb:providers" />
+				<xsd:element maxOccurs="1" minOccurs="0"
+					ref="jesb:services" />
+			</xsd:sequence>
+			<xsd:attribute default="180" name="parameterReloadSecs"
+				use="optional" />
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:element name="property">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A simple name-value pair.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="xsd:anyType">
-                    <xsd:attribute name="name" type="xsd:string" use="required"/>
-                    <xsd:attribute name="value" type="xsd:string"/>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="property">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A simple name-value pair.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="xsd:anyType">
+					<xsd:attribute name="name" type="xsd:string"
+						use="required" />
+					<xsd:attribute name="value" type="xsd:string" />
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       Provider and Bus base types.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Provider and Bus base types.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
 
-    <xsd:element name="providers">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A container for the providers referenced in the jbossesb config file
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:provider"/>
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:complexType abstract="true" name="provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Abstract provider.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:sequence>
-            <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:property"/>
-        </xsd:sequence>
-        <xsd:attribute name="name" type="xsd:string" use="required"/>
-    </xsd:complexType>
-    <xsd:element abstract="true" name="provider" type="jesb:provider"/>
+	<xsd:element name="providers">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A container for the providers referenced in the jbossesb
+				config file
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="0"
+					ref="jesb:provider" />
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType abstract="true" name="provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Abstract provider.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" minOccurs="0"
+				ref="jesb:property" />
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" use="required" />
+	</xsd:complexType>
+	<xsd:element abstract="true" name="provider" type="jesb:provider" />
 
-    <xsd:complexType name="bus-provider">
-        <xsd:complexContent>
-            <xsd:extension base="jesb:provider">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A provider of a bus. So for instance you can have a jms-provider (JBossMQ) or an ftp-provider.</xsd:documentation>
-                </xsd:annotation>
-                <xsd:sequence>
-                    <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:bus"/>
-                </xsd:sequence>
-            </xsd:extension>
-        </xsd:complexContent>
-    </xsd:complexType>
-    <xsd:element name="bus-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Generic Bus Provider.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider"/>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:complexType name="bus-provider">
+		<xsd:complexContent>
+			<xsd:extension base="jesb:provider">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A provider of a bus. So for instance you can
+						have a jms-provider (JBossMQ) or an
+						ftp-provider.
+					</xsd:documentation>
+				</xsd:annotation>
+				<xsd:sequence>
+					<xsd:element maxOccurs="unbounded" minOccurs="1"
+						ref="jesb:bus" />
+				</xsd:sequence>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="bus-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Generic Bus Provider.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider" />
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:complexType name="bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A bus (also called "channel" by others) is a means by which Services
-                communicate with each other (JMS, FTP, HTTP, etc).
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:sequence>
-            <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:property"/>
-        </xsd:sequence>
-        <xsd:attribute name="busid" type="xsd:string" use="required">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">An id such that this bus can be referenced by Service listn.</xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-    </xsd:complexType>
-    <xsd:element name="bus" type="jesb:bus"/>
+	<xsd:complexType name="bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A bus (also called "channel" by others) is a means by
+				which Services communicate with each other (JMS, FTP,
+				HTTP, etc).
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" minOccurs="0"
+				ref="jesb:property" />
+		</xsd:sequence>
+		<xsd:attribute name="busid" type="xsd:string" use="required">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					An id such that this bus can be referenced by
+					Service listn.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+	</xsd:complexType>
+	<xsd:element name="bus" type="jesb:bus" />
 
-    <xsd:element name="schedule-provider" substitutionGroup="jesb:provider">
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:provider">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:schedule"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="schedule-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:provider">
+					<xsd:sequence>
+						<xsd:element maxOccurs="unbounded" minOccurs="1"
+							ref="jesb:schedule" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:complexType abstract="true" name="schedule">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Schedule Configuration.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:sequence>
-            <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:property"/>
-        </xsd:sequence>
-        <xsd:attribute name="scheduleid" type="xsd:string" use="required">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">An id such that this schedule can be referenced by Service listner.</xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="startDate" type="xsd:dateTime" use="optional">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">Schedule start time and date.</xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute name="endDate" type="xsd:dateTime" use="optional">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">Schedule end time and date.</xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-    </xsd:complexType>
-    <xsd:element abstract="true" name="schedule" type="jesb:schedule"/>
+	<xsd:complexType abstract="true" name="schedule">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Schedule Configuration.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" minOccurs="0"
+				ref="jesb:property" />
+		</xsd:sequence>
+		<xsd:attribute name="scheduleid" type="xsd:string"
+			use="required">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					An id such that this schedule can be referenced by
+					Service listner.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+		<xsd:attribute name="startDate" type="xsd:dateTime"
+			use="optional">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					Schedule start time and date.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+		<xsd:attribute name="endDate" type="xsd:dateTime"
+			use="optional">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					Schedule end time and date.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+	</xsd:complexType>
+	<xsd:element abstract="true" name="schedule" type="jesb:schedule" />
 
-    <xsd:element name="simple-schedule" substitutionGroup="jesb:schedule">
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:schedule">
-                    <xsd:attribute default="10" name="frequency" type="xsd:long" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Schedule frequency, in seconds.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute default="-1" name="execCount" type="xsd:int" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Schedule execution count. -1 to execute indefinitely.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="simple-schedule"
+		substitutionGroup="jesb:schedule">
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:schedule">
+					<xsd:attribute default="10" name="frequency"
+						type="xsd:long" use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Schedule frequency, in seconds.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute default="-1" name="execCount"
+						type="xsd:int" use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Schedule execution count. -1 to execute
+								indefinitely.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:element name="cron-schedule" substitutionGroup="jesb:schedule">
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:schedule">
-                    <xsd:attribute name="cronExpression" type="xsd:string" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Schedule CRON expression.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="cron-schedule"
+		substitutionGroup="jesb:schedule">
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:schedule">
+					<xsd:attribute name="cronExpression"
+						type="xsd:string" use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Schedule CRON expression.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       Service and Action types.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Service and Action types.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
 
-    <xsd:element name="services">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A container for services.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:service"/>
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="service">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A service has listener or gateways and a list of actions.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="1" minOccurs="1" ref="jesb:listeners"/>
-                <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:actions"/>
-            </xsd:sequence>
-            <xsd:attribute name="category" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The service category which will be used to store a reference to
-                        this service in the registry.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="name" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The service name which will be used to store a reference to this
-                        service in the registry.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="description" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The service description which stored with this service in the
-                        registry, so that the purpose of this service can be understood by a human.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="services">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A container for services.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="1"
+					ref="jesb:service" />
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="service">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A service has listener or gateways and a list of
+				actions.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="1" minOccurs="1"
+					ref="jesb:listeners" />
+				<xsd:element maxOccurs="1" minOccurs="0"
+					ref="jesb:actions" />
+			</xsd:sequence>
+			<xsd:attribute name="category" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The service category which will be used to store
+						a reference to this service in the registry.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="name" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The service name which will be used to store a
+						reference to this service in the registry.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="description" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The service description which stored with this
+						service in the registry, so that the purpose of
+						this service can be understood by a human.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:simpleType name="mepType">
-        <xsd:restriction base="xsd:string">
-            <xsd:enumeration value="RequestResponse"/>
-            <xsd:enumeration value="OneWay"/>
-        </xsd:restriction>
-    </xsd:simpleType>
-	
-    <xsd:element name="actions">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A container for actions belonging to this service.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-        	<xsd:sequence>
-        		<xsd:element maxOccurs="unbounded" minOccurs="1"
-        			ref="jesb:action" />
-        	</xsd:sequence>
-            <xsd:attribute name="mep" type="jesb:mepType"/>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="action">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">An action which will act on the message when it is received by the service.
-                Actions can be chained. Hence you can specify a list of actions. Action are 'pluggable' and can be
-                custom code, however
-                JBossESB comes with a list of predefined actions.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:property"/>
-            </xsd:sequence>
-            <xsd:attribute name="name" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The logical name of the action.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="class" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The full classname of the java class in which this action is
-                        defined.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="process" type="xsd:string">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The name of the method on the action that needs to be called when
-                        the message is received.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:simpleType name="mepType">
+		<xsd:restriction base="xsd:string">
+			<xsd:enumeration value="RequestResponse" />
+			<xsd:enumeration value="OneWay" />
+		</xsd:restriction>
+	</xsd:simpleType>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       Listener base types.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="actions">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A container for actions belonging to this service.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="1"
+					ref="jesb:action" />
+			</xsd:sequence>
+			<xsd:attribute name="mep" type="jesb:mepType" />
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="action">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				An action which will act on the message when it is
+				received by the service. Actions can be chained. Hence
+				you can specify a list of actions. Action are
+				'pluggable' and can be custom code, however JBossESB
+				comes with a list of predefined actions.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="0"
+					ref="jesb:property" />
+			</xsd:sequence>
+			<xsd:attribute name="name" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The logical name of the action.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="class" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The full classname of the java class in which
+						this action is defined.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="process" type="xsd:string">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The name of the method on the action that needs
+						to be called when the message is received.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:element name="listeners">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A container for all listener for a service.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:listener"/>
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:complexType name="listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A listener is a listener or a gateway. The listener defines to which bus
-                the service is listening. The service can simultaneniously listen to multiple buses.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:sequence>
-            <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:property"/>
-        </xsd:sequence>
-        <xsd:attribute name="name" type="xsd:string" use="required">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">The logical name of the listener.</xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute default="$not-defined$" name="busidref" type="xsd:string" use="optional">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">A reference to an existing bus, as defined in the 'buses' section of
-                    this jbossesb config.
-                </xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute default="1" name="maxThreads" type="xsd:int" use="optional">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">The number of threads which will be started for this listener.
-                </xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-        <xsd:attribute default="false" name="is-gateway" type="xsd:boolean" use="optional">
-            <xsd:annotation>
-                <xsd:documentation xml:lang="en">true if the listener is a gateway. A gateway is an ESB-Unware listener,
-                    while a
-                    listener is ESB-aware and as such expects jbossesb formatted messages.
-                </xsd:documentation>
-            </xsd:annotation>
-        </xsd:attribute>
-    </xsd:complexType>
-    <xsd:element name="listener" type="jesb:listener"/>
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Listener base types.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
 
-    <xsd:complexType abstract="true" name="abstract-scheduled-listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Abstract scheduled listener.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexContent>
-            <xsd:extension base="jesb:listener">
-                <xsd:attribute default="-1" name="poll-frequency-seconds" type="xsd:int" use="optional"> <!-- Purposely defaults to -1 -->
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">DEPRECATED (use "schedule-frequency" or "scheduleidref"): The frequency with which this listener is scheduled (in seconds). Defaults to 10 seconds.</xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-                <xsd:attribute default="-1" name="schedule-frequency" type="xsd:int" use="optional"> <!-- Purposely defaults to -1 -->
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The frequency with which this listener is scheduled (in seconds). Defaults to 10 seconds.</xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-                <xsd:attribute name="scheduleidref" type="xsd:string" use="optional">
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The id reference for the schedule that's driving this scheduled listener.</xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-            </xsd:extension>
-        </xsd:complexContent>
-    </xsd:complexType>
+	<xsd:element name="listeners">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A container for all listener for a service.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="1"
+					ref="jesb:listener" />
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType name="listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A listener is a listener or a gateway. The listener
+				defines to which bus the service is listening. The
+				service can simultaneniously listen to multiple buses.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:sequence>
+			<xsd:element maxOccurs="unbounded" minOccurs="0"
+				ref="jesb:property" />
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" use="required">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					The logical name of the listener.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+		<xsd:attribute default="$not-defined$" name="busidref"
+			type="xsd:string" use="optional">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					A reference to an existing bus, as defined in the
+					'buses' section of this jbossesb config.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+		<xsd:attribute default="1" name="maxThreads" type="xsd:int"
+			use="optional">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					The number of threads which will be started for this
+					listener.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+		<xsd:attribute default="false" name="is-gateway"
+			type="xsd:boolean" use="optional">
+			<xsd:annotation>
+				<xsd:documentation xml:lang="en">
+					true if the listener is a gateway. A gateway is an
+					ESB-Unware listener, while a listener is ESB-aware
+					and as such expects jbossesb formatted messages.
+				</xsd:documentation>
+			</xsd:annotation>
+		</xsd:attribute>
+	</xsd:complexType>
+	<xsd:element name="listener" type="jesb:listener" />
 
-    <xsd:element name="scheduled-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Scheduled listener.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:abstract-scheduled-listener">
-                    <xsd:attribute name="event-processor" type="xsd:string" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Message Composer class name.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="transacted" type="xsd:boolean">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Should the schedule execute in a transacted environment?</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:complexType abstract="true"
+		name="abstract-scheduled-listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Abstract scheduled listener.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexContent>
+			<xsd:extension base="jesb:listener">
+				<xsd:attribute default="-1"
+					name="poll-frequency-seconds" type="xsd:int" use="optional">
+<!-- Purposely defaults to -1 -->
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							DEPRECATED (use "schedule-frequency" or
+							"scheduleidref"): The frequency with which
+							this listener is scheduled (in seconds).
+							Defaults to 10 seconds.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+				<xsd:attribute default="-1" name="schedule-frequency"
+					type="xsd:int" use="optional">
+<!-- Purposely defaults to -1 -->
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The frequency with which this listener is
+							scheduled (in seconds). Defaults to 10
+							seconds.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+				<xsd:attribute name="scheduleidref" type="xsd:string"
+					use="optional">
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The id reference for the schedule that's
+							driving this scheduled listener.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
 
-    <!-- JCA Types -->
-    <xsd:element name="activation-config">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Activation configuration for jca bus or listener.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:sequence>
-                <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:property"/>
-            </xsd:sequence>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="jca-gateway" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific gateway using JCA inflow.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:activation-config"/>
-                    </xsd:sequence>
-                    <xsd:attribute name="adapter" type="xsd:string" use="required"/>
-                    <xsd:attribute name="endpointClass" type="xsd:string" use="required"/>
-                    <xsd:attribute name="messagingType" type="xsd:string" use="optional"/>
-                    <xsd:attribute name="jcaBridge" type="xsd:string" use="optional"/>
-                    <xsd:attribute name="transacted" type="xsd:string" use="optional"/>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="scheduled-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Scheduled listener.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension
+					base="jesb:abstract-scheduled-listener">
+					<xsd:attribute name="event-processor"
+						type="xsd:string" use="required">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Message Composer class name.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="transacted"
+						type="xsd:boolean">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Should the schedule execute in a
+								transacted environment?
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       JMS Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<!-- JCA Types -->
+	<xsd:element name="activation-config">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Activation configuration for jca bus or listener.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:sequence>
+				<xsd:element maxOccurs="unbounded" minOccurs="1"
+					ref="jesb:property" />
+			</xsd:sequence>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="jca-gateway" substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific gateway using JCA inflow.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:activation-config" />
+					</xsd:sequence>
+					<xsd:attribute name="adapter" type="xsd:string"
+						use="required" />
+					<xsd:attribute name="endpointClass"
+						type="xsd:string" use="required" />
+					<xsd:attribute name="messagingType"
+						type="xsd:string" use="optional" />
+					<xsd:attribute name="jcaBridge" type="xsd:string"
+						use="optional" />
+					<xsd:attribute name="transacted" type="xsd:string"
+						use="optional" />
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <xsd:element name="jms-message-filter">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A JMS filter can add information to a Queue, or Topic. For example you
-                can defined a message-selector. However, you can also push the queue name and type into this
-                filter given you did not already specify them in the jms-bus.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:attribute name="dest-name" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">Name of the Queue of Topic.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="dest-type" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A Queue delivers a message once, a topic broadcasts a message to
-                        all registered listeners.
-                    </xsd:documentation>
-                </xsd:annotation>
-                <xsd:simpleType>
-                    <xsd:restriction base="xsd:NMTOKEN">
-                        <xsd:enumeration value="QUEUE"/>
-                        <xsd:enumeration value="TOPIC"/>
-                    </xsd:restriction>
-                </xsd:simpleType>
-            </xsd:attribute>
-            <xsd:attribute name="selector" type="xsd:string">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A message-selector allows multiple listeners to register with the
-                        same queue/topic, but
-                        they will filter on this message-selector.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="true" name="persistent" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If false, JMS messages will be sent non-persistent. Default is to send messages with DeliveryMode.PERSISTENT.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="AUTO_ACKNOWLEDGE" name="acknowledge-mode" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">
-                        JMS Session acknowledge mode. Can be on of AUTO_ACKNOWLEDGE (default), CLIENT_ACKNOWLEDGE, or 
-                        DUPS_OK_ACKNOWLEDGE.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="jms-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A JMS-Bus is a specific instance of a bus using the JMS protocol.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:jms-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:complexType name="jms-provider-type">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing JMS.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexContent>
-            <xsd:extension base="jesb:bus-provider">
-                <xsd:attribute name="connection-factory" type="xsd:string" use="required">
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The connection-factory used to lookup queues/topics in a
-                            naming directory (JNDI)
-                        </xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-                <xsd:attribute name="jndi-context-factory" type="xsd:string">
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The context factory class the JBossESB will use to do
-                            naming lookups.
-                        </xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-                <xsd:attribute name="jndi-pkg-prefix" type="xsd:string">
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The pkg-prefix which will be used to do naming lookups. It
-                            is left empty by default.
-                        </xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-                <xsd:attribute name="jndi-URL" type="xsd:anyURI">
-                    <xsd:annotation>
-                        <xsd:documentation xml:lang="en">The URL used to do naming lookups.</xsd:documentation>
-                    </xsd:annotation>
-                </xsd:attribute>
-            </xsd:extension>
-        </xsd:complexContent>
-    </xsd:complexType>
-    <xsd:element name="jms-provider" substitutionGroup="jesb:provider" type="jesb:jms-provider-type"/>
-    
-    <xsd:element name="jms-jca-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing JMS through JCA inflow.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:jms-provider-type">
-                    <xsd:attribute name="adapter" type="xsd:string">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The artifact containing the resource adapter.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="endpointClass" type="xsd:string">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The class name of the JCA endpoint.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="messagingType" type="xsd:string">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The class name of the messaging specific interface.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="jcaBridge" type="xsd:string">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The class name of the JCA Bridge.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="transacted" type="xsd:boolean">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The transacted flag.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="jms-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific listener using the jms protocol.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:jms-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		JMS Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       FS Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-    <xsd:element name="fs-message-filter">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A FS filter.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:attribute name="directory" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file share that is monitored for incoming new files.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute name="input-suffix" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file suffix used to filter files targeted for comsumption by
-                        the ESB (note: add the dot, so something like '.esbIn').
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default=".esbInProcess" name="work-suffix" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file suffix used while the file is being process, so that
-                        another thread or process won't pick it up too.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="true" name="post-delete" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If true, the file will be deleted after it is processed. Note that
-                        in that case post-directory and post-suffix have no effect.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="processed" name="post-directory" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file share to which the file will be moved after it is
-                        processed by the ESB
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default=".esbDone" name="post-suffix" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file suffix which will be added to the file name after it is
-                        processed.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="true" name="error-delete" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If true, the file will be deleted if an error occurs during
-                        processing. Note that in that case error-directory and error-suffix have no effect.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="processed" name="error-directory" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file share to which the file will be moved after when an error
-                        occurs during processing.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default=".esbERROR" name="error-suffix" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The file suffix which will be added to the file name after an error
-                        occurs during processing.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="fs-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A Fs-Bus is a specific instance of a bus using the File protocol.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:fs-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="fs-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing a file system (local fileshare
-                or NAS).
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider"/>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="fs-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific listener using the file protocol.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:abstract-scheduled-listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:fs-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-   <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-      FTP Type Implementations.
-   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-   <xsd:element name="ftp-message-filter">
-      <xsd:annotation>
-         <xsd:documentation xml:lang="en">A FTP filter.</xsd:documentation>
-      </xsd:annotation>
-      <xsd:complexType>
-         <xsd:attribute name="directory" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The ftp directory that is monitored for incoming new files.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="username" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The username used to access the ftp server</xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="password" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The password used to access the ftp server.</xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="input-suffix" type="xsd:string" use="required">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The file suffix used to filter files targeted for comsumption by
-                  the ESB (note: add the dot, so something like '.esbIn').
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default=".esbInProcess" name="work-suffix" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The file suffix used while the file is being process, so that
-                  another thread or process won't pick it up too.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default="true" name="post-delete" type="xsd:boolean" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">If true, the file will be deleted after it is processed. Note that
-                  in that case post-directory and post-suffix have no effect.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="post-directory" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The ftp directory to which the file will be moved after it is
-                  processed by the ESB
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default=".esbDone" name="post-suffix" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The file suffix which will be added to the file name after it is
-                  processed.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default="true" name="error-delete" type="xsd:boolean" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">If true, the file will be deleted if an error occurs during
-                  processing. Note that in that case error-directory and error-suffix have no effect.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default="processed" name="error-directory" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The ftp directory to which the file will be moved after when an
-                  error occurs during processing.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default=".esbERROR" name="error-suffix" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The file suffix which will be added to the file name after an error
-                  occurs during processing.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute name="passive" type="xsd:boolean" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">This is an ftp server setting which may vary per session.
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-         <xsd:attribute default="ftp" name="protocol" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The protocol, can be sftp (SSH File Transfer Protocol), ftps (FTP
-                  over SLL) and ftp (to which it defaults).
-               </xsd:documentation>
-            </xsd:annotation>
-            <xsd:simpleType>
-               <xsd:restriction base="xsd:NMTOKEN">
-                  <xsd:enumeration value="ftp"/>
-                  <xsd:enumeration value="ftps"/>
-                  <xsd:enumeration value="sftp"/>
-               </xsd:restriction>
-            </xsd:simpleType>
-         </xsd:attribute>
-         <xsd:attribute name="certificate-url" type="xsd:string" use="optional">
-            <xsd:annotation>
-               <xsd:documentation xml:lang="en">The url to a certificate, which can be needed for secure protocols
-                  (sftp and ftps).
-               </xsd:documentation>
-            </xsd:annotation>
-         </xsd:attribute>
-			<xsd:attribute default="false" name="read-only" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If true, the ftp server does not permit write opertations on files.
-						Note that in this case the following properties have no effect: work-suffix, post-delete,
-						post-directory, post-suffix, error-delete, error-directory, and error-suffix.
-                    </xsd:documentation>
-                </xsd:annotation>
-	        </xsd:attribute>
-      </xsd:complexType>
-   </xsd:element>
-    <xsd:element name="ftp-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A FTP-Bus is a specific instance of a bus using the FTP protocol.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:ftp-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="ftp-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing a ftp service.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider">
-                    <xsd:attribute name="hostname" type="xsd:string" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The ftp hostname, as it can be resolved by DNS.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="ftp-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific listener using the ftp protocol.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:abstract-scheduled-listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:ftp-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<xsd:element name="jms-message-filter">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A JMS filter can add information to a Queue, or Topic.
+				For example you can defined a message-selector. However,
+				you can also push the queue name and type into this
+				filter given you did not already specify them in the
+				jms-bus.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:attribute name="dest-name" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						Name of the Queue of Topic.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="dest-type" use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A Queue delivers a message once, a topic
+						broadcasts a message to all registered
+						listeners.
+					</xsd:documentation>
+				</xsd:annotation>
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:NMTOKEN">
+						<xsd:enumeration value="QUEUE" />
+						<xsd:enumeration value="TOPIC" />
+					</xsd:restriction>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="selector" type="xsd:string">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A message-selector allows multiple listeners to
+						register with the same queue/topic, but they
+						will filter on this message-selector.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="persistent"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If false, JMS messages will be sent
+						non-persistent. Default is to send messages with
+						DeliveryMode.PERSISTENT.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="AUTO_ACKNOWLEDGE"
+				name="acknowledge-mode" type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						JMS Session acknowledge mode. Can be on of
+						AUTO_ACKNOWLEDGE (default), CLIENT_ACKNOWLEDGE,
+						or DUPS_OK_ACKNOWLEDGE.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="jms-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A JMS-Bus is a specific instance of a bus using the JMS
+				protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:jms-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:complexType name="jms-provider-type">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing JMS.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexContent>
+			<xsd:extension base="jesb:bus-provider">
+				<xsd:attribute name="connection-factory"
+					type="xsd:string" use="required">
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The connection-factory used to lookup
+							queues/topics in a naming directory (JNDI)
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+				<xsd:attribute name="jndi-context-factory"
+					type="xsd:string">
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The context factory class the JBossESB will
+							use to do naming lookups.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+				<xsd:attribute name="jndi-pkg-prefix"
+					type="xsd:string">
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The pkg-prefix which will be used to do
+							naming lookups. It is left empty by default.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+				<xsd:attribute name="jndi-URL" type="xsd:anyURI">
+					<xsd:annotation>
+						<xsd:documentation xml:lang="en">
+							The URL used to do naming lookups.
+						</xsd:documentation>
+					</xsd:annotation>
+				</xsd:attribute>
+			</xsd:extension>
+		</xsd:complexContent>
+	</xsd:complexType>
+	<xsd:element name="jms-provider" substitutionGroup="jesb:provider"
+		type="jesb:jms-provider-type" />
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       SQL Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-    <xsd:element name="sql-message-filter">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A SQL filter.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:attribute name="tablename" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The table in which esb message are stored.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="message_id" name="message-id-column" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A unique key (PK) in the table.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="message" name="message-column" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The field that holds the serialized message.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="status" name="status-column" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">This column contents ('P', 'W', 'E' or 'D') indicates if the row is
-                        pending (P), in process (W), in error(E) or done (D) if postDelete and/or errorDelete are 'true'
-                        rows might be deleted
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-			<xsd:attribute name="where-condition" use="optional" type="xsd:string" default="">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A where clause, not including the word where, which is applied
-						to the query.
+	<xsd:element name="jms-jca-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing JMS through
+				JCA inflow.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:jms-provider-type">
+					<xsd:attribute name="adapter" type="xsd:string">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The artifact containing the resource
+								adapter.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="endpointClass"
+						type="xsd:string">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The class name of the JCA endpoint.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="messagingType"
+						type="xsd:string">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The class name of the messaging specific
+								interface.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="jcaBridge" type="xsd:string">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The class name of the JCA Bridge.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="transacted"
+						type="xsd:boolean">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The transacted flag.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="jms-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific listener using the jms protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:jms-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		FS Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="fs-message-filter">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A FS filter.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:attribute name="directory" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file share that is monitored for incoming
+						new files.
 					</xsd:documentation>
-                </xsd:annotation>
+				</xsd:annotation>
 			</xsd:attribute>
-			<xsd:attribute name="order-by" use="optional" type="xsd:string" default="">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A where clause, not including the word where, which is applied
-						to the query.
+			<xsd:attribute name="input-suffix" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix used to filter files targeted
+						for comsumption by the ESB (note: add the dot,
+						so something like '.esbIn').
 					</xsd:documentation>
-                </xsd:annotation>
+				</xsd:annotation>
 			</xsd:attribute>
-            <xsd:attribute name="insert-timestamp-column" use="optional" type="xsd:string" default="insert_timestamp">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">Holds the timestamp when the record was inserted.
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="true" name="post-delete" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If true, records will be deleted after processing.((e.g. no rows
-                        with a 'D' for done, in column defined in 'status_column')
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="true" name="error-delete" type="xsd:boolean" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">If true, records in error will be deleted after attempted picked up
-                        for processing.(e.g. no rows with a 'E' for error, in column defined in 'status_column')
-                    </xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="sql-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A SQL-Bus is a specific instance of a bus using the SQL protocol.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:sql-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="sql-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing a db service.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider">
-					<xsd:attribute name="datasource" type="xsd:string" use="optional">
+			<xsd:attribute default=".esbInProcess" name="work-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix used while the file is being
+						process, so that another thread or process won't
+						pick it up too.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="post-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, the file will be deleted after it is
+						processed. Note that in that case post-directory
+						and post-suffix have no effect.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="processed" name="post-directory"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file share to which the file will be moved
+						after it is processed by the ESB
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default=".esbDone" name="post-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix which will be added to the file
+						name after it is processed.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="error-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, the file will be deleted if an error
+						occurs during processing. Note that in that case
+						error-directory and error-suffix have no effect.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="processed" name="error-directory"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file share to which the file will be moved
+						after when an error occurs during processing.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default=".esbERROR" name="error-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix which will be added to the file
+						name after an error occurs during processing.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="fs-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A Fs-Bus is a specific instance of a bus using the File
+				protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:fs-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="fs-provider" substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing a file
+				system (local fileshare or NAS).
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider" />
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="fs-listener" substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific listener using the file protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension
+					base="jesb:abstract-scheduled-listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:fs-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		FTP Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="ftp-message-filter">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A FTP filter.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:attribute name="directory" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The ftp directory that is monitored for incoming
+						new files.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="username" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The username used to access the ftp server
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="password" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The password used to access the ftp server.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="input-suffix" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix used to filter files targeted
+						for comsumption by the ESB (note: add the dot,
+						so something like '.esbIn').
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default=".esbInProcess" name="work-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix used while the file is being
+						process, so that another thread or process won't
+						pick it up too.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="post-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, the file will be deleted after it is
+						processed. Note that in that case post-directory
+						and post-suffix have no effect.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="post-directory" type="xsd:string"
+				use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The ftp directory to which the file will be
+						moved after it is processed by the ESB
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default=".esbDone" name="post-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix which will be added to the file
+						name after it is processed.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="error-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, the file will be deleted if an error
+						occurs during processing. Note that in that case
+						error-directory and error-suffix have no effect.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="processed" name="error-directory"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The ftp directory to which the file will be
+						moved after when an error occurs during
+						processing.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default=".esbERROR" name="error-suffix"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The file suffix which will be added to the file
+						name after an error occurs during processing.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="passive" type="xsd:boolean"
+				use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						This is an ftp server setting which may vary per
+						session.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="ftp" name="protocol"
+				use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The protocol, can be sftp (SSH File Transfer
+						Protocol), ftps (FTP over SLL) and ftp (to which
+						it defaults).
+					</xsd:documentation>
+				</xsd:annotation>
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:NMTOKEN">
+						<xsd:enumeration value="ftp" />
+						<xsd:enumeration value="ftps" />
+						<xsd:enumeration value="sftp" />
+					</xsd:restriction>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="certificate-url" type="xsd:string"
+				use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The url to a certificate, which can be needed
+						for secure protocols (sftp and ftps).
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="false" name="read-only"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, the ftp server does not permit write
+						opertations on files. Note that in this case the
+						following properties have no effect:
+						work-suffix, post-delete, post-directory,
+						post-suffix, error-delete, error-directory, and
+						error-suffix.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="ftp-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A FTP-Bus is a specific instance of a bus using the FTP
+				protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:ftp-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="ftp-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing a ftp
+				service.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider">
+					<xsd:attribute name="hostname" type="xsd:string"
+						use="required">
 						<xsd:annotation>
-							<xsd:documentation xml:lang="en">The name of the datasource.</xsd:documentation>
+							<xsd:documentation xml:lang="en">
+								The ftp hostname, as it can be resolved
+								by DNS.
+							</xsd:documentation>
 						</xsd:annotation>
 					</xsd:attribute>
-                    <xsd:attribute name="url" type="xsd:string" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The url needed to connect to the db.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="driver" type="xsd:string" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The driver needed to connect to the db.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="username" type="xsd:string" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The username used to access the database.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                    <xsd:attribute name="password" type="xsd:string" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The password used to access the database.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="sql-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific listener using the SQL protocol.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="1" minOccurs="0" ref="jesb:sql-message-filter"/>
-                    </xsd:sequence>
-                    <xsd:attribute default="10" name="poll-frequency-seconds" use="optional">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The frequency with which this listener polls the db in
-                                seconds. Defaults to 10 seconds.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                        <xsd:simpleType>
-                            <xsd:restriction base="xsd:integer">
-                                <xsd:minExclusive value="0"/>
-                            </xsd:restriction>
-                        </xsd:simpleType>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="ftp-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific listener using the ftp protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension
+					base="jesb:abstract-scheduled-listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:ftp-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-       Hibernate Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-    <xsd:element name="hibernate-message-filter">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A Hibernate filter.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:attribute name="classname" type="xsd:string" use="required">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">The class name to monitor.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-            <xsd:attribute default="message_id" name="event" type="xsd:string" use="optional">
-                <xsd:annotation>
-                    <xsd:documentation xml:lang="en">A comma-separated list of events to intercept.</xsd:documentation>
-                </xsd:annotation>
-            </xsd:attribute>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="hibernate-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A hibernate-bus is a specific instance of a bus using the Hibernate protocol.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="unbounded" minOccurs="1" ref="jesb:hibernate-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="hibernate-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific instance of a provider, providing a hibernate service.
-            </xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider">
-                    <xsd:attribute name="hibernate-cfg-file" type="xsd:string" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The Hibernate configuration file to use.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="hibernate-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">A specific listener using the hibernate protocol.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener">
-                    <xsd:sequence>
-                        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="jesb:hibernate-message-filter"/>
-                    </xsd:sequence>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		SQL Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="sql-message-filter">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A SQL filter.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:attribute name="tablename" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The table in which esb message are stored.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="message_id" name="message-id-column"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A unique key (PK) in the table.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="message" name="message-column"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The field that holds the serialized message.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="status" name="status-column"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						This column contents ('P', 'W', 'E' or 'D')
+						indicates if the row is pending (P), in process
+						(W), in error(E) or done (D) if postDelete
+						and/or errorDelete are 'true' rows might be
+						deleted
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="where-condition" use="optional"
+				type="xsd:string" default="">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A where clause, not including the word where,
+						which is applied to the query.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="order-by" use="optional"
+				type="xsd:string" default="">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A where clause, not including the word where,
+						which is applied to the query.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute name="insert-timestamp-column" use="optional"
+				type="xsd:string" default="insert_timestamp">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						Holds the timestamp when the record was
+						inserted.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="post-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, records will be deleted after
+						processing.((e.g. no rows with a 'D' for done,
+						in column defined in 'status_column')
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="true" name="error-delete"
+				type="xsd:boolean" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						If true, records in error will be deleted after
+						attempted picked up for processing.(e.g. no rows
+						with a 'E' for error, in column defined in
+						'status_column')
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="sql-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A SQL-Bus is a specific instance of a bus using the SQL
+				protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:sql-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="sql-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing a db
+				service.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider">
+					<xsd:attribute name="datasource" type="xsd:string"
+						use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The name of the datasource.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="url" type="xsd:string"
+						use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The url needed to connect to the db.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="driver" type="xsd:string"
+						use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The driver needed to connect to the db.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="username" type="xsd:string"
+						use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The username used to access the
+								database.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="password" type="xsd:string"
+						use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The password used to access the
+								database.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+					<xsd:attribute name="transacted"
+						type="xsd:boolean">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The transacted flag.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="sql-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific listener using the SQL protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="1" minOccurs="0"
+							ref="jesb:sql-message-filter" />
+					</xsd:sequence>
+					<xsd:attribute default="10"
+						name="poll-frequency-seconds" use="optional">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The frequency with which this listener
+								polls the db in seconds. Defaults to 10
+								seconds.
+							</xsd:documentation>
+						</xsd:annotation>
+						<xsd:simpleType>
+							<xsd:restriction base="xsd:integer">
+								<xsd:minExclusive value="0" />
+							</xsd:restriction>
+						</xsd:simpleType>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Hibernate Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="hibernate-message-filter">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A Hibernate filter.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:attribute name="classname" type="xsd:string"
+				use="required">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						The class name to monitor.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+			<xsd:attribute default="message_id" name="event"
+				type="xsd:string" use="optional">
+				<xsd:annotation>
+					<xsd:documentation xml:lang="en">
+						A comma-separated list of events to intercept.
+					</xsd:documentation>
+				</xsd:annotation>
+			</xsd:attribute>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="hibernate-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A hibernate-bus is a specific instance of a bus using
+				the Hibernate protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:sequence>
+						<xsd:element maxOccurs="unbounded" minOccurs="1"
+							ref="jesb:hibernate-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="hibernate-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific instance of a provider, providing a hibernate
+				service.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider">
+					<xsd:attribute name="hibernate-cfg-file"
+						type="xsd:string" use="required">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The Hibernate configuration file to use.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="hibernate-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				A specific listener using the hibernate protocol.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener">
+					<xsd:sequence>
+						<xsd:element maxOccurs="unbounded" minOccurs="0"
+							ref="jesb:hibernate-message-filter" />
+					</xsd:sequence>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
 
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-    JBoss Remoting Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-    <xsd:element name="jbr-bus" substitutionGroup="jesb:bus">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">JBoss Remoting Bus</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus">
-                    <xsd:attribute name="port" type="xsd:int" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">JBoss Remoting Server listen port.</xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="jbr-provider" substitutionGroup="jesb:provider">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">JBoss Remoting Provider.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:bus-provider">
-                    <xsd:attribute name="protocol" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">Jboss Remoting Listener/Server protocol.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                        <xsd:simpleType>
-                            <xsd:restriction base="xsd:NMTOKEN">
-                                <xsd:enumeration value="http"/>
-                                <xsd:enumeration value="socket"/>
-                            </xsd:restriction>
-                        </xsd:simpleType>
-                    </xsd:attribute>
-                    <xsd:attribute name="host" type="xsd:string">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">JBoss Remoting Server bind address. When not specified,
-                                defaults to InetAddress.getLocalHost().getHostName().
-                            </xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    <xsd:element name="jbr-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">JBoss Remoting Listener.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener"/>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
 
-    <!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
-    Groovy Gateway Type Implementations.
-    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
-    <xsd:element name="groovy-listener" substitutionGroup="jesb:listener">
-        <xsd:annotation>
-            <xsd:documentation xml:lang="en">Groovy Listener.</xsd:documentation>
-        </xsd:annotation>
-        <xsd:complexType>
-            <xsd:complexContent>
-                <xsd:extension base="jesb:listener">
-                    <xsd:attribute name="script" type="xsd:string" use="required">
-                        <xsd:annotation>
-                            <xsd:documentation xml:lang="en">The path (classpath) to the Groovy Gateway script. Or, the
-                                alias for the pre-packaged Groovy Gateway script.
-                            </xsd:documentation>
-                        </xsd:annotation>
-                    </xsd:attribute>
-                </xsd:extension>
-            </xsd:complexContent>
-        </xsd:complexType>
-    </xsd:element>
-    
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		JBoss Remoting Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="jbr-bus" substitutionGroup="jesb:bus">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				JBoss Remoting Bus
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus">
+					<xsd:attribute name="port" type="xsd:int"
+						use="required">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								JBoss Remoting Server listen port.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="jbr-provider"
+		substitutionGroup="jesb:provider">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				JBoss Remoting Provider.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:bus-provider">
+					<xsd:attribute name="protocol" use="required">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								Jboss Remoting Listener/Server protocol.
+							</xsd:documentation>
+						</xsd:annotation>
+						<xsd:simpleType>
+							<xsd:restriction base="xsd:NMTOKEN">
+								<xsd:enumeration value="http" />
+								<xsd:enumeration value="socket" />
+							</xsd:restriction>
+						</xsd:simpleType>
+					</xsd:attribute>
+					<xsd:attribute name="host" type="xsd:string">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								JBoss Remoting Server bind address. When
+								not specified, defaults to
+								InetAddress.getLocalHost().getHostName().
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+	<xsd:element name="jbr-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				JBoss Remoting Listener.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener" />
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+
+	<!-- 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
+		Groovy Gateway Type Implementations.
+		88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-->
+	<xsd:element name="groovy-listener"
+		substitutionGroup="jesb:listener">
+		<xsd:annotation>
+			<xsd:documentation xml:lang="en">
+				Groovy Listener.
+			</xsd:documentation>
+		</xsd:annotation>
+		<xsd:complexType>
+			<xsd:complexContent>
+				<xsd:extension base="jesb:listener">
+					<xsd:attribute name="script" type="xsd:string"
+						use="required">
+						<xsd:annotation>
+							<xsd:documentation xml:lang="en">
+								The path (classpath) to the Groovy
+								Gateway script. Or, the alias for the
+								pre-packaged Groovy Gateway script.
+							</xsd:documentation>
+						</xsd:annotation>
+					</xsd:attribute>
+				</xsd:extension>
+			</xsd:complexContent>
+		</xsd:complexType>
+	</xsd:element>
+
 </xsd:schema>

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/SqlListenerMapper.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/SqlListenerMapper.java	2007-10-31 17:19:59 UTC (rev 16210)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/config/mappers/SqlListenerMapper.java	2007-10-31 17:28:56 UTC (rev 16211)
@@ -94,6 +94,9 @@
 			}
 		}
         listenerNode.setAttribute("pollLatencySeconds", String.valueOf(listener.getPollFrequencySeconds()));
+        if (provider.isSetTransacted()) {
+            listenerNode.setAttribute(ListenerTagNames.TRANSACTED_TAG, Boolean.toString(provider.getTransacted())) ;
+        }
 		// Map the standard listener attributes - common across all listener types...
 		MapperUtil.mapDefaultAttributes(listener, listenerNode, model);
 		// Map the <property> elements targeted at the listener - from the listener itself.

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-10-31 17:19:59 UTC (rev 16210)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-10-31 17:28:56 UTC (rev 16211)
@@ -49,6 +49,8 @@
 import org.jboss.soa.esb.addressing.MalformedEPRException;
 import org.jboss.soa.esb.addressing.eprs.JDBCEpr;
 import org.jboss.soa.esb.common.Environment;
+import org.jboss.soa.esb.common.TransactionStrategy;
+import org.jboss.soa.esb.common.TransactionStrategyException;
 import org.jboss.soa.esb.couriers.Courier;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.couriers.CourierFactory;
@@ -95,6 +97,11 @@
      */
     private static final long serialVersionUID = -4394272471377134121L;
 
+    /**
+     * The current transaction strategy
+     */
+    private TransactionStrategy transactionStrategy ;
+    
     public SqlTableGatewayListener(ConfigTree config)
             throws ConfigurationException {
         super(config);
@@ -150,93 +157,107 @@
                     + Thread.currentThread().getName());
         }
 
-        do {
-            for (Map<String, Object> row : pollForCandidates()) {
-                _currentRow = row;
-                // Try to mark as 'in process' - if unsuccessful, somebody else
-                // got it first
-                if (!changeStatusToWorking())
-                    continue;
-
-                Throwable thrown = null;
-                String text = null;
+        try {
+            do {
+                transactionStrategy.begin() ;
+                boolean rollbackOnly = true ;
                 try {
-                    Object obj = _processMethod.invoke(_composer, new Object[]
-                            {_currentRow});
-                    if (null == obj) {
-                        _logger.warn("Action class method <"
-                                + _processMethod.getName()
-                                + "> returned a null object");
-                        continue;
-                    }
-                    Message message = (Message) obj;
-                    Map<String, Object> params = new HashMap<String, Object>();
-
-                    params.put(Environment.GATEWAY_CONFIG, _config);
-
-                    message = FilterManager.getInstance().doOutputWork(message, params);
-
-                    boolean bSent = false;
-                    for (EPR current : _targetEprs) {
-                        _courier = CourierFactory.getCourier(current);
+                    for (Map<String, Object> row : pollForCandidates()) {
+                        _currentRow = row;
+                        // Try to mark as 'in process' - if unsuccessful, somebody else
+                        // got it first
+                        if (!changeStatusToWorking())
+                            continue;
+        
+                        Throwable thrown = null;
+                        String text = null;
                         try {
-                            if (_courier.deliver(message)) {
-                                bSent = true;
-                                break;
+                            Object obj = _processMethod.invoke(_composer, new Object[]
+                                    {_currentRow});
+                            if (null == obj) {
+                                _logger.warn("Action class method <"
+                                        + _processMethod.getName()
+                                        + "> returned a null object");
+                                continue;
                             }
+                            Message message = (Message) obj;
+                            Map<String, Object> params = new HashMap<String, Object>();
+        
+                            params.put(Environment.GATEWAY_CONFIG, _config);
+        
+                            message = FilterManager.getInstance().doOutputWork(message, params);
+        
+                            boolean bSent = false;
+                            for (EPR current : _targetEprs) {
+                                _courier = CourierFactory.getCourier(current);
+                                try {
+                                    if (_courier.deliver(message)) {
+                                        bSent = true;
+                                        break;
+                                    }
+                                }
+                                finally {
+                                    CourierUtil.cleanCourier(_courier);
+                                }
+                            }
+                            if (!bSent) {
+                                text = "Target service <" + _targetServiceCategory
+                                        + "," + _targetServiceName
+                                        + "> is not registered";
+                                thrown = new Exception(text);
+                            }
                         }
-                        finally {
-                            CourierUtil.cleanCourier(_courier);
+                        catch (InvocationTargetException e) {
+                            thrown = e;
+                            text = "Problems invoking method <"
+                                    + _processMethod.getName() + ">";
                         }
+                        catch (IllegalAccessException e) {
+                            thrown = e;
+                            text = "Problems invoking method <"
+                                    + _processMethod.getName() + ">";
+                        }
+                        catch (ClassCastException e) {
+                            thrown = e;
+                            text = "Action class method <" + _processMethod.getName()
+                                    + "> returned a non Message object";
+                        }
+                        catch (CourierException e) {
+                            thrown = e;
+                            text = "Courier <" + _courier.getClass().getName()
+                                    + ".deliverAsync(Message) FAILED";
+                        }
+                        catch (MalformedEPRException ex) {
+                            thrown = ex;
+                            text = "Courier <"
+                                    + _courier.getClass().getName()
+                                    + ".deliverAsync(Message) FAILED with malformed EPR.";
+                        }
+        
+                        if (null == thrown) {
+                            if (_deleteAfterOK)
+                                deleteCurrentRow();
+                            else
+                                changeStatusToDone();
+                        } else {
+                            _logger.error(text);
+                            _logger.debug(text, thrown);
+                            changeStatusToError();
+                        }
                     }
-                    if (!bSent) {
-                        text = "Target service <" + _targetServiceCategory
-                                + "," + _targetServiceName
-                                + "> is not registered";
-                        thrown = new Exception(text);
+                    rollbackOnly = false ;
+                } finally {
+                    if (rollbackOnly) {
+                        transactionStrategy.rollbackOnly() ;
                     }
+                    transactionStrategy.terminate() ;
                 }
-                catch (InvocationTargetException e) {
-                    thrown = e;
-                    text = "Problems invoking method <"
-                            + _processMethod.getName() + ">";
-                }
-                catch (IllegalAccessException e) {
-                    thrown = e;
-                    text = "Problems invoking method <"
-                            + _processMethod.getName() + ">";
-                }
-                catch (ClassCastException e) {
-                    thrown = e;
-                    text = "Action class method <" + _processMethod.getName()
-                            + "> returned a non Message object";
-                }
-                catch (CourierException e) {
-                    thrown = e;
-                    text = "Courier <" + _courier.getClass().getName()
-                            + ".deliverAsync(Message) FAILED";
-                }
-                catch (MalformedEPRException ex) {
-                    thrown = ex;
-                    text = "Courier <"
-                            + _courier.getClass().getName()
-                            + ".deliverAsync(Message) FAILED with malformed EPR.";
-                }
-
-                if (null == thrown) {
-                    if (_deleteAfterOK)
-                        deleteCurrentRow();
-                    else
-                        changeStatusToDone();
-                } else {
-                    _logger.error(text);
-                    _logger.debug(text, thrown);
-                    changeStatusToError();
-                }
             }
+            while (!waitForRunningStateChange(ManagedLifecycleThreadState.STOPPING,
+                    _sleepBetweenPolls));
+        } catch (final TransactionStrategyException tse) {
+            _logger.warn("Unexpected transaction strategy exception", tse) ;
         }
-        while (!waitForRunningStateChange(ManagedLifecycleThreadState.STOPPING,
-                _sleepBetweenPolls));
 
         if (_logger.isDebugEnabled()) {
             _logger
@@ -379,6 +400,9 @@
                 }
             }
         }
+        
+        final boolean transacted = _config.getBooleanAttribute(ListenerTagNames.TRANSACTED_TAG, false) ;
+        transactionStrategy = TransactionStrategy.getTransactionStrategy(transacted) ;
     } // ________________________________
 
     protected void prepareStatements() throws SQLException {

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml	2007-10-31 17:19:59 UTC (rev 16210)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml	2007-10-31 17:28:56 UTC (rev 16211)
@@ -5,14 +5,15 @@
      -->
      
      <providers>
-          <jms-jca-provider name="Default-JMS-JCA-Provider" connection-factory="ConnectionFactory">          
+     	  <!-- change the following element to jms-jca-provider to enable transactional context  -->
+          <jms-provider name="DeadMessageQueue-JMS-Provider" connection-factory="ConnectionFactory">          
               <jms-bus busid="DeadMessageQueue">
                   <jms-message-filter
                       dest-type="QUEUE"
                       dest-name="queue/DeadMessageQueue"
                   />
               </jms-bus>
-          </jms-jca-provider>
+          </jms-provider>
           <jms-provider name="Default-JMS-Provider" connection-factory="ConnectionFactory">          
 			 <jms-bus busid="DataCollectorQueue">
                   <jms-message-filter
@@ -113,8 +114,9 @@
         </service>
         <service category="JBossESB-Internal" name="RedeliverService" description="Scheduled Service to Redeliver Messages">
             <listeners>
+                <!--  add  transacted="true" attribute to enable transacted redelivery -->
                 <scheduled-listener name="redeliver-scheduled-listener" scheduleidref="5-min-trigger"
-                    event-processor="org.jboss.soa.esb.schedule.RedeliverEventMessageComposer" transacted="true"/>
+                    event-processor="org.jboss.soa.esb.schedule.RedeliverEventMessageComposer"/>
             </listeners>
             <actions mep="OneWay">
                 <action name="RedeliverMessagesAction" class="org.jboss.soa.esb.actions.MessageRedeliverer">




More information about the jboss-svn-commits mailing list