[jboss-cvs] JBoss Messaging SVN: r7887 - in branches/Branch_1_4/integration: EAP5 and 16 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 2 00:01:30 EST 2009


Author: gaohoward
Date: 2009-11-02 00:01:30 -0500 (Mon, 02 Nov 2009)
New Revision: 7887

Added:
   branches/Branch_1_4/integration/EAP5/
   branches/Branch_1_4/integration/EAP5/.classpath
   branches/Branch_1_4/integration/EAP5/etc/
   branches/Branch_1_4/integration/EAP5/etc/META-INF/
   branches/Branch_1_4/integration/EAP5/etc/VERSION-PRE-SUBSTITUTE
   branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client-debug.xml
   branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client.xml
   branches/Branch_1_4/integration/EAP5/etc/aop-messaging-server.xml
   branches/Branch_1_4/integration/EAP5/etc/default.mf
   branches/Branch_1_4/integration/EAP5/etc/prepare-aop.xml
   branches/Branch_1_4/integration/EAP5/etc/remoting/
   branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-bisocket-service.xml
   branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-http-service.xml
   branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-servlet-service.xml
   branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-sslbisocket-service.xml
   branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/
   branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/WEB-INF/
   branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/WEB-INF/web.xml
   branches/Branch_1_4/integration/EAP5/etc/server/
   branches/Branch_1_4/integration/EAP5/etc/server/default/
   branches/Branch_1_4/integration/EAP5/etc/server/default/config/
   branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-roles.properties
   branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-users.properties
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/clustered-hsqldb-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/connection-factories-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/db2-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/destinations-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/hsqldb-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/jboss-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/messaging-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mssql-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mysql-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/ndb-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/null-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/oracle-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/postgresql-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/sybase-persistence-service.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bootstrap-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bridge-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/JDBCPersistenceManager-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/JMSUserManager-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/MessagingPostOffice-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/NullPersistenceManager-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/Queue-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/ServerPeer-xmbean.xml
   branches/Branch_1_4/integration/EAP5/etc/xmdesc/Topic-xmbean.xml
   branches/Branch_1_4/integration/EAP5/src/
   branches/Branch_1_4/integration/EAP5/tests-src/
   branches/Branch_1_4/integration/EAP5/tests-src/org/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/LocalTestServer.java
   branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/ServiceContainer.java
Log:
JBMESSAGING-1755


Added: branches/Branch_1_4/integration/EAP5/.classpath
===================================================================
--- branches/Branch_1_4/integration/EAP5/.classpath	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/.classpath	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="docs/examples/bridge/src"/>
+	<classpathentry kind="src" path="integration/AS5/tests-src"/>
+	<classpathentry kind="src" path="integration/AS5/src"/>
+	<classpathentry kind="src" path="docs/examples/common/src"/>
+	<classpathentry kind="src" path="docs/examples/distributed-queue/src"/>
+	<classpathentry kind="src" path="docs/examples/distributed-topic/src"/>
+	<classpathentry kind="src" path="docs/examples/ejb3mdb/src"/>
+	<classpathentry kind="src" path="docs/examples/http/src"/>
+	<classpathentry kind="src" path="docs/examples/mdb-failure/src"/>
+	<classpathentry kind="src" path="docs/examples/mdb/src"/>
+	<classpathentry kind="src" path="docs/examples/queue-failover/src"/>
+	<classpathentry kind="src" path="docs/examples/queue/src"/>
+	<classpathentry kind="src" path="docs/examples/secure-socket/src"/>
+	<classpathentry kind="src" path="docs/examples/stateless-clustered/src"/>
+	<classpathentry kind="src" path="docs/examples/stateless/src"/>
+	<classpathentry kind="src" path="docs/examples/topic/src"/>
+	<classpathentry kind="src" path="docs/examples/web-service/src"/>
+	<classpathentry kind="src" path="docs/examples/web-service/src-client"/>
+	<classpathentry kind="src" path="output/gen-parsers"/>
+	<classpathentry kind="src" path="src/main"/>
+	<classpathentry kind="src" path="tests/src"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/avalon-framework-cvs-20020806.jar"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/batik.jar"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/fop.jar"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/jai_codec.jar"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/jai_core.jar"/>
+	<classpathentry kind="lib" path="lib/docbook-support/support/lib/rowan-0.1.jar"/>
+	<classpathentry kind="lib" path="output/lib/jboss-messaging.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-log4j/lib/log4j.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-logging/lib/commons-logging.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-modeler/lib/commons-modeler.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/catalina-manager.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/catalina-optional.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/catalina.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/jasper-compiler-jdt.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/jasper-compiler.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/jasper-runtime.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/naming-resources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/servlets-default.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/servlets-invoker.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/servlets-webdav.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/tomcat-ajp.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/tomcat-apr.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/tomcat-coyote.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/tomcat-http.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-tomcat/lib/tomcat-util.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-xerces/lib/xercesImpl.jar"/>
+	<classpathentry kind="lib" path="thirdparty/commons-el/lib/commons-el.jar"/>
+	<classpathentry kind="lib" path="thirdparty/dom4j/lib/dom4j.jar"/>
+	<classpathentry kind="lib" path="thirdparty/hsqldb/lib/hsqldb.jar"/>
+	<classpathentry kind="lib" path="thirdparty/javassist/lib/javassist.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jrockit-pluggable-instrumentor.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/pluggable-instrumentor.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/backport-concurrent/lib/jboss-backport-concurrent.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossretro-rt/lib/jbossretro-rt.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossts14/lib/jbossjta-integration.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossts14/lib/jbossjta.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossts14/lib/jbossts-common.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossxb/lib/jboss-xml-binding-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jbossxb/lib/jboss-xml-binding.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/profiler/jvmti/lib/jboss-profiler-jvmti.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/remoting/lib/jboss-remoting-src.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/remoting/lib/jboss-remoting.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/serialization/lib/jboss-serialization.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/test14/lib/jboss-test14.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-common-jdbc-wrapper.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-common.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-j2ee.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-jca.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-jmx.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-local-jdbc.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-system.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-transaction-client.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-xml-binding.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jbosscx-client.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jbosssx-client.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jms-ra.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jnp-client.jar"/>
+	<classpathentry kind="lib" path="thirdparty/junit/lib/junit.jar"/>
+	<classpathentry kind="lib" path="thirdparty/oswego-concurrent/lib/concurrent.jar"/>
+	<classpathentry kind="lib" path="thirdparty/retrotranslator/lib/backport-util-concurrent.jar"/>
+	<classpathentry kind="lib" path="thirdparty/retrotranslator/lib/retrotranslator-runtime.jar"/>
+	<classpathentry kind="lib" path="thirdparty/retrotranslator/lib/retrotranslator-transformer.jar"/>
+	<classpathentry kind="lib" path="thirdparty/sun-javacc/lib/javacc.jar"/>
+	<classpathentry kind="lib" path="thirdparty/trove/lib/trove.jar"/>
+	<classpathentry kind="lib" path="thirdparty/wutka-dtdparser/lib/dtdparser.jar"/>
+	<classpathentry kind="lib" path="tools/lib/jbossbuild.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="output/lib/jboss-messaging-client.jar"/>
+	<classpathentry kind="var" path="ANT_HOME/lib/ant-junit.jar"/>
+	<classpathentry kind="var" path="ANT_HOME/lib/ant.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jgroups/lib/jgroups.jar" sourcepath="thirdparty/jgroups/lib/jgroups-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-log4j/lib/snmpTrapAppender.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-logging/lib/commons-logging-src.zip"/>
+	<classpathentry kind="lib" path="thirdparty/apache-xerces/lib/resolver.jar"/>
+	<classpathentry kind="lib" path="thirdparty/apache-xerces/lib/xml-apis.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-core/lib/jboss-common-core.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-core/lib/jboss-common-core-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-jdk/lib/jboss-logging-jdk.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-jdk/lib/jboss-logging-jdk-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-log4j/lib/jboss-logging-log4j.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-log4j/lib/jboss-logging-log4j-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-spi/lib/jboss-logging-spi.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/common-logging-spi/lib/jboss-logging-spi-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jboss-mdr/lib/jboss-mdr.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/jboss-mdr/lib/jboss-mdr-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jgroups/lib/jgroups-sources.jar"/>
+	<classpathentry kind="lib" path="thirdparty/oswego-concurrent/lib/concurrent-src.zip"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-standalone-aspect-library-jdk50.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-aop-asintegration-core.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-aop-asintegration-jmx.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-aop-asintegration-mc.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-aop-client.jar"/>
+	<classpathentry kind="lib" path="thirdparty/jboss/aop/lib/jboss-aop.jar"/>
+	<classpathentry kind="output" path="tests/output/classes"/>
+</classpath>

Added: branches/Branch_1_4/integration/EAP5/etc/VERSION-PRE-SUBSTITUTE
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/VERSION-PRE-SUBSTITUTE	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/VERSION-PRE-SUBSTITUTE	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,11 @@
+#
+# This is an automatically generated file. DO NOT EDIT!
+#
+jboss.messaging.jmsVersion=@JMS_VERSION@
+jboss.messaging.jmsMajorVersion=@JMS_VERSION_MAJOR@
+jboss.messaging.jmsMinorVersion=@JMS_VERSION_MINOR@
+jboss.messaging.jmsProviderName=@MODULE_NAME@
+jboss.messaging.providerVersion=@MODULE_VERSION@
+jboss.messaging.providerMajorVersion=@MESSAGING_VERSION_MAJOR@
+jboss.messaging.providerMinorVersion=@MESSAGING_VERSION_MINOR@
+jboss.messaging.providerIncrementingVersion=@MESSAGING_VERSION_INCREMENTING@

Added: branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client-debug.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client-debug.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client-debug.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE aop PUBLIC
+   "-//JBoss//DTD JBOSS AOP 1.0//EN"
+   "http://www.jboss.org/aop/dtd/jboss-aop_1_0.dtd">
+
+<aop>
+
+   <!-- This is a debug version of aop-messaging-client.xml to be used in testing and diagnostics.
+        It includes an ExceptionInterceptor and a ClientLogInterceptor for extra logging -->
+
+   <interceptor class="org.jboss.jms.client.container.ExceptionInterceptor" scope="PER_VM"/>
+   <interceptor class="org.jboss.jms.client.container.ClientLogInterceptor" scope="PER_VM"/>
+   <interceptor class="org.jboss.jms.client.container.ClosedInterceptor" scope="PER_INSTANCE"/>                  	
+   <interceptor class="org.jboss.jms.client.container.FailoverValveInterceptor" scope="PER_INSTANCE"/>
+
+   <aspect class="org.jboss.jms.client.container.StateCreationAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.ConsumerAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.ProducerAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.SessionAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.BrowserAspect" scope="PER_INSTANCE"/>
+   <aspect class="org.jboss.jms.client.container.ConnectionAspect" scope="PER_INSTANCE"/>
+   <aspect class="org.jboss.jms.client.container.ClusteringAspect" scope="PER_INSTANCE"/>
+ 
+   <!--
+       Clustered ConnectionFactory Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate->$implementing{org.jboss.jms.delegate.ConnectionFactoryDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate->createConnectionDelegate(..))">
+      <advice name="handleCreateConnectionDelegate" aspect="org.jboss.jms.client.container.ClusteringAspect"/>
+   </bind>
+
+   <!--
+        (Non-clustered) ConnectionFactory Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate->$implementing{org.jboss.jms.delegate.ConnectionFactoryDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate->createConnectionDelegate(..))">
+      <advice name="handleCreateConnectionDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+
+   <!--
+        Connection Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->$implementing{org.jboss.jms.delegate.ConnectionDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                     
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->$implementing{org.jboss.jms.delegate.ConnectionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->start())">
+       <advice name="handleStart" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->stop())">
+      <advice name="handleStop" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createConnectionConsumer(..))">
+      <advice name="handleCreateConnectionConsumer" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getClientID())">
+      <advice name="handleGetClientID" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->setClientID(..))">
+      <advice name="handleSetClientID" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getExceptionListener())">
+      <advice name="handleGetExceptionListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->setExceptionListener(..))">
+      <advice name="handleSetExceptionListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getConnectionMetaData())">
+      <advice name="handleGetConnectionMetaData" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createSessionDelegate(..))">
+      <advice name="handleCreateSessionDelegate" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>         
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->registerFailoverListener(..))">
+      <advice name="handleRegisterFailoverListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->unregisterFailoverListener(..))">
+      <advice name="handleUnregisterFailoverListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createSessionDelegate(..))">
+      <advice name="handleCreateSessionDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+
+   <!--
+        Session Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->$implementing{org.jboss.jms.delegate.SessionDelegate}(..))">   
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                   
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->$implementing{org.jboss.jms.delegate.SessionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind> 
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createMessage())">
+      <advice name="handleCreateMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createBytesMessage())">
+      <advice name="handleCreateBytesMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createMapMessage())">
+      <advice name="handleCreateMapMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createObjectMessage(..))">
+      <advice name="handleCreateObjectMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createStreamMessage())">
+      <advice name="handleCreateStreamMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createTextMessage(..))">
+      <advice name="handleCreateTextMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->setMessageListener(..))">
+      <advice name="handleSetMessageListener" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getMessageListener())">
+      <advice name="handleGetMessageListener" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->addAsfMessage(..))">
+      <advice name="handleAddAsfMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->run())">
+      <advice name="handleRun" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getAcknowledgeMode())">
+      <advice name="handleGetAcknowledgeMode" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getTransacted())">
+      <advice name="handleGetTransacted" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getXAResource())">
+      <advice name="handleGetXAResource" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->preDeliver(..))">
+      <advice name="handlePreDeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->postDeliver(..))">
+      <advice name="handlePostDeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->acknowledgeAll(..))">
+      <advice name="handleAcknowledgeAll" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->recover())">
+      <advice name="handleRecover" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->redeliver(..))">
+      <advice name="handleRedeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.SessionAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.SessionAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->commit())">
+      <advice name="handleCommit" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->rollback())">
+      <advice name="handleRollback" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->send(..))">
+      <advice name="handleSend" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createConsumerDelegate(..))">
+      <advice name="handleCreateConsumerDelegate" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createConsumerDelegate(..))">
+      <advice name="handleCreateConsumerDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createProducerDelegate(..))">
+      <advice name="handleCreateProducerDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createBrowserDelegate(..))">
+      <advice name="handleCreateBrowserDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   
+   <!--
+        Consumer Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->$implementing{org.jboss.jms.delegate.ConsumerDelegate}(..))">   
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                
+   </bind>  
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->$implementing{org.jboss.jms.delegate.ConsumerEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>         
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getMessageListener())">
+      <advice name="handleGetMessageListener" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->setMessageListener(..))">
+      <advice name="handleSetMessageListener" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->receive(..))">
+      <advice name="handleReceive" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>  
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->receiveNoWait())">
+      <advice name="handleReceiveNoWait" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getDestination())">
+      <advice name="handleGetDestination" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getNoLocal())">
+      <advice name="handleGetNoLocal" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getMessageSelector())">
+      <advice name="handleGetMessageSelector" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>      
+
+   
+   <!--
+        Producer Stack
+   -->   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->$implementing{org.jboss.jms.delegate.ProducerDelegate}(..))">   
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>           
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>        
+   </bind>        
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDeliveryMode())">
+      <advice name="handleGetDeliveryMode" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>     
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDestination())">
+      <advice name="handleGetDestination" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDisableMessageID())">
+      <advice name="handleGetDisableMessageID" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDisableMessageTimestamp())">
+      <advice name="handleGetDisableMessageTimestamp" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getPriority())">
+      <advice name="handleGetPriority" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getTimeToLive())">
+      <advice name="handleGetTimeToLive" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->send(org.jboss.jms.destination.JBossDestination, javax.jms.Message, int, int, long))">
+      <advice name="handleSend" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDeliveryMode(..))">
+      <advice name="handleSetDeliveryMode" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDestination(..))">
+      <advice name="handleSetDestination" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDisableMessageID(..))">
+      <advice name="handleSetDisableMessageID" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDisableMessageTimestamp(..))">
+      <advice name="handleSetDisableMessageTimestamp" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setPriority(..))">
+      <advice name="handleSetPriority" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setTimeToLive(..))">
+      <advice name="handleSetTimeToLive" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind> 
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>    
+   <!-- Producers never go to the server - so no need for a failover interceptor -->   
+
+   <!--
+        Browser Stack
+   -->
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->$implementing{org.jboss.jms.delegate.BrowserDelegate}(..))">   
+      <interceptor-ref name="org.jboss.jms.client.container.ClientLogInterceptor"/>      
+      <interceptor-ref name="org.jboss.jms.client.container.ExceptionInterceptor"/>    
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>      
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->$implementing{org.jboss.jms.delegate.BrowserEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->nextMessage())">
+      <advice name="handleNextMessage" aspect="org.jboss.jms.client.container.BrowserAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->hasNextMessage())">
+      <advice name="handleHasNextMessage" aspect="org.jboss.jms.client.container.BrowserAspect"/>
+   </bind>         
+</aop>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/aop-messaging-client.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE aop PUBLIC
+   "-//JBoss//DTD JBOSS AOP 1.0//EN"
+   "http://www.jboss.org/aop/dtd/jboss-aop_1_0.dtd">
+
+<aop>
+   <interceptor class="org.jboss.jms.client.container.ClosedInterceptor" scope="PER_INSTANCE"/>                  	
+   <interceptor class="org.jboss.jms.client.container.FailoverValveInterceptor" scope="PER_INSTANCE"/>
+
+   <aspect class="org.jboss.jms.client.container.StateCreationAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.ConsumerAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.ProducerAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.SessionAspect" scope="PER_VM"/>
+   <aspect class="org.jboss.jms.client.container.BrowserAspect" scope="PER_INSTANCE"/>
+   <aspect class="org.jboss.jms.client.container.ConnectionAspect" scope="PER_INSTANCE"/>
+   <aspect class="org.jboss.jms.client.container.ClusteringAspect" scope="PER_INSTANCE"/>
+ 
+   <!--
+       Clustered ConnectionFactory Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate->createConnectionDelegate(..))">
+      <advice name="handleCreateConnectionDelegate" aspect="org.jboss.jms.client.container.ClusteringAspect"/>
+   </bind>
+
+   <!--
+        (Non-clustered) ConnectionFactory Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate->createConnectionDelegate(..))">
+      <advice name="handleCreateConnectionDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+
+   <!--
+        Connection Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->$implementing{org.jboss.jms.delegate.ConnectionDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                     
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->$implementing{org.jboss.jms.delegate.ConnectionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->start())">
+       <advice name="handleStart" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->stop())">
+      <advice name="handleStop" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createConnectionConsumer(..))">
+      <advice name="handleCreateConnectionConsumer" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getClientID())">
+      <advice name="handleGetClientID" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->setClientID(..))">
+      <advice name="handleSetClientID" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getExceptionListener())">
+      <advice name="handleGetExceptionListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->setExceptionListener(..))">
+      <advice name="handleSetExceptionListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->getConnectionMetaData())">
+      <advice name="handleGetConnectionMetaData" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createSessionDelegate(..))">
+      <advice name="handleCreateSessionDelegate" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>         
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->registerFailoverListener(..))">
+      <advice name="handleRegisterFailoverListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->unregisterFailoverListener(..))">
+      <advice name="handleUnregisterFailoverListener" aspect="org.jboss.jms.client.container.ConnectionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->createSessionDelegate(..))">
+      <advice name="handleCreateSessionDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+
+   <!--
+        Session Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->$implementing{org.jboss.jms.delegate.SessionDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                   
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->$implementing{org.jboss.jms.delegate.SessionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind> 
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createMessage())">
+      <advice name="handleCreateMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createBytesMessage())">
+      <advice name="handleCreateBytesMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createMapMessage())">
+      <advice name="handleCreateMapMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createObjectMessage(..))">
+      <advice name="handleCreateObjectMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createStreamMessage())">
+      <advice name="handleCreateStreamMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createTextMessage(..))">
+      <advice name="handleCreateTextMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->setMessageListener(..))">
+      <advice name="handleSetMessageListener" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getMessageListener())">
+      <advice name="handleGetMessageListener" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->addAsfMessage(..))">
+      <advice name="handleAddAsfMessage" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->run())">
+      <advice name="handleRun" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getAcknowledgeMode())">
+      <advice name="handleGetAcknowledgeMode" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getTransacted())">
+      <advice name="handleGetTransacted" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->getXAResource())">
+      <advice name="handleGetXAResource" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->preDeliver(..))">
+      <advice name="handlePreDeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->postDeliver(..))">
+      <advice name="handlePostDeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->acknowledgeAll(..))">
+      <advice name="handleAcknowledgeAll" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->recover())">
+      <advice name="handleRecover" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->redeliver(..))">
+      <advice name="handleRedeliver" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.SessionAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.SessionAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->commit())">
+      <advice name="handleCommit" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->rollback())">
+      <advice name="handleRollback" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->send(..))">
+      <advice name="handleSend" aspect="org.jboss.jms.client.container.SessionAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createConsumerDelegate(..))">
+      <advice name="handleCreateConsumerDelegate" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createConsumerDelegate(..))">
+      <advice name="handleCreateConsumerDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createProducerDelegate(..))">
+      <advice name="handleCreateProducerDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->createBrowserDelegate(..))">
+      <advice name="handleCreateBrowserDelegate" aspect="org.jboss.jms.client.container.StateCreationAspect"/>
+   </bind>
+   
+   <!--
+        Consumer Stack
+   -->
+
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->$implementing{org.jboss.jms.delegate.ConsumerDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>                
+   </bind>  
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->$implementing{org.jboss.jms.delegate.ConsumerEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>         
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getMessageListener())">
+      <advice name="handleGetMessageListener" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->setMessageListener(..))">
+      <advice name="handleSetMessageListener" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->receive(..))">
+      <advice name="handleReceive" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>  
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->receiveNoWait())">
+      <advice name="handleReceiveNoWait" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getDestination())">
+      <advice name="handleGetDestination" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getNoLocal())">
+      <advice name="handleGetNoLocal" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->getMessageSelector())">
+      <advice name="handleGetMessageSelector" aspect="org.jboss.jms.client.container.ConsumerAspect"/>         
+   </bind>      
+
+   
+   <!--
+        Producer Stack
+   -->   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->$implementing{org.jboss.jms.delegate.ProducerDelegate}(..))">   
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>        
+   </bind>        
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDeliveryMode())">
+      <advice name="handleGetDeliveryMode" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>     
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDestination())">
+      <advice name="handleGetDestination" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDisableMessageID())">
+      <advice name="handleGetDisableMessageID" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getDisableMessageTimestamp())">
+      <advice name="handleGetDisableMessageTimestamp" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getPriority())">
+      <advice name="handleGetPriority" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->getTimeToLive())">
+      <advice name="handleGetTimeToLive" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->send(..))">
+      <advice name="handleSend" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDeliveryMode(..))">
+      <advice name="handleSetDeliveryMode" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDestination(..))">
+      <advice name="handleSetDestination" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDisableMessageID(..))">
+      <advice name="handleSetDisableMessageID" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setDisableMessageTimestamp(..))">
+      <advice name="handleSetDisableMessageTimestamp" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setPriority(..))">
+      <advice name="handleSetPriority" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->setTimeToLive(..))">
+      <advice name="handleSetTimeToLive" aspect="org.jboss.jms.client.container.ProducerAspect"/>         
+   </bind> 
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->closing(..))">
+      <advice name="handleClosing" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->close())">
+      <advice name="handleClose" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->enableOrderingGroup(..))">
+      <advice name="handleEnableOrderingGroup" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>    
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->disableOrderingGroup())">
+      <advice name="handleDisableOrderingGroup" aspect="org.jboss.jms.client.container.ProducerAspect"/>
+   </bind>    
+   <!-- Producers never go to the server - so no need for a failover interceptor -->   
+
+   <!--
+        Browser Stack
+   -->
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->$implementing{org.jboss.jms.delegate.BrowserDelegate}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.ClosedInterceptor"/>      
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->$implementing{org.jboss.jms.delegate.BrowserEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.client.container.FailoverValveInterceptor"/>         
+   </bind>      
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->nextMessage())">
+      <advice name="handleNextMessage" aspect="org.jboss.jms.client.container.BrowserAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->hasNextMessage())">
+      <advice name="handleHasNextMessage" aspect="org.jboss.jms.client.container.BrowserAspect"/>
+   </bind>         
+</aop>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/aop-messaging-server.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/aop-messaging-server.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/aop-messaging-server.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE aop PUBLIC
+   "-//JBoss//DTD JBOSS AOP 1.0//EN"
+   "http://www.jboss.org/aop/dtd/jboss-aop_1_0.dtd">
+<aop>
+
+   <interceptor class="org.jboss.jms.server.container.ServerLogInterceptor" scope="PER_VM"/>
+   <interceptor class="org.jboss.jms.server.container.CachingInterceptor" scope="PER_VM"/>      
+   <aspect class="org.jboss.jms.server.container.SecurityAspect" scope="PER_INSTANCE"/>
+   
+   <!-- Connection -->
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.ConnectionAdvised->$implementing{org.jboss.jms.delegate.ConnectionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.server.container.ServerLogInterceptor"/>
+   </bind>   
+
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.ConnectionAdvised->sendTransaction(..))">
+      <advice name="handleSendTransaction" aspect="org.jboss.jms.server.container.SecurityAspect"/>
+   </bind>
+
+   <!-- Session -->
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.SessionAdvised->$implementing{org.jboss.jms.delegate.SessionEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.server.container.ServerLogInterceptor"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.SessionAdvised->createBrowserDelegate(..))">
+      <advice name="handleCreateBrowserDelegate" aspect="org.jboss.jms.server.container.SecurityAspect"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.SessionAdvised->createConsumerDelegate(..))">
+      <advice name="handleCreateConsumerDelegate" aspect="org.jboss.jms.server.container.SecurityAspect"/>
+   </bind>   
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.SessionAdvised->send(..))">
+      <advice name="handleSend" aspect="org.jboss.jms.server.container.SecurityAspect"/>
+   </bind>
+   
+   <!-- Consumer -->
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.ConsumerAdvised->$implementing{org.jboss.jms.delegate.ConsumerEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.server.container.ServerLogInterceptor"/>
+   </bind>
+
+   <!-- Browser -->
+   <bind pointcut="execution(* org.jboss.jms.server.endpoint.advised.BrowserAdvised->$implementing{org.jboss.jms.delegate.BrowserEndpoint}(..))">
+      <interceptor-ref name="org.jboss.jms.server.container.ServerLogInterceptor"/>
+   </bind>
+   
+</aop>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/default.mf
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/default.mf	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/default.mf	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Created-By: @JAVA_VM_VERSION@ (@JAVA_VM_VENDOR@)
+Specification-Title: @MODULE_NAME@
+Specification-Version: @MODULE_VERSION@
+Specification-Vendor: @MODULE_VENDOR@
+Implementation-Title: @MODULE_NAME@
+Implementation-URL: @MODULE_URL@
+Implementation-Version: @MODULE_IMPLEMENTATION_VERSION@
+Implementation-Vendor: @MODULE_VENDOR@
+Implementation-Vendor-Id: @MODULE_URL@

Added: branches/Branch_1_4/integration/EAP5/etc/prepare-aop.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/prepare-aop.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/prepare-aop.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE aop PUBLIC
+   "-//JBoss//DTD JBOSS AOP 1.0//EN"
+   "http://www.jboss.org/aop/dtd/jboss-aop_1_0.dtd">
+
+<aop>
+
+  <!-- Prepare the client stub classes - these provide the client side advice stack -->
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate->$implementing{org.jboss.jms.delegate.ConnectionFactoryDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate->$implementing{org.jboss.jms.delegate.ConnectionFactoryDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientConnectionDelegate->$implementing{org.jboss.jms.delegate.ConnectionDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientSessionDelegate->$implementing{org.jboss.jms.delegate.SessionDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientConsumerDelegate->$implementing{org.jboss.jms.delegate.ConsumerDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientProducerDelegate->$implementing{org.jboss.jms.delegate.ProducerDelegate}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.client.delegate.ClientBrowserDelegate->$implementing{org.jboss.jms.delegate.BrowserDelegate}(..))"/>
+ 
+  <!-- Prepare the server delegate classes - these provide the server side advice stack -->
+  
+  <prepare expr="execution(* org.jboss.jms.server.endpoint.advised.ConnectionFactoryAdvised->$implementing{org.jboss.jms.server.endpoint.ConnectionFactoryInternalEndpoint}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.server.endpoint.advised.ConnectionAdvised->$implementing{org.jboss.jms.delegate.ConnectionEndpoint}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.server.endpoint.advised.SessionAdvised->$implementing{org.jboss.jms.server.endpoint.SessionInternalEndpoint}(..))"/> 
+  <prepare expr="execution(* org.jboss.jms.server.endpoint.advised.ConsumerAdvised->$implementing{org.jboss.jms.delegate.ConsumerEndpoint}(..))"/>
+  <prepare expr="execution(* org.jboss.jms.server.endpoint.advised.BrowserAdvised->$implementing{org.jboss.jms.delegate.BrowserEndpoint}(..))"/>
+
+</aop>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-bisocket-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-bisocket-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-bisocket-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Standard bisocket-based Remoting service deployment descriptor.
+
+     $Id: remoting-bisocket-service.xml 3981 2008-03-28 18:00:41Z timfox $
+ -->
+
+<server>
+
+   <!-- Standard bisocket connector - the bisocket transport only opens connection from client->server
+        so can be used with firewalls where only outgoing connections are allowed.
+        For examples of HTTP and SSL transports see docs/examples -->
+   <mbean code="org.jboss.remoting.transport.Connector"
+          name="jboss.messaging:service=Connector,transport=bisocket"
+          display-name="Bisocket Transport Connector">
+      <attribute name="Configuration">
+         <config>
+            <invoker transport="bisocket">
+            
+               <!-- There should be no reason to change these parameters - warning!
+                    Changing them may stop JBoss Messaging working correctly -->            
+               <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="dataType" isParam="true">jms</attribute>
+               <attribute name="socket.check_connection" isParam="true">false</attribute>               
+               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
+               <attribute name="serverBindPort">${jboss.messaging.connector.bisocket.port:4457}</attribute>
+               <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
+               <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
+               <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
+
+               <!-- the following parameters are useful when there is a firewall between client and server. Uncomment them if so.-->
+               <!--	       
+               <attribute name="numberOfCallRetries" isParam="true">5</attribute>
+               <attribute name="pingFrequency" isParam="true">30000</attribute>
+               <attribute name="pingWindowFactor" isParam="true">71582</attribute>
+               <attribute name="generalizeSocketException" isParam="true">true</attribute>
+               -->
+
+               <!-- Now remoting supports socket write timeout configuration. Uncomment this if you need it. -->
+               <!--               
+               <attribute name="writeTimeout" isParam="true">30000</attribute>
+               -->
+
+               <!-- End immutable parameters -->
+               
+               <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
+               
+               <!-- Periodicity of client pings. Server window by default is twice this figure -->                               
+               <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingPeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingTimeout" isParam="true">5000</attribute>
+
+               <attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
+               <attribute name="callbackErrorsAllowed">1</attribute>
+               <attribute name="registerCallbackListener">false</attribute>
+               <attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
+	       	       
+	            <attribute name="timeout" isParam="true">0</attribute>
+
+               <!-- Max Number of connections in client pool. This should be significantly higher than
+                    the max number of sessions/consumers you expect -->
+               <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
+               
+               <!-- The maximum time to wait before timing out on trying to write a message to socket for delivery -->
+               <attribute name="callbackTimeout">10000</attribute> 
+               
+               <!-- Use these parameters to specify values for binding and connecting control connections to 
+                    work with your firewall/NAT configuration
+               <attribute name="secondaryBindPort">xyz</attribute>                           
+               <attribute name="secondaryConnectPort">abc</attribute>               
+               -->
+                          
+            </invoker>
+            <handlers>
+               <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
+            </handlers>
+         </config>
+      </attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-http-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-http-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-http-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     HTTP-based Remoting service deployment descriptor.
+
+     $Id: remoting-http-service.xml 3222 2007-10-20 12:13:57Z timfox $
+ -->
+
+<server>
+
+   <mbean code="org.jboss.remoting.transport.Connector"
+          name="jboss.messaging:service=Connector,transport=http"
+          display-name="HTTP Transport Connector">
+      <attribute name="Configuration">
+         <config>
+            <invoker transport="http">
+               <!-- There should be no reason to change these parameters - warning!
+                    Changing them may stop JBoss Messaging working correctly -->
+               <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>               
+               <attribute name="dataType" isParam="true">jms</attribute>
+               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
+               <attribute name="serverBindPort">${jboss.messaging.connector.http.port:4458}</attribute>               
+               <attribute name="callbackStore">org.jboss.remoting.callback.BlockingCallbackStore</attribute>    
+               <!-- End immutable parameters -->
+                  
+               <!-- The period of sending pings to the server -->
+               <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
+                      
+               <!-- Set this to true if you want the HTTP transport to block waiting for server->client traffic.
+               Or false if you want it to poll for new traffic periodically. Recommended is true -->                       
+               <attribute name="blockingMode" isParam="true">blocking</attribute>
+               
+               <!-- Timeout for blocking. Only has relevance if blockingMode = true -->
+               <attribute name="blockingTimeout" isParam="true">30000</attribute>
+                
+               <!-- The periodicity of polling. Only has relevance if blockingMode = false -->               
+               <attribute name="callbackPollPeriod" isParam="true">10000</attribute>                                                                               
+            </invoker>
+            <handlers>
+               <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
+            </handlers>
+         </config>
+      </attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-servlet-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-servlet-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-servlet-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Servlet-based Remoting service deployment descriptor.
+
+ -->
+
+<server>
+   <mbean code="org.jboss.remoting.transport.Connector"
+          name="jboss.remoting:service=Connector,transport=servlet,target=jms"
+          display-name="JMS Servlet transport Connector">
+      <attribute name="Configuration">
+         <config>
+            <invoker transport="servlet">
+               <!-- There should be no reason to change these parameters - warning!
+                    Changing them may stop JBoss Messaging working correctly -->
+               <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>               
+               <attribute name="dataType" isParam="true">jms</attribute>
+               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
+               <attribute name="serverBindPort">8080</attribute>
+               <attribute name="numberOfCallRetries" isParam="true">1</attribute>
+               <attribute name="pingFrequency" isParam="true">214748364</attribute>
+               <attribute name="pingWindowFactor" isParam="true">10</attribute>
+               <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute> 
+               <attribute name="callbackStore">org.jboss.remoting.callback.BlockingCallbackStore</attribute>
+               <attribute name="unwrapSingletonArrays">true</attribute>
+               <attribute name="path">servlet-invoker/JmsServerInvokerServlet</attribute>
+               <attribute name="return-exception">true</attribute>
+               <attribute name="createUniqueObjectName">true</attribute>
+               <attribute name="useAllParams" isParam="true">true</attribute>
+               <!-- End immutable parameters -->
+                                         
+               <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
+               
+               <!-- Periodicity of client pings. Server window by default is twice this figure -->                               
+               <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingPeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingTimeout" isParam="true">5000</attribute>
+
+               <attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
+               <attribute name="callbackErrorsAllowed">1</attribute>
+               <attribute name="registerCallbackListener">false</attribute>
+               <attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
+
+	           <attribute name="timeout" isParam="true">0</attribute>
+
+               <!-- Max Number of connections in client pool. This should be significantly higher than
+                    the max number of sessions/consumers you expect -->
+               <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
+
+               <!-- Set this to true if you want the servlet transport to block waiting for server->client traffic.
+               Or false if you want it to poll for new traffic periodically. Recommended is blocking -->                       
+               <attribute name="blockingMode" isParam="true">blocking</attribute>
+               
+               <!-- Timeout for blocking. Only has relevance if blockingMode = blocking -->
+               <attribute name="blockingTimeout" isParam="true">30000</attribute>
+                
+               <!-- The periodicity of polling. Only has relevance if blockingMode = nonblocking -->               
+               <!--attribute name="callbackPollPeriod" isParam="true">10000</attribute-->  
+            </invoker>
+            <handlers>
+               <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
+            </handlers>
+         </config>
+      </attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-sslbisocket-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-sslbisocket-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/remoting/remoting-sslbisocket-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     The deployment descriptor for the secure socket factory
+     service and secure connector.
+
+     $Id: remoting-sslbisocket-service.xml 3981 2008-03-28 18:00:41Z timfox $
+ -->
+
+<server>
+
+   <mbean code="org.jboss.remoting.transport.Connector"
+          name="jboss.messaging:service=Connector,transport=sslbisocket"
+          display-name="SSL Bisocket Transport Connector">
+      <attribute name="Configuration">
+         <config>
+            <invoker transport="sslbisocket">   
+            
+               <!-- There should be no reason to change these parameters - warning!
+                    Changing them may stop JBoss Messaging working correctly -->          
+               <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
+               <attribute name="dataType" isParam="true">jms</attribute>
+               <attribute name="socket.check_connection" isParam="true">false</attribute>              
+               <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
+               <attribute name="serverBindPort">4459</attribute>               
+               <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
+               <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
+               <attribute name="serverSocketFactory">jboss.messaging:service=ServerSocketFactory,type=SSL</attribute>
+               <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
+               <!-- the following parameters are useful when there is a firewall between client and server. Uncomment them if so.-->
+               <!--	       
+               <attribute name="numberOfCallRetries" isParam="true">5</attribute>
+               <attribute name="pingFrequency" isParam="true">30000</attribute>
+               <attribute name="pingWindowFactor" isParam="true">71582</attribute>
+               <attribute name="generalizeSocketException" isParam="true">true</attribute>
+               -->
+
+               <!-- Now remoting supports socket write timeout configuration. Uncomment this if you need it. -->
+               <!--               
+               <attribute name="writeTimeout" isParam="true">30000</attribute>
+               -->
+
+               <!-- End immutable parameters -->
+               
+               <attribute name="stopLeaseOnFailure" isParam="true">true</attribute>
+                              
+               <!-- Periodicity of client pings. Server window by default is twice this figure -->                               
+               <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingPeriod" isParam="true">10000</attribute>
+               <attribute name="validatorPingTimeout" isParam="true">5000</attribute>
+
+               <attribute name="failureDisconnectTimeout" isParam="true">0</attribute>
+               <attribute name="callbackErrorsAllowed">1</attribute>
+               <attribute name="registerCallbackListener">false</attribute>
+               <attribute name="useClientConnectionIdentity" isParam="true">true</attribute>
+	       
+	       <attribute name="timeout" isParam="true">0</attribute>
+
+
+               <!-- Max Number of connections in client pool. This should be significantly higher than
+                    the max number of sessions/consumers you expect -->
+               <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute> 
+               
+	       <!-- The maximum time to wait before timing out on trying to write a message to socket for delivery -->
+               <attribute name="callbackTimeout">10000</attribute> 
+                                                    
+               <!-- Use these parameters to specify values for binding and connecting control connections to 
+                    work with your firewall/NAT configuration
+               <attribute name="secondaryBindPort">xyz</attribute>                           
+               <attribute name="secondaryConnectPort">abc</attribute>               
+               -->
+               
+            </invoker>
+            <handlers>
+               <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
+            </handlers>
+         </config>
+      </attribute>
+      <depends>jboss.messaging:service=ServerSocketFactory,type=SSL</depends>
+   </mbean>
+
+   <!-- This section is for custom (SSL) server socket factory  -->
+
+   <!--
+        The server socket factory mbean to be used as attribute to socket invoker (see
+        serverSocketFactory attribute above for where it is used). This service provides the exact
+        same API as the ServerSocketFactory, so can be set as an attribute of that type on any
+        MBean requiring an ServerSocketFactory.
+   -->
+   <mbean code="org.jboss.remoting.security.SSLServerSocketFactoryService"
+          name="jboss.messaging:service=ServerSocketFactory,type=SSL"
+          display-name="SSL Server Socket Factory">
+      <depends optional-attribute-name="SSLSocketBuilder"
+               proxy-type="attribute">jboss.messaging:service=SocketBuilder,type=SSL</depends>
+   </mbean>
+
+   <!--
+       This service is used to build the SSL Server socket factory. This will be where all the
+       store/trust information will be set. If do not need to make any custom configurations,
+       no extra attributes need to be set for the SSLSocketBuilder and just need to set the
+       javax.net.ssl.keyStore and javax.net.ssl.keyStorePassword system properties.
+
+       This can be done by just adding something like the following to the run script for JBoss
+       (this one is for run.bat):
+       set JAVA_OPTS=-Djavax.net.ssl.keyStore=.keystore -Djavax.net.ssl.keyStorePassword=opensource %JAVA_OPTS%
+
+       Otherwise, if want to customize the attributes for SSLSocketBuilder, will need to uncomment
+       them below.
+   -->
+   <mbean code="org.jboss.remoting.security.SSLSocketBuilder"
+          name="jboss.messaging:service=SocketBuilder,type=SSL"
+          display-name="SSL Server Socket Factory Builder">
+      <!--
+           IMPORTANT - If making ANY customizations, this MUST be set to false.
+           Otherwise, will used default settings and the following attributes will be ignored.
+      -->
+      <attribute name="UseSSLServerSocketFactory">false</attribute>
+      <!-- This is the url string to the key store to use -->
+      <attribute name="KeyStoreURL">${jboss.server.home.url}/deploy/messaging/messaging.keystore</attribute>
+      <!-- The password for the key store -->
+      <attribute name="KeyStorePassword">secureexample</attribute>
+      <!-- The password for the keys (will use KeystorePassword if this is not set explicitly. -->
+      <attribute name="KeyPassword">secureexample</attribute>
+      <!-- The protocol for the SSLContext. Default is TLS. -->
+      <attribute name="SecureSocketProtocol">TLS</attribute>
+      <!-- The algorithm for the key manager factory.  Default is SunX509. -->
+      <attribute name="KeyStoreAlgorithm">SunX509</attribute>
+      <!--
+           The type to be used for the key store.
+           Defaults to JKS. Some acceptable values are JKS (Java Keystore - Sun's keystore format),
+           JCEKS (Java Cryptography Extension keystore - More secure version of JKS), and
+           PKCS12 (Public-Key Cryptography Standards #12 keystore - RSA's Personal Information
+           Exchange Syntax Standard). These are not case sensitive.
+      -->
+      <attribute name="KeyStoreType">JKS</attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/WEB-INF/web.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/WEB-INF/web.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/remoting/servlet-invoker.war/WEB-INF/web.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC
+   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+   "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<!-- The the JBossRemoting server invoker servlet web.xml descriptor
+$Id: web.xml,v 1.2 2006/07/17 03:44:00 telrod Exp $
+-->
+<web-app>
+  
+  <servlet>
+    <servlet-name>JmsServerInvokerServlet</servlet-name>
+    <description>The JmsServerInvokerServlet receives JMS requests via HTTP
+      protocol from within a web container and passes it onto the
+      ServletServerInvoker for processing.
+    </description>
+    <servlet-class>org.jboss.remoting.transport.servlet.web.ServerInvokerServlet</servlet-class>
+    <init-param>
+      <param-name>locatorUrl</param-name>
+      <param-value>
+        <![CDATA[servlet://${jboss.bind.address}:8080/servlet-invoker/JmsServerInvokerServlet/?dataType=jms&JBM_clientMaxPoolSize=200&failureDisconnectTimeout=0&marshaller=org.jboss.jms.wireformat.JMSWireFormat&unmarshaller=org.jboss.jms.wireformat.JMSWireFormat&numberOfCallRetries=1&pingFrequency=214748364&pingWindowFactor=10&stopLeaseOnFailure=true&clientLeasePeriod=10000&validatorPingPeriod=10000&validatorPingTimeout=5000&timeout=0&blockingMode=blocking&blockingTimeout=30000&useAllParams=true&useClientConnectionIdentity=true]]>
+      </param-value>
+      <description>The servlet server invoker</description>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+    
+  <servlet-mapping>
+    <servlet-name>JmsServerInvokerServlet</servlet-name>
+    <url-pattern>/JmsServerInvokerServlet/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
+

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-roles.properties
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-roles.properties	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-roles.properties	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,4 @@
+#
+# user=role1,role2,...
+#
+guest=guest

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-users.properties
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-users.properties	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/config/messaging-users.properties	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,4 @@
+#
+# user=password
+#
+guest=guest

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/clustered-hsqldb-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/clustered-hsqldb-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/clustered-hsqldb-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Hypersonic persistence deployment descriptor.
+
+     DO NOT USE HYPERSONIC IN PRODUCTION or in a clustered environment- Hypersonic does not have transaction isolation
+
+     This clustered example is provided for test purposes and integration with JBAS only. Do not use it in real situations!
+
+     $Id: clustered-hsqldb-persistence-service.xml 4698 2008-07-21 15:29:14Z jhowell at redhat.com $
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then will use JDBC batch updates -->
+
+      <attribute name="UsingBatchUpdates">false</attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- This config was not meant to be used in production. For a clustered setup you need a shared database -->
+
+      <attribute name="Clustered">true</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">5000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">50000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/connection-factories-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/connection-factories-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/connection-factories-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Messaging Connection Factories deployment descriptor.
+
+     $Id: connection-factories-service.xml 3332 2007-11-15 09:32:43Z timfox $
+ -->
+
+<server>
+
+   <!-- The default connection factory does not support automatic failover or load balancing-
+        this is so we can maintain compatiblity with applications written for JBoss MQ which use this
+        connection factory.
+   -->     
+   <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
+      name="jboss.messaging.connectionfactory:service=ConnectionFactory"
+      xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      
+      <attribute name="JNDIBindings">
+         <bindings>
+            <binding>/ConnectionFactory</binding>
+            <binding>/XAConnectionFactory</binding>
+            <binding>java:/ConnectionFactory</binding>
+            <binding>java:/XAConnectionFactory</binding>
+         </bindings>
+      </attribute>
+   </mbean>
+
+   <!-- A clustered connection factory that supports automatic failover and load balancing of created
+        connections.
+        This factory is not suitable to be used by MDBs.
+   -->
+   <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
+      name="jboss.messaging.connectionfactory:service=ClusteredConnectionFactory"
+      xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+
+      <attribute name="JNDIBindings">
+         <bindings>
+            <binding>/ClusteredConnectionFactory</binding>
+            <binding>/ClusteredXAConnectionFactory</binding>
+            <binding>java:/ClusteredConnectionFactory</binding>
+            <binding>java:/ClusteredXAConnectionFactory</binding>
+         </bindings>
+      </attribute>
+
+      <attribute name="SupportsFailover">true</attribute>
+      <attribute name="SupportsLoadBalancing">true</attribute>      
+   </mbean>
+   
+   <!-- A connection factory with no JNDI bindings that is used in clustering to create the connections that
+        pull messages from one node to another
+   -->
+   <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
+      name="jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory"
+      xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <depends>jboss.messaging.connectionfactory:service=ClusteredConnectionFactory</depends>
+      <attribute name="SupportsFailover">false</attribute>
+      <attribute name="SupportsLoadBalancing">false</attribute>      
+   </mbean>
+   
+   <!-- An example connection factory with all attributes shown 
+   
+   <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
+      name="jboss.messaging.connectionfactory:service=MyExampleConnectionFactory"
+      xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
+      
+      <constructor>
+      
+         <!- - You can specify the default Client ID to use for connections created using this factory - -> 
+         
+         <arg type="java.lang.String" value="MyClientID"/>
+         
+      </constructor>
+      
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      
+      <!- - The transport to use - can be bisocket, sslbisocket or http - ->
+      
+      <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=http</depends>
+      
+      <depends>jboss.messaging:service=PostOffice</depends>
+      
+      <!- - PrefetchSize determines the approximate maximum number of messages the client consumer will buffer locally - ->
+      
+      <attribute name="PrefetchSize">150</attribute>
+      
+      <!- - Paging params to be used for temporary queues - ->
+      
+      <attribute name="DefaultTempQueueFullSize">200000</attribute>
+      
+      <attribute name="DefaultTempQueuePageSizeSize">2000</attribute>
+      
+      <attribute name="DefaultTempQueueDownCacheSize">2000</attribute>
+      
+      <!- - The batch size to use when using the DUPS_OK_ACKNOWLEDGE acknowledgement mode - ->
+      
+      <attribute name="DupsOKBatchSize">5000</attribute>
+      
+      <!- - Does this connection factory support automatic failover? - ->
+      
+      <attribute name="SupportsFailover">false</attribute>
+      
+      <!- - Does this connection factory support automatic client side load balancing? - ->
+      
+      <attribute name="SupportsLoadBalancing">false</attribute>  
+            
+      <!- - The class name of the factory used to create the load balancing policy to use on the client side - ->
+      
+      <attribute name="LoadBalancingFactory">org.jboss.jms.client.plugin.RoundRobinLoadBalancingFactory</attribute>  
+
+      <!- - Whether we should be strict TCK compliant, i.e. how we deal with foreign messages, defaults to false- ->
+
+      <attribute name="StrictTck">true</attribute>
+      
+      <!- - Should acknowledgements be sent asynchronously? - ->
+      
+      <attribute name="SendAcksAsync">false</attribute>
+      
+      <!- - Disable JBoss Remoting Connector sanity checks - There is rarely a good reason to set this to true - ->
+      
+      <attribute name="DisableRemotingChecks">false</attribute>
+
+      <!- - The connection factory will be bound in the following places in JNDI - ->
+
+      <attribute name="JNDIBindings">
+      
+         <bindings>
+         
+            <binding>/acme/MyExampleConnectionFactory</binding>
+            
+            <binding>/acme/MyExampleConnectionFactoryDupe</binding>
+            
+            <binding>java:/xyz/CF1</binding>
+            
+            <binding>java:/connectionfactories/acme/connection_factory</binding>
+            
+         </bindings>
+         
+      </attribute>   
+       
+   </mbean>
+   
+   -->
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/db2-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/db2-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/db2-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     DB2 persistence deployment descriptor.
+
+     Tested with DB2 v9.1
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <attribute name="SupportsBlobOnSelect">false</attribute>
+      
+      <attribute name="SupportsSetNullOnBlobs">false</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUAL_DUMMY INTEGER NOT NULL, PRIMARY KEY (DUAL_DUMMY))
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID DECIMAL(19, 0) NOT NULL, CHANNEL_ID DECIMAL(19, 0) NOT NULL, TRANSACTION_ID DECIMAL(19, 0), STATE CHAR(1), ORD DECIMAL(19, 0), PAGE_ORD DECIMAL(19, 0) , DELIVERY_COUNT INTEGER, SCHED_DELIVERY DECIMAL(19, 0), PRIMARY KEY(MESSAGE_ID, CHANNEL_ID))
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID DECIMAL(19, 0) NOT NULL, RELIABLE CHAR(1), EXPIRATION DECIMAL(19, 0), TIMESTAMP DECIMAL(19, 0), PRIORITY SMALLINT, TYPE SMALLINT, HEADERS BLOB, PAYLOAD BLOB, PRIMARY KEY (MESSAGE_ID))
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID DECIMAL(19, 0) NOT NULL, BRANCH_QUAL BLOB(254), FORMAT_ID INTEGER, GLOBAL_TXID BLOB(254), PRIMARY KEY (TRANSACTION_ID))
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255) NOT NULL, NEXT_ID DECIMAL(19, 0), PRIMARY KEY(NAME))
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER NOT NULL, CNTR INTEGER NOT NULL, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR))
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT (CAST(? AS DECIMAL(19,0))), (CAST(? AS CHAR)), (CAST(? AS DECIMAL(19,0))), (CAST(? AS DECIMAL(19,0))), (CAST(? AS DECIMAL(19,0))), (CAST(? AS DECIMAL(19,0))) FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT (CAST(? AS DECIMAL)), (CAST(? AS CHAR)), (CAST(? AS DECIMAL)), (CAST(? AS DECIMAL)), (CAST(? AS DECIMAL)), (CAST(? AS DECIMAL)), (CAST(? AS DECIMAL)), (CAST(? AS DECIMAL)) FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER HOLDLOCK WHERE NAME=?
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255) NOT NULL, NODE_ID SMALLINT NOT NULL, QUEUE_NAME VARCHAR(255) NOT NULL, COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID INTEGER, CLSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+      
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID))
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/destinations-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/destinations-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/destinations-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Messaging Destinations deployment descriptor.
+
+     $Id: destinations-service.xml 1930 2007-01-09 18:16:04Z timfox $
+ -->
+
+<server>
+
+   <!--
+      The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container.
+   -->
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=DLQ"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+   
+   <!--
+      The Default Expiry Queue.
+   -->
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=ExpiryQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>   
+
+   <!--
+        Example destinations.
+   -->
+
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=testTopic"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="SecurityConfig">
+         <security>
+            <role name="guest" read="true" write="true"/>
+            <role name="publisher" read="true" write="true" create="false"/>
+            <role name="durpublisher" read="true" write="true" create="true"/>
+         </security>
+      </attribute>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=securedTopic"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="SecurityConfig">
+         <security>
+            <role name="publisher" read="true" write="true" create="false"/>
+         </security>
+      </attribute>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=testDurableTopic"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="SecurityConfig">
+         <security>
+            <role name="guest" read="true" write="true"/>
+            <role name="publisher" read="true" write="true" create="false"/>
+            <role name="durpublisher" read="true" write="true" create="true"/>
+         </security>
+      </attribute>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=testQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="SecurityConfig">
+         <security>
+            <role name="guest" read="true" write="true"/>
+            <role name="publisher" read="true" write="true" create="false"/>
+            <role name="noacc" read="false" write="false" create="false"/>
+         </security>
+      </attribute>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=A"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=B"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=C"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=D"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=ex"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+   
+   <!-- It's possible for indiviual queues and topics to use a specific queue for
+   an expiry or DLQ -->
+   
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=PrivateDLQ"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+   
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>      
+   
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=QueueWithOwnDLQAndExpiryQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="DLQ">jboss.messaging.destination:service=Queue,name=PrivateDLQ</attribute>
+      <attribute name="ExpiryQueue">jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue</attribute>
+   </mbean> 
+   
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=TopicWithOwnDLQAndExpiryQueue"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="DLQ">jboss.messaging.destination:service=Queue,name=PrivateDLQ</attribute>
+      <attribute name="ExpiryQueue">jboss.messaging.destination:service=Queue,name=PrivateExpiryQueue</attribute>
+   </mbean>       
+   
+   <!-- Queues and Topics can also specify their own redelivery delay -->
+   
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=QueueWithOwnRedeliveryDelay"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="RedeliveryDelay">5000</attribute>
+   </mbean>
+   
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=TopicWithOwnRedeliveryDelay"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="RedeliveryDelay">5000</attribute>
+   </mbean>     
+   
+   <!--
+        Example clustered destinations.
+   -->
+   
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=testDistributedQueue"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="Clustered">true</attribute>
+   </mbean>   
+   
+   <mbean code="org.jboss.jms.server.destination.TopicService"
+      name="jboss.messaging.destination:service=Topic,name=testDistributedTopic"
+      xmbean-dd="xmdesc/Topic-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+      <attribute name="Clustered">true</attribute>
+   </mbean>   
+
+</server>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/hsqldb-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/hsqldb-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/hsqldb-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Hypersonic persistence deployment descriptor.
+     
+     DO NOT USE HYPERSONIC IN PRODUCTION or in a clustered environment- Hypersonic does not have transaction isolation
+
+     $Id: hsqldb-persistence-service.xml 3339 2007-11-16 20:48:08Z clebert.suconic at jboss.com $
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================= -->
+   
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+      
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+            
+      <!-- The datasource to use for the persistence manager -->
+                                
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+                  
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      
+      <!-- If true then will use JDBC batch updates -->
+                 
+      <attribute name="UsingBatchUpdates">false</attribute>
+      
+      <!-- The maximum number of parameters to include in a prepared statement -->            
+      
+      <attribute name="MaxParams">500</attribute>
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+   
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"      
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+            
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      
+      <!-- The name of the post office -->      
+                 
+      <attribute name="PostOfficeName">JMS post office</attribute>
+      
+      <!-- The datasource used by the post office to access it's binding information -->                       
+      
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+                        
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      
+      <!-- This post office is NON CLUSTERED - do not use clustering with Hypersonic!! -->
+      
+      <attribute name="Clustered">false</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+   
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      
+      <attribute name="SqlProperties"><![CDATA[
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/jboss-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/jboss-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/jboss-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Bootstrap - starts the messaging server peer
+
+     $Id: jboss-service.xml 2671 2007-05-14 15:51:13Z timfox $
+ -->
+
+<server>
+
+   <mbean code="org.jboss.jms.server.Bootstrap"
+      name="jboss.messaging:service=Bootstrap"
+      xmbean-dd="xmdesc/Bootstrap-xmbean.xml">
+      <depends>jboss.messaging:service=ServerPeer</depends>
+   </mbean>
+
+</server>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/messaging-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/messaging-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/messaging-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     The JBoss Messaging service deployment descriptor.
+
+     $Id: messaging-service.xml 3880 2008-03-14 15:55:42Z timfox $
+ -->
+
+<server>
+
+   <!--  The SecurityStore mbean -->
+   <mbean code="org.jboss.jms.server.security.SecurityMetadataStore"
+             name="jboss.messaging:service=SecurityStore">
+             
+        <!-- The default security configuration to apply to destinations - this can be overridden on a per destination basis
+        -->
+        <attribute name="DefaultSecurityConfig">
+             <security>
+                  <role name="guest" read="true" write="true" create="true"/>
+             </security>
+        </attribute>
+        
+        <!-- The JAAS security domain to use for JBoss Messaging -->
+        <attribute name="SecurityDomain">java:/jaas/messaging</attribute>
+        
+        <!--
+        This attribute defines what's the SuckerPassword used on this SecurityStore
+        -->
+        <attribute name="SuckerPassword">CHANGE ME!!</attribute>  
+   </mbean>
+
+     <!-- ServerPeer MBean configuration
+          ============================== -->
+     <mbean code="org.jboss.jms.server.ServerPeer"
+      name="jboss.messaging:service=ServerPeer"
+      xmbean-dd="xmdesc/ServerPeer-xmbean.xml">
+
+      <!-- The unique id of the server peer - in a cluster each node MUST have a unique value - must be an integer -->
+
+      <attribute name="ServerPeerID">${jboss.messaging.ServerPeerID:0}</attribute>
+      
+      <!-- The default JNDI context to use for queues when they are deployed without specifying one --> 
+      
+      <attribute name="DefaultQueueJNDIContext">/queue</attribute>
+      
+      <!-- The default JNDI context to use for topics when they are deployed without specifying one --> 
+      
+      <attribute name="DefaultTopicJNDIContext">/topic</attribute>
+
+	  <attribute name="PostOffice">jboss.messaging:service=PostOffice</attribute>
+	  
+      <!-- The default Dead Letter Queue (DLQ) to use for destinations.
+           This can be overridden on a per destinatin basis -->
+      
+      <attribute name="DefaultDLQ">jboss.messaging.destination:service=Queue,name=DLQ</attribute>
+      
+      <!-- The default maximum number of times to attempt delivery of a message before sending to the DLQ (if configured).
+           This can be overridden on a per destinatin basis -->
+      
+      <attribute name="DefaultMaxDeliveryAttempts">10</attribute>
+      
+      <!-- The default Expiry Queue to use for destinations. This can be overridden on a per destinatin basis -->
+      
+      <attribute name="DefaultExpiryQueue">jboss.messaging.destination:service=Queue,name=ExpiryQueue</attribute>
+      
+      <!-- The default redelivery delay to impose. This can be overridden on a per destination basis -->
+      
+      <attribute name="DefaultRedeliveryDelay">0</attribute>
+      
+      <!-- The periodicity of the message counter manager enquiring on queues for statistics -->
+      
+      <attribute name="MessageCounterSamplePeriod">5000</attribute>
+      
+      <!-- The maximum amount of time for a client to wait for failover to start on the server side after
+           it has detected failure -->
+      
+      <attribute name="FailoverStartTimeout">60000</attribute>
+      
+      <!-- The maximum amount of time for a client to wait for failover to complete on the server side after
+           it has detected failure -->
+      
+      <attribute name="FailoverCompleteTimeout">300000</attribute>
+      
+      <!-- The maximum number of days results to maintain in the message counter history -->
+      
+      <attribute name="DefaultMessageCounterHistoryDayLimit">-1</attribute>
+      
+      <!-- The name of the connection factory to use for creating connections between nodes to pull messages -->
+      
+      <attribute name="ClusterPullConnectionFactoryName">jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory</attribute>
+      
+      <!-- When redistributing messages in the cluster. Do we need to preserve the order of messages received
+            by a particular consumer from a particular producer? -->
+            
+      <attribute name="DefaultPreserveOrdering">false</attribute>
+      
+      <!-- Max. time to hold previously delivered messages back waiting for clients to reconnect after failover -->
+      
+      <attribute name="RecoverDeliveriesTimeout">300000</attribute>
+      
+      <!-- Set to true to enable message counters that can be viewed via JMX -->
+      
+      <attribute name="EnableMessageCounters">false</attribute>
+      
+      <!-- The password used by the message sucker connections to create connections.
+           THIS SHOULD ALWAYS BE CHANGED AT INSTALL TIME TO SECURE SYSTEM
+      <attribute name="SuckerPassword"></attribute>
+      -->
+
+      <depends optional-attribute-name="PersistenceManager">jboss.messaging:service=PersistenceManager</depends>
+      
+      <depends optional-attribute-name="JMSUserManager">jboss.messaging:service=JMSUserManager</depends>
+      
+      <depends>jboss.messaging:service=Connector,transport=bisocket</depends>
+      <depends optional-attribute-name="SecurityStore" proxy-type="org.jboss.jms.server.SecurityStore">jboss.messaging:service=SecurityStore</depends>
+          
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mssql-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mssql-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mssql-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     MS SQL Server persistence deployment descriptor.
+
+     Tested with SQL Server 2005
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY (DUMMY))
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID BIGINT, CHANNEL_ID BIGINT, TRANSACTION_ID BIGINT, STATE CHAR(1), ORD BIGINT, PAGE_ORD BIGINT, DELIVERY_COUNT INT, SCHED_DELIVERY BIGINT, PRIMARY KEY(MESSAGE_ID, CHANNEL_ID))
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, TYPE TINYINT, HEADERS IMAGE, PAYLOAD IMAGE, PRIMARY KEY (MESSAGE_ID))
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL VARBINARY(254), FORMAT_ID INT, GLOBAL_TXID VARBINARY(254), PRIMARY KEY (TRANSACTION_ID))
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME))
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER, CNTR INTEGER, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR))
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER WITH (HOLDLOCK, ROWLOCK) WHERE NAME=?
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID SMALLINT, QUEUE_NAME VARCHAR(255), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID INTEGER, CLSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+      
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID))
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mysql-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mysql-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/mysql-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     MySql persistence deployment descriptor.
+
+     Tested with MySQL 5.0.27
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY (DUMMY)) ENGINE = INNODB
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID BIGINT, CHANNEL_ID BIGINT, TRANSACTION_ID BIGINT, STATE CHAR(1), ORD BIGINT, PAGE_ORD BIGINT, DELIVERY_COUNT INTEGER, SCHED_DELIVERY BIGINT, PRIMARY KEY(MESSAGE_ID, CHANNEL_ID)) ENGINE = INNODB
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE) 
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, TYPE TINYINT, HEADERS MEDIUMBLOB, PAYLOAD LONGBLOB, PRIMARY KEY (MESSAGE_ID)) ENGINE = INNODB
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL VARBINARY(254), FORMAT_ID INTEGER, GLOBAL_TXID VARBINARY(254), PRIMARY KEY (TRANSACTION_ID)) ENGINE = INNODB
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME)) ENGINE = INNODB
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER, CNTR INTEGER, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR)) ENGINE = INNODB
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER WHERE NAME=? FOR UPDATE
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(255), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, CLUSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME)) ENGINE = INNODB
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+      
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID)) ENGINE = INNODB
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID)) ENGINE = INNODB
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/ndb-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/ndb-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/ndb-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     MySql persistence deployment descriptor.
+
+     Tested with MySQL 5.0.27
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY (DUMMY)) ENGINE = NDBCLUSTER
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID BIGINT, CHANNEL_ID BIGINT, TRANSACTION_ID BIGINT, STATE CHAR(1), ORD BIGINT, PAGE_ORD BIGINT, DELIVERY_COUNT INTEGER, SCHED_DELIVERY BIGINT, PRIMARY KEY(MESSAGE_ID, CHANNEL_ID)) ENGINE = NDBCLUSTER
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, TYPE TINYINT, HEADERS MEDIUMBLOB, PAYLOAD LONGBLOB, PRIMARY KEY (MESSAGE_ID)) ENGINE = NDBCLUSTER
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL VARBINARY(254), FORMAT_ID INTEGER, GLOBAL_TXID VARBINARY(254), PRIMARY KEY (TRANSACTION_ID)) ENGINE = NDBCLUSTER
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME)) ENGINE = NDBCLUSTER
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER, CNTR INTEGER, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR)) ENGINE = NDBCLUSTER
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER WHERE NAME=? FOR UPDATE
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+      <!-- This defines the retry strategy for failed sql statments-->
+      <attribute name="UseNDBFailoverStrategy">true</attribute>
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(255), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, CLUSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME)) ENGINE = NDBCLUSTER
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is clustered. If you don't want a clustered post office then set to false -->
+
+      <attribute name="Clustered">true</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">300000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">300000</attribute>
+
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID)) ENGINE = NDBCLUSTER
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID)) ENGINE = NDBCLUSTER
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/null-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/null-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/null-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Null persistence config.
+     
+     Use this if you don't actually want to persist anything
+     
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.NullPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/NullPersistenceManager-xmbean.xml"/>
+     
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+     
+      <!-- This post office is clustered. If you don't want a clustered post office then set to false -->
+
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml"/>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/oracle-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/oracle-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/oracle-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Oracle persistence deployment descriptor.
+
+     Tested with Oracle 10.2.0.1
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <!-- Some databases don't support inserting blobs using INSERT INTO ... SELECT FROM -->
+
+      <attribute name="SupportsBlobOnSelect">false</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY (DUMMY))
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID INTEGER, CHANNEL_ID INTEGER, TRANSACTION_ID INTEGER, STATE CHAR(1), ORD INTEGER, PAGE_ORD INTEGER, DELIVERY_COUNT INTEGER, SCHED_DELIVERY INTEGER, PRIMARY KEY(MESSAGE_ID, CHANNEL_ID))
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID INTEGER, RELIABLE CHAR(1), EXPIRATION INTEGER, TIMESTAMP INTEGER, PRIORITY INTEGER, TYPE INTEGER, HEADERS BLOB, PAYLOAD BLOB, PRIMARY KEY (MESSAGE_ID))
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID INTEGER, BRANCH_QUAL RAW(254), FORMAT_ID INTEGER, GLOBAL_TXID RAW(254), PRIMARY KEY (TRANSACTION_ID))
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR2(255), NEXT_ID INTEGER, PRIMARY KEY(NAME))
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER, CNTR INTEGER, JBM_ID VARCHAR2(255), PRIMARY KEY(NODE_ID, CNTR))
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER WHERE NAME=? FOR UPDATE
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR2(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR2(255), COND VARCHAR2(1023), SELECTOR VARCHAR2(1023), CHANNEL_ID INTEGER, CLUSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+      
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR2(32) NOT NULL, PASSWD VARCHAR2(32) NOT NULL, CLIENTID VARCHAR2(128), PRIMARY KEY(USER_ID))
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR2(32) NOT NULL, USER_ID VARCHAR2(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>


Property changes on: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/oracle-persistence-service.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/postgresql-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/postgresql-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/postgresql-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Postgresql persistence deployment descriptor.
+
+     Tested with PostgresSQL 8.2.3
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUMMY INTEGER, PRIMARY KEY (DUMMY))
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID BIGINT, CHANNEL_ID BIGINT, TRANSACTION_ID BIGINT, STATE CHAR(1), ORD BIGINT, PAGE_ORD BIGINT, DELIVERY_COUNT INTEGER, SCHED_DELIVERY BIGINT, PRIMARY KEY(MESSAGE_ID, CHANNEL_ID))
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY SMALLINT, TYPE SMALLINT, HEADERS BYTEA, PAYLOAD BYTEA, PRIMARY KEY (MESSAGE_ID))
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL BYTEA, FORMAT_ID INTEGER, GLOBAL_TXID BYTEA, PRIMARY KEY (TRANSACTION_ID))
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME))
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER, CNTR INTEGER, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR))
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER WHERE NAME=? FOR UPDATE
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255), NODE_ID INTEGER, QUEUE_NAME VARCHAR(255), COND VARCHAR(1023), SELECTOR VARCHAR(1023), CHANNEL_ID BIGINT, CLUSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLUSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+      
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID))
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/sybase-persistence-service.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/sybase-persistence-service.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/server/default/deploy/sybase-persistence-service.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+     Sybase persistence deployment descriptor.
+
+     Tested with Sybase Adaptive Server Enterprise 12.5.3
+
+     $Id$
+ -->
+
+<server>
+
+   <!-- Persistence Manager MBean configuration
+       ======================================== -->
+
+   <mbean code="org.jboss.messaging.core.jmx.JDBCPersistenceManagerService"
+      name="jboss.messaging:service=PersistenceManager"
+      xmbean-dd="xmdesc/JDBCPersistenceManager-xmbean.xml">
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The datasource to use for the persistence manager -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <!-- If true then we will automatically detect and reject duplicate messages sent during failover -->
+
+      <attribute name="DetectDuplicates">true</attribute>
+
+      <!-- The size of the id cache to use when detecting duplicate messages -->
+
+      <attribute name="IDCacheSize">500</attribute>
+
+      <!-- If true then will add a trailing byte to all byte arrays otherwise Sybase truncates them
+           Only known to be necessary for Sybase -->
+
+      <attribute name="UsingTrailingByte">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+   CREATE_DUAL=CREATE TABLE JBM_DUAL (DUAL_DUMMY INTEGER NOT NULL, PRIMARY KEY (DUAL_DUMMY))
+   CREATE_MESSAGE_REFERENCE=CREATE TABLE JBM_MSG_REF (MESSAGE_ID DECIMAL(19, 0) NOT NULL, CHANNEL_ID DECIMAL(19, 0) NOT NULL, TRANSACTION_ID DECIMAL(19, 0) NULL, STATE CHAR(1), ORD DECIMAL(19, 0), PAGE_ORD DECIMAL(19, 0) NULL, DELIVERY_COUNT INTEGER, SCHED_DELIVERY DECIMAL(19, 0), PRIMARY KEY(MESSAGE_ID, CHANNEL_ID))
+   CREATE_IDX_MESSAGE_REF_TX=CREATE INDEX JBM_MSG_REF_TX ON JBM_MSG_REF (TRANSACTION_ID, STATE)
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID DECIMAL(19, 0) NOT NULL, RELIABLE CHAR(1), EXPIRATION DECIMAL(19, 0), TIMESTAMP DECIMAL(19, 0), PRIORITY TINYINT, TYPE TINYINT, HEADERS IMAGE NULL, PAYLOAD IMAGE NULL, PRIMARY KEY (MESSAGE_ID))
+   CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID DECIMAL(19, 0) NOT NULL, BRANCH_QUAL VARBINARY(254) NULL, FORMAT_ID INTEGER NULL, GLOBAL_TXID VARBINARY(254) NULL, PRIMARY KEY (TRANSACTION_ID))
+   CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255) NOT NULL, NEXT_ID DECIMAL(19, 0), PRIMARY KEY(NAME))
+   CREATE_ID_CACHE=CREATE TABLE JBM_ID_CACHE (NODE_ID INTEGER NOT NULL, CNTR INTEGER NOT NULL, JBM_ID VARCHAR(255), PRIMARY KEY(NODE_ID, CNTR))
+   INSERT_DUAL=INSERT INTO JBM_DUAL VALUES (1)
+   CHECK_DUAL=SELECT 1 FROM JBM_DUAL
+   INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE_REF=DELETE FROM JBM_MSG_REF WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_MESSAGE_REF=UPDATE JBM_MSG_REF SET TRANSACTION_ID=?, STATE='-' WHERE MESSAGE_ID=? AND CHANNEL_ID=? AND STATE='C'
+   UPDATE_PAGE_ORDER=UPDATE JBM_MSG_REF SET PAGE_ORD = ? WHERE MESSAGE_ID=? AND CHANNEL_ID=?
+   COMMIT_MESSAGE_REF1=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='+'
+   COMMIT_MESSAGE_REF2=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='-'
+   ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
+   ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
+   LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
+   LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
+   UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
+   SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
+   UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
+   MOVE_REFERENCE=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE MESSAGE_ID = ? AND CHANNEL_ID = ?
+   LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   INSERT_MESSAGE_CONDITIONAL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE) SELECT ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   UPDATE_MESSAGE_4CONDITIONAL=UPDATE JBM_MSG SET HEADERS=?, PAYLOAD=? WHERE MESSAGE_ID=?
+   INSERT_MESSAGE_CONDITIONAL_FULL=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS, PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)
+   MESSAGE_ID_COLUMN=MESSAGE_ID
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID = ? AND NOT EXISTS (SELECT JBM_MSG_REF.MESSAGE_ID FROM JBM_MSG_REF WHERE JBM_MSG_REF.MESSAGE_ID = ?)
+   INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
+   DELETE_TRANSACTION=DELETE FROM JBM_TX WHERE NODE_ID = ? AND TRANSACTION_ID = ?
+   SELECT_PREPARED_TRANSACTIONS=SELECT TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID FROM JBM_TX WHERE NODE_ID = ?
+   SELECT_MESSAGE_ID_FOR_REF=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '+' ORDER BY ORD
+   SELECT_MESSAGE_ID_FOR_ACK=SELECT MESSAGE_ID, CHANNEL_ID FROM JBM_MSG_REF WHERE TRANSACTION_ID = ? AND STATE = '-' ORDER BY ORD
+   UPDATE_COUNTER=UPDATE JBM_COUNTER SET NEXT_ID = ? WHERE NAME=?
+   SELECT_COUNTER=SELECT NEXT_ID FROM JBM_COUNTER HOLDLOCK WHERE NAME=?
+   INSERT_COUNTER=INSERT INTO JBM_COUNTER (NAME, NEXT_ID) VALUES (?, ?)
+   SELECT_ALL_CHANNELS=SELECT DISTINCT(CHANNEL_ID) FROM JBM_MSG_REF
+   UPDATE_TX=UPDATE JBM_TX SET NODE_ID=? WHERE NODE_ID=?
+   UPDATE_ID_IN_CACHE=UPDATE JBM_ID_CACHE SET JBM_ID = ? WHERE NODE_ID = ? AND CNTR = ?
+   INSERT_ID_IN_CACHE=INSERT INTO JBM_ID_CACHE (NODE_ID, CNTR, JBM_ID) VALUES (?, ?, ?)
+   LOAD_ID_CACHE=SELECT CNTR, JBM_ID FROM JBM_ID_CACHE WHERE NODE_ID = ?
+      ]]></attribute>
+
+      <!-- The maximum number of parameters to include in a prepared statement -->
+
+      <attribute name="MaxParams">500</attribute>
+
+   </mbean>
+
+   <!-- Messaging Post Office MBean configuration
+        ========================================= -->
+
+   <mbean code="org.jboss.messaging.core.jmx.MessagingPostOfficeService"
+      name="jboss.messaging:service=PostOffice"
+      xmbean-dd="xmdesc/MessagingPostOffice-xmbean.xml">
+
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+
+      <!-- The name of the post office -->
+
+      <attribute name="PostOfficeName">JMS post office</attribute>
+
+      <!-- The datasource used by the post office to access it's binding information -->
+
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+
+      <!-- If true will attempt to create tables and indexes on every start-up -->
+
+      <attribute name="CreateTablesOnStartup">true</attribute>
+
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_POSTOFFICE_TABLE=CREATE TABLE JBM_POSTOFFICE (POSTOFFICE_NAME VARCHAR(255) NOT NULL, NODE_ID SMALLINT NOT NULL, QUEUE_NAME VARCHAR(255) NOT NULL, COND VARCHAR(1023), SELECTOR VARCHAR(1023) NULL, CHANNEL_ID INTEGER, CLSTERED CHAR(1), ALL_NODES CHAR(1), PRIMARY KEY(POSTOFFICE_NAME, NODE_ID, QUEUE_NAME))
+INSERT_BINDING=INSERT INTO JBM_POSTOFFICE (POSTOFFICE_NAME, NODE_ID, QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+DELETE_BINDING=DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?
+LOAD_BINDINGS=SELECT QUEUE_NAME, COND, SELECTOR, CHANNEL_ID, CLSTERED, ALL_NODES FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=?
+      ]]></attribute>
+
+      <!-- This post office is non clustered. If you want a clustered post office then set to true -->
+
+      <attribute name="Clustered">false</attribute>
+
+      <!-- All the remaining properties only have to be specified if the post office is clustered.
+           You can safely comment them out if your post office is non clustered -->
+
+      <!-- The JGroups group name that the post office will use -->
+
+      <attribute name="GroupName">${jboss.messaging.groupname:MessagingPostOffice}</attribute>
+
+      <!-- Max time to wait for state to arrive when the post office joins the cluster -->
+
+      <attribute name="StateTimeout">30000</attribute>
+
+      <!-- Max time to wait for a synchronous call to node members using the MessageDispatcher -->
+
+      <attribute name="CastTimeout">30000</attribute>
+      
+      <!-- Set this to true if you want failover of connections to occur when a node is shut down -->
+      
+      <attribute name="FailoverOnNodeLeave">false</attribute>
+      
+      <attribute name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</attribute>
+      <attribute name="ControlChannelName">jbm-control</attribute>
+      <attribute name="DataChannelName">jbm-data</attribute>
+      <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
+   </mbean>
+
+   <!-- Messaging JMS User Manager MBean config
+        ======================================= -->
+
+   <mbean code="org.jboss.jms.server.plugin.JDBCJMSUserManagerService"
+      name="jboss.messaging:service=JMSUserManager"
+      xmbean-dd="xmdesc/JMSUserManager-xmbean.xml">
+      <depends>jboss.jca:service=DataSourceBinding,name=DefaultDS</depends>
+      <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+      <attribute name="DataSource">java:/DefaultDS</attribute>
+      <attribute name="CreateTablesOnStartup">true</attribute>
+      <attribute name="SqlProperties"><![CDATA[
+CREATE_USER_TABLE=CREATE TABLE JBM_USER (USER_ID VARCHAR(32) NOT NULL, PASSWD VARCHAR(32) NOT NULL, CLIENTID VARCHAR(128), PRIMARY KEY(USER_ID))
+CREATE_ROLE_TABLE=CREATE TABLE JBM_ROLE (ROLE_ID VARCHAR(32) NOT NULL, USER_ID VARCHAR(32) NOT NULL, PRIMARY KEY(USER_ID, ROLE_ID))
+SELECT_PRECONF_CLIENTID=SELECT CLIENTID FROM JBM_USER WHERE USER_ID=?
+POPULATE.TABLES.1  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('guest', 'guest')
+POPULATE.TABLES.2  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('j2ee', 'j2ee')
+POPULATE.TABLES.3  = INSERT INTO JBM_USER (USER_ID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
+POPULATE.TABLES.4  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('nobody', 'nobody')
+POPULATE.TABLES.5  = INSERT INTO JBM_USER (USER_ID, PASSWD) VALUES ('dynsub', 'dynsub')
+POPULATE.TABLES.6  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('guest','guest')
+POPULATE.TABLES.7  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('j2ee','guest')
+POPULATE.TABLES.8  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('john','guest')
+POPULATE.TABLES.9  = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('subscriber','john')
+POPULATE.TABLES.10 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','john')
+POPULATE.TABLES.11 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('publisher','dynsub')
+POPULATE.TABLES.12 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','john')
+POPULATE.TABLES.13 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('durpublisher','dynsub')
+POPULATE.TABLES.14 = INSERT INTO JBM_ROLE (ROLE_ID, USER_ID) VALUES ('noacc','nobody')
+      ]]></attribute>
+   </mbean>
+
+</server>

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bootstrap-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bootstrap-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bootstrap-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+<mbean>
+   <description>A bootstrap for a Messaging scoped deployment</description>
+   <class>org.jboss.jms.server.Bootstrap</class>
+</mbean>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bridge-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bridge-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/Bridge-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>A JMS Message Bridge</description>
+   <class>org.jboss.server.bridge.BridgeService</class>
+
+   <!-- Managed constructors -->
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>Gets the underlying instance</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+	<attribute access="read-write" getMethod="getSourceProviderLoader"
+	   setMethod="setSourceProviderLoader">
+	   <description>JMS Provider Loader for the source destination</description>
+	   <name>SourceProviderLoader</name>
+	   <type>javax.management.ObjectName</type>
+	</attribute>
+	
+	<attribute access="read-write" getMethod="getTargetProviderLoader"
+	   setMethod="setTargetProviderLoader">
+	   <description>JMS Provider Loader for the target destination</description>
+	   <name>TargetProviderLoader</name>
+	   <type>javax.management.ObjectName</type>
+	</attribute>	
+		
+	<attribute access="read-write" getMethod="getSourceDestinationLookup"
+	   setMethod="setSourceDestinationLookup">
+	   <description>The source destination lookup</description>
+	   <name>SourceDestinationLookup</name>
+	   <type>java.lang.String</type>
+	</attribute>
+	
+	<attribute access="read-write" getMethod="getTargetDestinationLookup"
+	   setMethod="setTargetDestinationLookup">
+	   <description>The target destination lookup</description>
+	   <name>TargetDestinationLookup</name>
+	   <type>java.lang.String</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getSourceUsername"
+	   setMethod="setSourceUsername">
+	   <description>The source username</description>
+	   <name>SourceUsername</name>
+	   <type>java.lang.String</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getSourcePassword"
+	   setMethod="setSourcePassword">
+	   <description>The source username</description>
+	   <name>SourcePassword</name>
+	   <type>java.lang.String</type>
+	</attribute>		
+	
+	<attribute access="read-write" getMethod="getTargetUsername"
+	   setMethod="setTargetUsername">
+	   <description>The target username</description>
+	   <name>TargetUsername</name>
+	   <type>java.lang.String</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getTargetPassword"
+	   setMethod="setTargetPassword">
+	   <description>The target password</description>
+	   <name>TargetPassword</name>
+	   <type>java.lang.String</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getQualityOfServiceMode"
+	   setMethod="setQualityOfServiceMode">
+	   <description>The quality of service mode. 0 = at most once. 1 = duplicates ok, 2 = once and only once</description>
+	   <name>QualityOfServiceMode</name>
+	   <type>int</type>
+	</attribute>	
+	 
+	<attribute access="read-write" getMethod="getSelector"
+	   setMethod="setSelector">
+	   <description>The JMS selector to use when consuming messages from the source destination</description>
+	   <name>Selector</name>
+	   <type>java.lang.String</type>
+	</attribute>
+	
+	<attribute access="read-write" getMethod="getMaxBatchSize"
+	   setMethod="setMaxBatchSize">
+	   <description>The maximum number of messages to forward at a time, must be >= 1</description>
+	   <name>MaxBatchSize</name>
+	   <type>int</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getMaxBatchTime"
+	   setMethod="setMaxBatchTime">
+	   <description>Number of milliseconds to wait after no messages arrive to forward batch of messages</description>
+	   <name>MaxBatchTime</name>
+	   <type>long</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getSubName"
+	   setMethod="setSubName">
+	   <description>If consuming from a durable subscription, this is the name of the durable subscrition</description>
+	   <name>SubName</name>
+	   <type>java.lang.String</type>
+	</attribute>
+	
+	<attribute access="read-write" getMethod="getClientID"
+	   setMethod="setClientID">
+	   <description>If consuming from a durable subscription, this is the client id to use</description>
+	   <name>ClientID</name>
+	   <type>java.lang.String</type>
+	</attribute>		
+	
+	<attribute access="read-write" getMethod="getFailureRetryInterval"
+	   setMethod="setFailureRetryInterval">
+	   <description>The amount of time to wait in milliseconds before retrying connection creation, after connection failure is detected, or -1 if no retries will be attempted</description>
+	   <name>FailureRetryInterval</name>
+	   <type>long</type>
+	</attribute>	
+	
+	<attribute access="read-write" getMethod="getMaxRetries"
+	   setMethod="setMaxRetries">
+	   <description>The maximum number of attempts to retry connection creation after connection failure is detected</description>
+	   <name>MaxRetries</name>
+	   <type>int</type>
+	</attribute>		
+	
+    <attribute access="read-write" getMethod="isAddMessageIDInHeader" setMethod="setAddMessageIDInHeader">
+	   <description>Should the message id be added as a header in the message when bridging?</description>
+	   <name>AddMessageIDInHeader</name>
+	   <type>boolean</type>
+	</attribute>	
+	
+	<attribute access="read-only" getMethod="isFailed">
+	   <description>Has the bridge failed?</description>
+	   <name>Failed</name>
+	   <type>boolean</type>
+	</attribute>
+	
+	<attribute access="read-only" getMethod="isPaused">
+	   <description>Is the bridge paused?</description>
+	   <name>Paused</name>
+	   <type>boolean</type>
+	</attribute>	
+	
+	<attribute access="read-only" getMethod="isStarted">
+	   <description>Is the bridge started?</description>
+	   <name>Started</name>
+	   <type>boolean</type>
+	</attribute>	
+	
+	
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>   
+   
+   <operation>
+      <description>Pause the bridge</description>
+      <name>pause</name>
+   </operation> 
+   
+   <operation>
+      <description>Resume the bridge</description>
+      <name>resume</name>
+   </operation> 
+
+</mbean>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/ConnectionFactory-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<!-- $Id: ConnectionFactory-xmbean.xml 3332 2007-11-15 09:32:43Z timfox $ -->
+
+
+<mbean>
+   <description>A deployable JBoss Messaging Connection Factory</description>
+   <class>org.jboss.jms.server.connectionfactory.ConnectionFactory</class>
+
+   <!-- Managed constructors -->
+
+   <constructor>
+      <name>ConnectionFactoryService</name>
+   </constructor>
+
+   <constructor>
+      <name>ConnectionFactoryService</name>
+      <parameter>
+         <name>ClientID</name>
+         <type>java.lang.String</type>
+      </parameter>
+   </constructor>
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getClientID">
+      <description>The connection factory client identifier</description>
+      <name>ClientID</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- This attribute is writable to allow configuring an arbitrary set of JNDI names in the
+        queue's service deployment descriptor. Any attempt to change the attribute after
+        initialization will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getJNDIBindings" setMethod="setJNDIBindings">
+      <description>The element containing the JNDI bindings this connection factory is to be bound under</description>
+      <name>JNDIBindings</name>
+      <type>org.w3c.dom.Element</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getPrefetchSize" setMethod="setPrefetchSize">
+      <description>The maximum number of messages that will be prefetched by the client side consumer</description>
+      <name>PrefetchSize</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isSlowConsumers" setMethod="setSlowConsumers">
+      <description>Does this connection factory create slow consumers? Slow consumers never buffer messages</description>
+      <name>SlowConsumers</name>
+      <type>boolean</type>
+   </attribute>   
+
+   <attribute access="read-write" getMethod="getDefaultTempQueueFullSize" setMethod="setDefaultTempQueueFullSize">
+      <description>The default value of paging full size for any temporary queues created for connections from this connection factory</description>
+      <name>DefaultTempQueueFullSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDefaultTempQueuePageSize" setMethod="setDefaultTempQueuePageSize">
+      <description>The default value of paging page size for any temporary queues created for connections from this connection factory</description>
+      <name>DefaultTempQueuePageSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDefaultTempQueueDownCacheSize" setMethod="setDefaultTempQueueDownCacheSize">
+      <description>The default value of paging down cache size for any temporary queues created for connections from this connection factory</description>
+      <name>DefaultTempQueueDownCacheSize</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getDupsOKBatchSize" setMethod="setDupsOKBatchSize">
+      <description>The value of the DUPS_OK_ACKNOWLEDGE batch size to use for sessions created from this connection factory</description>
+      <name>DupsOKBatchSize</name>
+      <type>int</type>
+   </attribute>   
+
+   <!-- ServerPeer ObjectName is configured as a dependency optional-attribute-name, this is the
+        only reason for this attribute to be writable. Any write attempt on this attribute after
+        initialization will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getServerPeer" setMethod="setServerPeer">
+      <description>The ObjectName of the server peer this destination was deployed on</description>
+      <name>ServerPeer</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getConnector" setMethod="setConnector">
+      <description>The ObjectName of the remoting connector this destination will use</description>
+      <name>Connector</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isSupportsFailover" setMethod="setSupportsFailover">
+      <description>Does this connection factory support transparent failover?</description>
+      <name>SupportsFailover</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isSupportsLoadBalancing" setMethod="setSupportsLoadBalancing">
+      <description>Does this connection factory support internal load balancing on createConnection(...) requests?</description>
+      <name>SupportsLoadBalancing</name>
+      <type>boolean</type>
+   </attribute>   
+
+   <attribute access="read-write" getMethod="getLoadBalancingFactory" setMethod="setLoadBalancingFactory">
+      <description>The pluggable load balancing policy factory that is used to decide the next cluster node to create a clustered connection to</description>
+      <name>LoadBalancingFactory</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isStrictTck" setMethod="setStrictTck">
+      <description>Does this CF support StrictTCK</description>
+      <name>StrictTck</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isSendAcksAsync" setMethod="setSendAcksAsync">
+      <description>Should acknowledgements be sent asynchronously?</description>
+      <name>SendAcksAsync</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isDisableRemotingChecks" setMethod="setDisableRemotingChecks">
+      <description>Disable remoting connector parameter sanity checks. There is rarely a good reason to set this to true</description>
+      <name>DisableRemotingChecks</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isDisableRemotingChecks" setMethod="setDisableRemotingChecks">
+      <description>Disable remoting connector parameter sanity checks. There is rarely a good reason to set this to true</description>
+      <name>DisableRemotingChecks</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isEnableOrderingGroup" setMethod="setEnableOrderingGroup">
+      <description>Enable/Disable message ordering group on connection factory. Default is false.</description>
+      <name>EnableOrderingGroup</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getDefaultOrderingGroupName" setMethod="setDefaultOrderingGroupName">
+      <description>The default name for message ordering group, only make sense when ordering group is enabled on the connection factory.</description>
+      <name>DefaultOrderingGroupName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+</mbean>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/JDBCPersistenceManager-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/JDBCPersistenceManager-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/JDBCPersistenceManager-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>A JDBC persistence manager</description>
+   <class>org.jboss.messaging.core.jmx.JDBCPersistenceManagerService</class>
+
+   <!-- Managed constructors -->
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to plug into the server peer</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDataSource" setMethod="setDataSource">
+      <description>The JNDI name of the DataSource used by this persistence manager</description>
+      <name>DataSource</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getTransactionManager" setMethod="setTransactionManager">
+      <description>The ObjectName of the TransactionManager used by this persistence manager</description>
+      <name>TransactionManager</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isCreateTablesOnStartup" setMethod="setCreateTablesOnStartup">
+      <description>Should database tables be created on startup?</description>
+      <name>CreateTablesOnStartup</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isUsingBatchUpdates" setMethod="setUsingBatchUpdates">
+      <description>Should JDBC batch updates be used?</description>
+      <name>UsingBatchUpdates</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isUsingBinaryStream" setMethod="setUsingBinaryStream">
+      <description>Should binary stream be used for accessing message headers / body ?</description>
+      <name>UsingBinaryStream</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isUsingTrailingByte" setMethod="setUsingTrailingByte">
+      <description>Should a trailing byte be added to VARBINARY columns - this would be true for databases such as Sybase which would otherwise truncate trailing zeros</description>
+      <name>UsingTrailingByte</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getSqlProperties" setMethod="setSqlProperties">
+      <description>DML and DDL overrides</description>
+      <name>SqlProperties</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getMaxParams" setMethod="setMaxParams">
+      <description>The max number of params to be used in a generated PreparedStatement</description>
+      <name>MaxParams</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isUseNDBFailoverStrategy" setMethod="setUseNDBFailoverStrategy">
+      <description>This changes the retry strategy for the persistence manager. If failure occurs on commit, we ignore the second failure and assume that the insert happened correctly</description>
+      <name>UseNDBFailoverStrategy</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isSupportsBlobOnSelect" setMethod="setSupportsBlobOnSelect">
+      <description>Some databases don't support binding blobs on select clauses</description>
+      <name>SupportsBlobOnSelect</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isSupportsSetNullOnBlobs" setMethod="setSupportsSetNullOnBlobs">
+      <description>Some databases don't support binding null blobs using setNull (mainly DB2)</description>
+      <name>SupportsSetNullOnBlobs</name>
+      <type>boolean</type>
+   </attribute>
+
+
+   <attribute access="read-write" getMethod="isDetectDuplicates" setMethod="setDetectDuplicates">
+      <description>Detect duplicate message sends on failover? There is some performance hit for doing this</description>
+      <name>DetectDuplicates</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getIDCacheSize" setMethod="setIDCacheSize">
+      <description>The ID cache size to use when detecting duplicate message sends</description>
+      <name>IDCacheSize</name>
+      <type>int</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+</mbean>

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/JMSUserManager-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/JMSUserManager-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/JMSUserManager-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>An JMS User Manager</description>
+   <class>org.jboss.server.plugin.JDBCJMSUserManagerService</class>
+
+   <!-- Managed constructors -->
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to plug into the server peer</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDataSource" setMethod="setDataSource">
+      <description>The JNDI name of the DataSource used by this ChannelMapper instance</description>
+      <name>DataSource</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getTransactionManager" setMethod="setTransactionManager">
+      <description>The ObjectName of the TransactionManager used by this ChannelMaper instance</description>
+      <name>TransactionManager</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getSqlProperties" setMethod="setSqlProperties">
+      <description>DML and DDL overrides</description>
+      <name>SqlProperties</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isCreateTablesOnStartup" setMethod="setCreateTablesOnStartup">
+      <description>Should database tables be created on startup?</description>
+      <name>CreateTablesOnStartup</name>
+      <type>boolean</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>   
+
+</mbean>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/MessagingPostOffice-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/MessagingPostOffice-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/MessagingPostOffice-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>An messaging post-office</description>
+   <class>org.jboss.messaging.core.jmx.MessagingPostOfficeService</class>
+
+   <!-- Managed constructors -->
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to plug into the server peer</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDataSource" setMethod="setDataSource">
+      <description>The JNDI name of the DataSource used by this ChannelMapper instance</description>
+      <name>DataSource</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getTransactionManager" setMethod="setTransactionManager">
+      <description>The ObjectName of the TransactionManager used by this ChannelMaper instance</description>
+      <name>TransactionManager</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getSqlProperties" setMethod="setSqlProperties">
+      <description>DML and DDL overrides</description>
+      <name>SqlProperties</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isCreateTablesOnStartup" setMethod="setCreateTablesOnStartup">
+      <description>Should database tables be created on startup?</description>
+      <name>CreateTablesOnStartup</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getPostOfficeName" setMethod="setPostOfficeName">
+      <description>The name of the post office</description>
+      <name>PostOfficeName</name>
+      <type>java.lang.String</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="getServerPeer" setMethod="setServerPeer">
+      <description>The ObjectName of the server peer this destination was deployed on</description>
+      <name>ServerPeer</name>
+      <type>javax.management.ObjectName</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="getGroupName" setMethod="setGroupName">
+      <description>The name of the JGroups group to use</description>
+      <name>GroupName</name>
+      <type>java.lang.String</type>
+   </attribute>   
+           
+   <attribute access="read-write" getMethod="getStateTimeout" setMethod="setStateTimeout">
+      <description>Timeout for getState()</description>
+      <name>StateTimeout</name>
+      <type>long</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getCastTimeout" setMethod="setCastTimeout">
+      <description>Timeout for getState()</description>
+      <name>CastTimeout</name>
+      <type>long</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="isClustered" setMethod="setClustered">
+      <description>Is this post office clustered?</description>
+      <name>Clustered</name>
+      <type>boolean</type>
+   </attribute>   
+      
+   <attribute access="read-write" getMethod="getControlChannelConfig" setMethod="setControlChannelConfig">
+      <description>The JGroups stack configuration for the control channel</description>
+      <name>ControlChannelConfig</name>
+      <type>org.w3c.dom.Element</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getDataChannelConfig" setMethod="setDataChannelConfig">
+      <description>The JGroups stack configuration for the data channel</description>
+      <name>DataChannelConfig</name>
+      <type>org.w3c.dom.Element</type>
+   </attribute>   
+   
+   <attribute access="read-write" getMethod="getServerPeer" setMethod="setServerPeer">
+      <description>The ObjectName of the server peer this destination was deployed on</description>
+      <name>ServerPeer</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getChannelFactoryName" setMethod="setChannelFactoryName">
+      <description>The ObjectName of the JGroups Multiplexer used to create JChannels</description>
+      <name>ChannelFactoryName</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getControlChannelName" setMethod="setControlChannelName">
+      <description>The name of the stack used on multiplexer for Control Channels</description>
+      <name>ControlChannelName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDataChannelName" setMethod="setDataChannelName">
+      <description>The name of the stack used on multiplexer for Data Channels</description>
+      <name>DataChannelName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getChannelPartitionName" setMethod="setChannelPartitionName">
+      <description>The partition name used to identify JMS/Postoffice on the JGroups Multiplexor</description>
+      <name>ChannelPartitionName</name>
+      <type>java.lang.String</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxConcurrentReplications" setMethod="setMaxConcurrentReplications">
+      <description>The maximum number of concurrent replications</description>
+      <name>MaxConcurrentReplications</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isFailoverOnNodeLeave" setMethod="setFailoverOnNodeLeave">
+      <description>If true then failover will occur when a node cleanly leaves the group - i.e. it is cleanly shut down</description>
+      <name>FailoverOnNodeLeave</name>
+      <type>boolean</type>
+   </attribute>   
+   
+   <attribute access="read-only" getMethod="getNodeIDView">
+      <description>Get the set of nodes in the cluster</description>
+      <name>NodeIDView</name>
+      <type>java.util.Set</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+     
+</mbean>
\ No newline at end of file

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/NullPersistenceManager-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/NullPersistenceManager-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/NullPersistenceManager-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>A null persistence manager</description>
+   <class>org.jboss.messaging.core.jmx.NullPersistenceManagerService</class>
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to plug into the server peer</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+</mbean>

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/Queue-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/Queue-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/Queue-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<!-- $Id: Queue-xmbean.xml 3332 2007-11-15 09:32:43Z timfox $ -->
+
+<mbean>
+   <description>A deployable JBoss Messaging Queue</description>
+   <class>org.jboss.jms.server.destination.QueueService</class>
+
+   <!-- Managed constructors -->
+
+   <constructor>
+      <name>Queue</name>
+   </constructor>
+
+   <constructor>
+      <name>Queue</name>
+      <parameter>
+         <name>IsCreatedProgrammatically</name>
+         <type>boolean</type>
+      </parameter>
+   </constructor>
+   
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getName">
+      <description>The destination name</description>
+      <name>Name</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- This attribute is writable to allow configuring an arbitrary JNDI name in the queue's
+        service deployment descriptor. Any attempt to change the attribute after initialization
+        will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getJNDIName" setMethod="setJNDIName">
+      <description>The destination's JNDI name</description>
+      <name>JNDIName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- ServerPeer ObjectName is configured as a dependency optional-attribute-name, this is the
+        only reason for this attribute to be writable. Any write attempt on this attribute after
+        initialization will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getServerPeer" setMethod="setServerPeer">
+      <description>The ObjectName of the server peer this destination was deployed on</description>
+      <name>ServerPeer</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getDLQ" setMethod="setDLQ">
+      <description>The DLQ for this queue, overrides the default DLQ on the server peer</description>
+      <name>DLQ</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getExpiryQueue" setMethod="setExpiryQueue">
+      <description>The expiry queue for this queue, overrides the default expiry queue on the server peer</description>
+      <name>ExpiryQueue</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getRedeliveryDelay" setMethod="setRedeliveryDelay">
+      <description>The delay before redelivering</description>
+      <name>RedeliveryDelay</name>
+      <type>long</type>
+   </attribute>   
+
+   <attribute access="read-write" getMethod="getSecurityConfig" setMethod="setSecurityConfig">
+      <description>The destination's security configuration</description>
+      <name>SecurityConfig</name>
+      <type>org.w3c.dom.Element</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="isCreatedProgrammatically">
+      <description>True if this destination was created programmatically</description>
+      <name>CreatedProgrammatically</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getMessageCount">
+      <description>The number of messages in the queue</description>
+      <name>MessageCount</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getDeliveringCount">
+      <description>The number of messages currently being delivered</description>
+      <name>DeliveringCount</name>
+      <type>int</type>
+   </attribute>   
+   
+   <attribute access="read-only" getMethod="getScheduledMessageCount">
+      <description>The number of scheduled messages in the queue</description>
+      <name>ScheduledMessageCount</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxSize" setMethod="setMaxSize">
+      <description>The maximum number of messages this queue can hold before they are dropped</description>
+      <name>MaxSize</name>
+      <type>int</type>
+   </attribute>   
+
+   <attribute access="read-write" getMethod="getFullSize" setMethod="setFullSize">
+      <description>The in-memory message limit, can only be set when queue is stopped</description>
+      <name>FullSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getPageSize" setMethod="setPageSize">
+      <description>The paging size, can only be set when queue is stopped</description>
+      <name>PageSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDownCacheSize" setMethod="setDownCacheSize">
+      <description>The write-cache size, can only be set when queue is stopped</description>
+      <name>DownCacheSize</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isClustered" setMethod="setClustered">
+      <description>Is this a clustered destination?</description>
+      <name>Clustered</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isDropOldMessageOnRedeploy" setMethod="setDropOldMessageOnRedeploy">
+      <description>When you redeploy a queue after changing its clustered state, do you want to keep or abandon its existing messages?</description>
+      <name>DropOldMessageOnRedeploy</name>
+      <type>boolean</type>
+   </attribute>   
+
+   <attribute access="read-only" getMethod="getMessageCounter">
+      <description>Get the message counter for the queue</description>
+      <name>MessageCounter</name>
+      <type>org.jboss.jms.server.messagecounter.MessageCounter</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getMessageStatistics">
+      <description>Get the message statistics for the queue</description>
+      <name>MessageStatistics</name>
+      <type>org.jboss.jms.server.messagecounter.MessageStatistics</type>
+   </attribute>   
+   
+   <attribute access="read-write" getMethod="getMessageCounterHistoryDayLimit" setMethod="setMessageCounterHistoryDayLimit">
+      <description>The day limit for the message counter</description>
+      <name>MessageCounterHistoryDayLimit</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxDeliveryAttempts" setMethod="setMaxDeliveryAttempts">
+      <description>The maximum delivery attempts to the queue</description>
+      <name>MaxDeliveryAttempts</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getConsumerCount">
+      <description>The number of consumers on the queue</description>
+      <name>ConsumerCount</name>
+      <type>int</type>
+   </attribute>   
+   
+   <!-- instance access -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to be accessed by select plugins via a typed hard reference</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+   
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+   <operation>
+      <description>Remove all messages in the queue</description>
+      <name>removeAllMessages</name>
+   </operation>
+
+   <operation>
+      <description>List all messages</description>
+      <name>listAllMessages</name>
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List all messages with selector</description>
+      <name>listAllMessages</name>
+      <parameter>
+         <description>Expression to define the selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>   
+   
+   <operation>
+      <description>List durable messages</description>
+      <name>listDurableMessages</name>
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List durable messages with selector</description>
+      <name>listDurableMessages</name>
+      <parameter>
+         <description>Expression to define the selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>  
+   
+   <operation>
+      <description>List non durable messages</description>
+      <name>listNonDurableMessages</name>
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List non durable messages with selector</description>
+      <name>listNonDurableMessages</name>
+      <parameter>
+         <description>Expression to define the selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>      
+
+   <operation>
+      <description>List all messages which meet the condition described in selector</description>
+      <name>listMessages</name>
+      <parameter>
+         <description>Expression to define the selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>Reset the message counter</description>
+      <name>resetMessageCounter</name>
+   </operation>   
+   
+   <operation>
+      <description>Reset the message counter history</description>
+      <name>resetMessageCounterHistory</name>
+   </operation>   
+   
+   <operation>
+      <description>Get the message counter as HTML</description>
+      <name>listMessageCounterAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>
+   
+   <operation>
+      <description>Get the message counter history as HTML</description>
+      <name>listMessageCounterHistoryAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>       
+   
+</mbean>

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/ServerPeer-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/ServerPeer-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/ServerPeer-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+<mbean>
+   <description>JBoss Messaging Server Peer</description>
+   <class>org.jboss.jms.server.ServerPeer</class>
+
+   <!-- Managed constructors -->
+
+   <constructor>
+      <name>ServerPeer</name>
+   </constructor>
+
+   <!-- Managed attributes -->
+
+   <!-- plugins ObjectNames -->
+
+   <attribute access="read-write" getMethod="getPersistenceManager" setMethod="setPersistenceManager">
+      <description>The ObjectName of the persistence manager</description>
+      <name>PersistenceManager</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getPostOffice" setMethod="setPostOffice">
+      <description>The ObjectName of the post office</description>
+      <name>PostOffice</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>        
+   
+   <attribute access="read-write" getMethod="getJMSUserManager" setMethod="setJMSUserManager">
+      <description>The ObjectName of the jms user manager</description>
+      <name>JMSUserManager</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>   
+         
+   <!-- instance access -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to be accessed by select plugins via a typed hard reference</description>
+      <name>Instance</name>
+      <type>java.lang.Object</type>
+   </attribute>
+
+   <!-- regular JMX attributes -->
+
+   <attribute access="read-only" getMethod="getJMSVersion">
+      <description>The version of the JMS specification implemented by this provider</description>
+      <name>JMSVersion</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getJMSMajorVersion">
+      <description>The major version of the JMS specification implemented by this provider</description>
+      <name>JMSMajorVersion</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getJMSMinorVersion">
+      <description>The minor version of the JMS specification implemented by this provider</description>
+      <name>JMSMinorVersion</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getJMSProviderName">
+      <description>The JMS provider name</description>
+      <name>JMSProviderName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getProviderVersion">
+      <description>The fully qualified provider version string</description>
+      <name>ProviderVersion</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getProviderMajorVersion">
+      <description>The JMS provider major version number</description>
+      <name>ProviderMajorVersion</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getProviderMinorVersion">
+      <description>The JMS provider minor version number</description>
+      <name>ProviderMinorVersion</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getDestinations">
+      <description>Returns a Set of javax.jms.Destinations (Queues and Topics) containing the current active destinations</description>
+      <name>Destinations</name>
+      <type>java.util.Set</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getMessageCounters">
+      <description>The message counters</description>
+      <name>MessageCounters</name>
+      <type>java.util.List</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="getMessageStatistics">
+      <description>The message statistics</description>
+      <name>MessageStatistics</name>
+      <type>java.util.List</type>
+   </attribute>
+      
+   <attribute access="read-write" getMethod="getDefaultDLQ" setMethod="setDefaultDLQ">
+      <description>The ObjectName of the default DLQ - used when an individual queue does not specify a DLQ</description>
+      <name>DefaultDLQ</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>  
+   
+   <attribute access="read-write" getMethod="getDefaultExpiryQueue" setMethod="setDefaultExpiryQueue">
+      <description>The ObjectName of the default expiry queue - used when an individual queue does not specify an expiry queue</description>
+      <name>DefaultExpiryQueue</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>   
+
+   <attribute access="read-write" getMethod="getServerPeerID" setMethod="setServerPeerID">
+      <description>The ID of the ServerPeer. Must be unique per JBoss instance</description>
+      <name>ServerPeerID</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDefaultQueueJNDIContext" setMethod="setDefaultQueueJNDIContext">
+      <description>The default JNDI context queues are bound under.</description>
+      <name>DefaultQueueJNDIContext</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDefaultTopicJNDIContext" setMethod="setDefaultTopicJNDIContext">
+      <description>The default JNDI context topics are bound under.</description>
+      <name>DefaultTopicJNDIContext</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getServerAopConfig" setMethod="setServerAopConfig">
+      <description>The aop.xml resource name for the server aspects.</description>
+      <name>ServerAopConfig</name>
+      <type>java.lang.String</type>
+   </attribute>
+   <attribute access="read-write" getMethod="getClientAopConfig" setMethod="setClientAopConfig">
+      <description>The aop.xml resource name for the client aspects.</description>
+      <name>ClientAopConfig</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getSecurityStore" setMethod="setSecurityStore">
+      <description>The SecurityStore implementation for the server.</description>
+      <name>SecurityStore</name>
+      <type>org.jboss.jms.server.SecurityStore</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDefaultMaxDeliveryAttempts" setMethod="setDefaultMaxDeliveryAttempts">
+      <description>The default maximum delivery attempts for destinations, unless overridden on the destination</description>
+      <name>DefaultMaxDeliveryAttempts</name>
+      <type>int</type>
+   </attribute>  
+   
+   <attribute access="read-write" getMethod="getFailoverStartTimeout" setMethod="setFailoverStartTimeout">
+      <description>The maximum amount of time to wait for failover to begin</description>
+      <name>FailoverStartTimeout</name>
+      <type>long</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="getFailoverCompleteTimeout" setMethod="setFailoverCompleteTimeout">
+      <description>The maximum amount of time to wait for failover to complete</description>
+      <name>FailoverCompleteTimeout</name>
+      <type>long</type>
+   </attribute>      
+   
+   <attribute access="read-write" getMethod="getDefaultRedeliveryDelay" setMethod="setDefaultRedeliveryDelay">
+      <description>How long to wait before redelivery, can be overridden on the destination</description>
+      <name>DefaultRedeliveryDelay</name>
+      <type>long</type>
+   </attribute>  
+   
+   <attribute access="read-write" getMethod="getMessageCounterSamplePeriod" setMethod="setMessageCounterSamplePeriod">
+      <description>The period between which the message counter manager enquires for statistics from queues</description>
+      <name>MessageCounterSamplePeriod</name>
+      <type>long</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="getClusterPullConnectionFactoryName" setMethod="setClusterPullConnectionFactoryName">
+      <description>The name of the connection factory used to create connections to pull messages from one node to another</description>
+      <name>ClusterPullConnectionFactoryName</name>
+      <type>java.lang.String</type>
+   </attribute> 
+
+   <attribute access="read-write" getMethod="isDefaultPreserveOrdering" setMethod="setDefaultPreserveOrdering">
+      <description>When pulling messages do we need to preserve the ordering of messages consumed from a particular producer, for a particular consumer?</description>
+      <name>DefaultPreserveOrdering</name>
+      <type>boolean</type>
+   </attribute>    
+   
+   <attribute access="read-write" getMethod="getRecoverDeliveriesTimeout" setMethod="setRecoverDeliveriesTimeout">
+      <description>When a failover occurs the max. amount of time the server will keep messages in its recovery area. waiting for clients to reconnect</description>
+      <name>RecoverDeliveriesTimeout</name>
+      <type>long</type>
+   </attribute> 
+   
+   <attribute access="read-write" getMethod="getDefaultMessageCounterHistoryDayLimit" setMethod="setDefaultMessageCounterHistoryDayLimit">
+      <description>The default max number of messages per day in message counter history</description>
+      <name>DefaultMessageCounterHistoryDayLimit</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isSupportsFailover" setMethod="setSupportsFailover">
+      <description>Should Server Side Failover be executed</description>
+      <name>SupportsFailover</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isStrictTck" setMethod="setStrictTck">
+      <description>Should strict TCK behaviour be always followed?</description>
+      <name>StrictTck</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isEnableMessageCounters" setMethod="setEnableMessageCounters">
+	<description>Enable message counters</description>
+	<name>EnableMessageCounters</name>
+	<type>boolean</type>
+   </attribute>
+   
+   <attribute access="write-only" setMethod="setSuckerPassword">
+      <description>The password used for message suckers. Must match the SecurityStore.SuckerPassword.</description>
+      <name>SuckerPassword</name>
+      <type>java.lang.String</type>
+   </attribute>   
+   
+   <attribute access="read-write" getMethod="getSuckerConnectionRetryTimes" setMethod="setSuckerConnectionRetryTimes">
+      <description>Max times for a sucker's connection to retry in case of failure. Default is -1 (retry forever)</description>
+      <name>SuckerConnectionRetryTimes</name>
+      <type>int</type>
+   </attribute>   
+   
+   <attribute access="read-write" getMethod="getSuckerConnectionRetryInterval" setMethod="setSuckerConnectionRetryInterval">
+      <description>The interval in milliseconds between each retry of the failed sucker's connection</description>
+      <name>SuckerConnectionRetryInterval</name>
+      <type>int</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+   <operation>
+      <description>
+         Deploys a queue with the specified name/JNDI name. The corresponding destination service will be instantiated, created and started.
+      </description>
+      <name>deployQueue</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>jndiName</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.lang.String</return-type>
+   </operation>
+   
+   <operation>
+      <description>
+         Deploys a queue with the specified name/JNDI name and paging parameters. The corresponding destination service will be instantiated, created and started.
+      </description>
+      <name>deployQueue</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>jndiName</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>fullSize</name>
+         <type>int</type>
+      </parameter>
+      <parameter>
+         <name>pageSize</name>
+         <type>int</type>
+      </parameter>
+      <parameter>
+         <name>downCacheSize</name>
+         <type>int</type>
+      </parameter>            
+      <return-type>java.lang.String</return-type>
+   </operation>   
+
+   <operation>
+      <description>
+         Undeploys the queue, but does not delete its data from storage.
+      </description>
+      <name>undeployQueue</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>boolean</return-type>
+   </operation>
+   
+   <operation>
+      <description>
+         Undeploys the queue, and deletes its data from storage
+      </description>
+      <name>destroyQueue</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>boolean</return-type>
+   </operation>   
+
+   <operation>
+      <description>
+         Deploys a topic with the specified name/JNDI name. The corresponding destination service will be instantiated, created and started.
+      </description>
+      <name>deployTopic</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>jndiName</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>fullSize</name>
+         <type>int</type>
+      </parameter>
+      <parameter>
+         <name>pageSize</name>
+         <type>int</type>
+      </parameter>
+      <parameter>
+         <name>downCacheSize</name>
+         <type>int</type>
+      </parameter>         
+      <return-type>java.lang.String</return-type>
+   </operation>
+   
+   <operation>
+      <description>
+         Deploys a topic with the specified name/JNDI name and paging parameters. The corresponding destination service will be instantiated, created and started.
+      </description>
+      <name>deployTopic</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <parameter>
+         <name>jndiName</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.lang.String</return-type>
+   </operation>   
+
+   <operation>
+      <description>
+         Undeploys the topic, but does not delete all its data from storage
+      </description>
+      <name>undeployTopic</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>boolean</return-type>
+   </operation>
+   
+   <operation>
+      <description>
+      	Undeploys the topic and deletes all its data
+      </description>
+      <name>destroyTopic</name>
+      <parameter>
+         <name>name</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>boolean</return-type>
+   </operation>   
+   
+   <operation>
+      <description>
+         List all message counters in HTML
+      </description>
+      <name>listMessageCountersAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>    
+   
+   <operation>
+      <description>
+         Reset all message counters
+      </description>
+      <name>resetAllMessageCounters</name>
+   </operation>  
+   
+   <operation>
+      <description>
+         Reset all message counter histories
+      </description>
+      <name>resetAllMessageCounterHistories</name>
+   </operation>    
+   
+   <operation>
+      <description>
+         Enable message counters
+      </description>
+      <name>enableMessageCounters</name>
+   </operation> 
+   
+   <operation>
+      <description>
+	 Disable message counters
+      </description>
+      <name>disableMessageCounters</name>
+   </operation>    
+   
+   <operation>
+      <description>
+         Retrieve list of all prepared transaction ids
+      </description>
+      <name>retrievePreparedTransactions</name>
+      <return-type>java.util.List</return-type>
+   </operation>  
+   
+   <operation>
+      <description>
+         Show of all prepared transaction ids in HTML
+      </description>
+      <name>showPreparedTransactionsAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>
+
+   <operation>
+      <description>
+         Show of all information about active clients
+      </description>
+      <name>showActiveClientsAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>
+
+
+</mbean>

Added: branches/Branch_1_4/integration/EAP5/etc/xmdesc/Topic-xmbean.xml
===================================================================
--- branches/Branch_1_4/integration/EAP5/etc/xmdesc/Topic-xmbean.xml	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/etc/xmdesc/Topic-xmbean.xml	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+   <!DOCTYPE mbean PUBLIC
+      "-//JBoss//DTD JBOSS XMBEAN 1.2//EN"
+      "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_2.dtd">
+
+<mbean>
+   <description>A deployable JBoss Messaging Topic</description>
+   <class>org.jboss.jms.server.destination.TopicService</class>
+
+   <!-- Managed constructors -->
+
+   <constructor>
+      <name>Topic</name>
+   </constructor>
+
+   <constructor>
+      <name>Topic</name>
+      <parameter>
+         <name>IsCreatedProgrammatically</name>
+         <type>boolean</type>
+      </parameter>
+   </constructor>
+
+   <!-- Managed attributes -->
+
+   <attribute access="read-only" getMethod="getName">
+      <description>The destination name</description>
+      <name>Name</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- This attribute is writable to allow configuring an arbitrary JNDI name in the topic's
+        service deployment descriptor. Any attempt to change the attribute after initialization
+        will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getJNDIName" setMethod="setJNDIName">
+      <description>The destination's JNDI name</description>
+      <name>JNDIName</name>
+      <type>java.lang.String</type>
+   </attribute>
+
+   <!-- ServerPeer ObjectName is configured as a dependency optional-attribute-name, this is the
+        only reason for this attribute to be writable. Any write attempt on this attribute after
+        initialization will be ignored.
+   -->
+   <attribute access="read-write" getMethod="getServerPeer" setMethod="setServerPeer">
+      <description>The ObjectName of the server peer this destination was deployed on</description>
+      <name>ServerPeer</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getDLQ" setMethod="setDLQ">
+      <description>The DLQ for this queue, overrides the default DLQ on the server peer</description>
+      <name>DLQ</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getExpiryQueue" setMethod="setExpiryQueue">
+      <description>The expiry queue for this queue, overrides the default expiry queue on the server peer</description>
+      <name>ExpiryQueue</name>
+      <type>javax.management.ObjectName</type>
+   </attribute>   
+   
+   <attribute access="read-write" getMethod="getRedeliveryDelay" setMethod="setRedeliveryDelay">
+      <description>The delay before redelivering</description>
+      <name>RedeliveryDelay</name>
+      <type>long</type>
+   </attribute>    
+
+   <attribute access="read-write" getMethod="getSecurityConfig" setMethod="setSecurityConfig">
+      <description>The destination's security configuration</description>
+      <name>SecurityConfig</name>
+      <type>org.w3c.dom.Element</type>
+   </attribute>
+
+   <attribute access="read-only" getMethod="isCreatedProgrammatically">
+      <description>True if this destination was created programmatically</description>
+      <name>CreatedProgrammatically</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="getMaxSize" setMethod="setMaxSize">
+      <description>The maximum number of messages subscriptions of this topic can hold before they are dropped</description>
+      <name>MaxSize</name>
+      <type>int</type>
+   </attribute>    
+
+   <attribute access="read-write" getMethod="getFullSize" setMethod="setFullSize">
+      <description>The in-memory message limit, can only be set when topic is stopped</description>
+      <name>FullSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getPageSize" setMethod="setPageSize">
+      <description>The paging size, can only be set when topic is stopped</description>
+      <name>PageSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getDownCacheSize" setMethod="setDownCacheSize">
+      <description>The write-cache size, can only be set when topic is stopped</description>
+      <name>DownCacheSize</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="isClustered" setMethod="setClustered">
+      <description>Is this a clustered destination?</description>
+      <name>Clustered</name>
+      <type>boolean</type>
+   </attribute>
+   
+   <attribute access="read-write" getMethod="isDropOldMessageOnRedeploy" setMethod="setDropOldMessageOnRedeploy">
+      <description>When you redeploy a topic after changing its clustered state, do you want to keep or abandon its existing messages?</description>
+      <name>DropOldMessageOnRedeploy</name>
+      <type>boolean</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getMessageCounterHistoryDayLimit" setMethod="setMessageCounterHistoryDayLimit">
+      <description>The day limit for the message counters of this topic</description>
+      <name>MessageCounterHistoryDayLimit</name>
+      <type>int</type>
+   </attribute>
+
+   <attribute access="read-write" getMethod="getMaxDeliveryAttempts" setMethod="setMaxDeliveryAttempts">
+      <description>The maximum delivery attempts to the topic</description>
+      <name>MaxDeliveryAttempts</name>
+      <type>int</type>
+   </attribute>
+   
+   <attribute access="read-only" getMethod="getMessageCounters">
+      <description>The message counters for the topic</description>
+      <name>MessageCounters</name>
+      <type>java.util.List</type>
+   </attribute>  
+   
+   <attribute access="read-only" getMethod="getAllMessageCount">
+      <description>The count of all messages in all subscriptions of this topic</description>
+      <name>AllMessageCount</name>
+      <type>int</type>
+   </attribute> 
+   
+   <attribute access="read-only" getMethod="getDurableMessageCount">
+      <description>The count of all messages in all durable subscriptions of this topic</description>
+      <name>DurableMessageCount</name>
+      <type>int</type>
+   </attribute>   
+   
+   <attribute access="read-only" getMethod="getNonDurableMessageCount">
+      <description>The count of all messages in all non durable subscriptions of this topic</description>
+      <name>NonDurableMessageCount</name>
+      <type>int</type>
+   </attribute>      
+   
+   <attribute access="read-only" getMethod="getAllSubscriptionsCount">
+      <description>The count of all subscriptions of this topic</description>
+      <name>AllSubscriptionsCount</name>
+      <type>int</type>
+   </attribute> 
+   
+   <attribute access="read-only" getMethod="getDurableSubscriptionsCount">
+      <description>The count of all durable subscriptions of this topic</description>
+      <name>DurableSubscriptionsCount</name>
+      <type>int</type>
+   </attribute>    
+   
+   <attribute access="read-only" getMethod="getNonDurableSubscriptionsCount">
+      <description>The count of all non durable subscriptions of this topic</description>
+      <name>NonDurableSubscriptionsCount</name>
+      <type>int</type>
+   </attribute>    
+   
+   
+   <!-- instance access -->
+
+   <attribute access="read-only" getMethod="getInstance">
+      <description>The instance to be accessed by select plugins via a typed hard reference</description>
+      <name>Instance</name>
+      <type>org.jboss.messaging.core.contract.MessagingComponent</type>
+   </attribute>
+
+   <!-- Managed operations -->
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>create</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>start</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>stop</name>
+   </operation>
+
+   <operation>
+      <description>JBoss Service lifecycle operation</description>
+      <name>destroy</name>
+   </operation>
+
+   <operation>
+      <description>Remove all messages</description>
+      <name>removeAllMessages</name>
+   </operation>
+
+   <operation>
+      <description>Return all subscriptions for the topic</description>
+      <name>listAllSubscriptions</name>
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>Return all durable subscriptions for the topic</description>
+      <name>listDurableSubscriptions</name>
+      <return-type>java.util.List</return-type>
+   </operation> 
+   
+   <operation>
+      <description>Return all non durable subscriptions for the topic</description>
+      <name>listNonDurableSubscriptions</name>
+      <return-type>java.util.List</return-type>
+   </operation>     
+   
+   <operation>
+      <description>Return all subscriptions for the topic in HTML</description>
+      <name>listAllSubscriptionsAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>
+   
+   <operation>
+      <description>Return all durable subscriptions for the topic in HTML</description>
+      <name>listDurableSubscriptionsAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation> 
+   
+   <operation>
+      <description>Return all non durable subscriptions for the topic in HTML</description>
+      <name>listNonDurableSubscriptionsAsHTML</name>
+      <return-type>java.lang.String</return-type>
+   </operation>      
+
+   <operation>
+      <description>List all messages for the specified subscription</description>
+      <name>listAllMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List all messages for the specified subscription with the specified selector</description>
+      <name>listAllMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <parameter>
+         <description>The selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>   
+   
+   
+   <operation>
+      <description>List all durable messages for the specified subscription</description>
+      <name>listDurableMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List all durable messages for the specified subscription with the specified selector</description>
+      <name>listDurableMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <parameter>
+         <description>The selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>  
+   
+   <operation>
+      <description>List all non durable messages for the specified subscription</description>
+      <name>listNonDurableMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <return-type>java.util.List</return-type>
+   </operation>
+   
+   <operation>
+      <description>List all non durable messages for the specified subscription with the specified selector</description>
+      <name>listNonDurableMessages</name>
+      <parameter>
+         <description>The subscription id</description>
+         <name>subscriptionID</name>
+         <type>java.lang.String</type>
+      </parameter>     
+      <parameter>
+         <description>The selector</description>
+         <name>selector</name>
+         <type>java.lang.String</type>
+      </parameter>
+      <return-type>java.util.List</return-type>
+   </operation>     
+   
+
+</mbean>

Added: branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/LocalTestServer.java
===================================================================
--- branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/LocalTestServer.java	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/LocalTestServer.java	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,1157 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2005, JBoss Inc., and individual contributors as indicated by the
+ * @authors tag. See the copyright.txt in the distribution for a full listing of individual contributors. This is free
+ * software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
+ * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
+ * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+package org.jboss.test.messaging.tools.container;
+
+import org.jboss.aop.AspectXmlLoader;
+import org.jboss.jms.server.DestinationManager;
+import org.jboss.jms.server.ServerPeer;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.contract.MessageStore;
+import org.jboss.messaging.core.contract.PersistenceManager;
+import org.jboss.messaging.core.contract.PostOffice;
+import org.jboss.messaging.util.XMLUtil;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.tools.aop.PoisonInterceptor;
+import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
+import org.jboss.test.messaging.tools.jboss.ServiceDeploymentDescriptor;
+import org.w3c.dom.Element;
+
+import javax.jms.Destination;
+import javax.jms.Queue;
+import javax.jms.Topic;
+import javax.management.Attribute;
+import javax.management.NotificationListener;
+import javax.management.ObjectName;
+import javax.transaction.UserTransaction;
+
+import java.io.File;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @version <tt>1.1</tt> LocalTestServer.java,v 1.1 2006/02/21 08:25:32 timfox Exp
+ */
+public class LocalTestServer implements Server
+{
+   // Constants ------------------------------------------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(LocalTestServer.class);
+
+   // Static ---------------------------------------------------------------------------------------
+
+   public static void setEnvironmentServerIndex(int serverIndex)
+   {
+      System.setProperty(Constants.SERVER_INDEX_PROPERTY_NAME, Integer.toString(serverIndex));
+   }
+
+   public static void clearEnvironmentServerIndex()
+   {
+      System.getProperty(Constants.SERVER_INDEX_PROPERTY_NAME, null);
+   }
+
+   // Attributes -----------------------------------------------------------------------------------
+
+   private ServiceContainer sc;
+
+   // service dependencies
+   private ObjectName persistenceManagerObjectName;
+
+   private ObjectName postOfficeObjectName;
+
+   private ObjectName jmsUserManagerObjectName;
+
+   // the server MBean itself
+   private ObjectName serverPeerObjectName;
+
+   private int serverIndex;
+
+   // Constructors ---------------------------------------------------------------------------------
+
+   public LocalTestServer()
+   {
+      super();
+   }
+
+   public LocalTestServer(int serverIndex)
+   {
+      this();
+
+      this.serverIndex = serverIndex;
+   }
+
+   // Server implementation ------------------------------------------------------------------------
+
+   public int getServerID()
+   {
+      return serverIndex;
+   }
+
+   public void start(String containerConfig, boolean clearDatabase) throws Exception
+   {
+      start(containerConfig, null, clearDatabase, true);
+   }
+
+   public synchronized void start(String containerConfig,
+                                  ServiceAttributeOverrides attrOverrides,
+                                  boolean clearDatabase,
+                                  boolean startMessagingServer) throws Exception
+   {
+      if (isStarted())
+      {
+         return;
+      }
+
+      log.debug("starting service container");
+
+      try
+      {
+         setEnvironmentServerIndex(serverIndex);
+
+         sc = new ServiceContainer(containerConfig, null, serverIndex);
+         sc.start(clearDatabase, attrOverrides);
+
+         if (sc.getDatabaseName().equals("hsqldb") && sc.isClustered())
+         {
+            throw new IllegalStateException("The test server cannot be started in clustered mode with hsqldb as a database - must use a shared database");
+         }
+
+         if ("none".equals(containerConfig))
+         {
+            return;
+         }
+
+         if (startMessagingServer)
+         {
+            startServerPeer(serverIndex, null, null, attrOverrides, sc.isClustered());
+         }
+
+         log.info("Server " + serverIndex + " started");
+      }
+      finally
+      {
+         clearEnvironmentServerIndex();
+      }
+   }
+
+   public synchronized boolean stop() throws Exception
+   {
+      if (!isStarted())
+      {
+         return false;
+      }
+
+      try
+      {
+         setEnvironmentServerIndex(serverIndex);
+
+         stopServerPeer();
+
+         log.debug("stopping service container");
+
+         sc.stop();
+         sc = null;
+
+         log.info("server stopped");
+      }
+      finally
+      {
+         clearEnvironmentServerIndex();
+      }
+
+      return true;
+   }
+
+   public void ping() throws Exception
+   {
+      // noop... do nothing
+   }
+
+   public synchronized void kill() throws Exception
+   {
+      throw new IllegalStateException("Cannot KILL a local server. Consider using stop() instead.");
+   }
+
+   public ObjectName deploy(String mbeanConfiguration) throws Exception
+   {
+      Element mbeanElement = XMLUtil.stringToElement(mbeanConfiguration);
+      MBeanConfigurationElement mbc = new MBeanConfigurationElement(mbeanElement);
+      return sc.registerAndConfigureService(mbc);
+   }
+
+   public void undeploy(ObjectName on) throws Exception
+   {
+      sc.unregisterService(on);
+   }
+
+   public Object getAttribute(ObjectName on, String attribute) throws Exception
+   {
+      return sc.getAttribute(on, attribute);
+   }
+
+   public void setAttribute(ObjectName on, String name, String valueAsString) throws Exception
+   {
+      sc.setAttribute(on, name, valueAsString);
+   }
+
+   public Object invoke(ObjectName on, String operationName, Object[] params, String[] signature) throws Exception
+   {
+      return sc.invoke(on, operationName, params, signature);
+   }
+
+   public void addNotificationListener(ObjectName on, NotificationListener listener) throws Exception
+   {
+      sc.addNotificationListener(on, listener);
+   }
+
+   public void removeNotificationListener(ObjectName on, NotificationListener listener) throws Exception
+   {
+      sc.removeNotificationListener(on, listener);
+   }
+
+   public Set query(ObjectName pattern) throws Exception
+   {
+      return sc.query(pattern);
+   }
+
+   public String getRemotingTransport()
+   {
+      return sc.getRemotingTransport();
+   }
+
+   public void log(int level, String text)
+   {
+      if (ServerManagement.FATAL == level)
+      {
+         log.fatal(text);
+      }
+      else if (ServerManagement.ERROR == level)
+      {
+         log.error(text);
+      }
+      else if (ServerManagement.WARN == level)
+      {
+         log.warn(text);
+      }
+      else if (ServerManagement.INFO == level)
+      {
+         log.info(text);
+      }
+      else if (ServerManagement.DEBUG == level)
+      {
+         log.debug(text);
+      }
+      else if (ServerManagement.TRACE == level)
+      {
+         log.trace(text);
+      }
+      else
+      {
+         // log everything else as INFO
+         log.info(text);
+      }
+   }
+
+   public synchronized boolean isStarted() throws Exception
+   {
+      return sc != null;
+   }
+
+   public void startServerPeer(int serverPeerID,
+                               String defaultQueueJNDIContext,
+                               String defaultTopicJNDIContext,
+                               ServiceAttributeOverrides attrOverrides,
+                               boolean clustered) throws Exception
+   {
+      List toStop = new ArrayList();
+      try
+      {
+         log.debug("creating ServerPeer instance");
+
+         // we are using the "default" service deployment descriptors available in
+         // src/etc/server/default/deploy. This will allow to test the default parameters we ship.
+
+         String mainConfigFile = "server/default/deploy/messaging-service.xml";
+
+         String persistenceConfigFile = sc.getPersistenceConfigFile(clustered);
+
+         log.info(" Persistence config file .. " + persistenceConfigFile);
+
+         ServiceDeploymentDescriptor mdd = ServiceConfigHelper.loadConfigFile(mainConfigFile);
+
+         ServiceDeploymentDescriptor pdd = ServiceConfigHelper.loadConfigFile(persistenceConfigFile);
+
+         MBeanConfigurationElement persistenceManagerConfig = ServiceConfigHelper.getServiceConfiguration(pdd,
+                                                                                                          "PersistenceManager");
+         persistenceManagerObjectName = sc.registerAndConfigureService(persistenceManagerConfig);
+         overrideAttributes(persistenceManagerObjectName, attrOverrides);
+         toStop.add(persistenceManagerObjectName);
+         sc.invoke(persistenceManagerObjectName, "create", new Object[0], new String[0]);
+         sc.invoke(persistenceManagerObjectName, "start", new Object[0], new String[0]);
+
+         MBeanConfigurationElement jmsUserManagerConfig = ServiceConfigHelper.getServiceConfiguration(pdd,
+                                                                                                      "JMSUserManager");
+         jmsUserManagerObjectName = sc.registerAndConfigureService(jmsUserManagerConfig);
+         overrideAttributes(jmsUserManagerObjectName, attrOverrides);
+         toStop.add(jmsUserManagerObjectName);
+         sc.invoke(jmsUserManagerObjectName, "create", new Object[0], new String[0]);
+         sc.invoke(jmsUserManagerObjectName, "start", new Object[0], new String[0]);
+         // regioster metadatasore
+         /*
+          * MBeanConfigurationElement securityStoreConfig = ServiceConfigHelper.getServiceConfiguration(mdd,
+          * "SecurityStore"); securityStoreObjectname = sc.registerAndConfigureService(securityStoreConfig);
+          * toStop.add(securityStoreObjectname);
+          */
+
+         // register server peer as a service, dependencies are injected automatically
+         MBeanConfigurationElement serverPeerConfig = ServiceConfigHelper.getServiceConfiguration(mdd, "ServerPeer");
+
+         // overwrite the file configuration, if needed
+         overrideServerPeerConfiguration(serverPeerConfig,
+                                         serverPeerID,
+                                         defaultQueueJNDIContext,
+                                         defaultTopicJNDIContext);
+
+         serverPeerObjectName = sc.registerAndConfigureService(serverPeerConfig);
+
+         overrideAttributes(serverPeerObjectName, attrOverrides);
+
+         // ServerPeer serverPeer = (ServerPeer) sc.getMBeanServer().
+
+         log.debug("starting JMS server");
+
+         toStop.add(serverPeerObjectName);
+         sc.getMBeanServer()
+           .setAttribute(serverPeerObjectName, new Attribute("SecurityStore", sc.startSecurityStore()));
+         sc.invoke(serverPeerObjectName, "create", new Object[0], new String[0]);
+         sc.invoke(serverPeerObjectName, "start", new Object[0], new String[0]);
+
+         MBeanConfigurationElement postOfficeConfig = ServiceConfigHelper.getServiceConfiguration(pdd, "PostOffice");
+
+         postOfficeObjectName = sc.registerAndConfigureService(postOfficeConfig);
+         sc.setAttribute(postOfficeObjectName, "Clustered", clustered ? "true" : "false");
+
+         overrideAttributes(postOfficeObjectName, attrOverrides);
+         toStop.add(postOfficeObjectName);
+
+         sc.invoke(postOfficeObjectName, "create", new Object[0], new String[0]);
+         sc.invoke(postOfficeObjectName, "start", new Object[0], new String[0]);
+         log.debug("deploying connection factories");
+
+         sc.startConnectionFactories(attrOverrides);
+      }
+      catch (Exception e)
+      {
+         log.error("Failed to start", e);
+
+         // Now we need to shutdown any services we did start
+         for (int i = toStop.size() - 1; i >= 0; i--)
+         {
+            ObjectName on = (ObjectName)toStop.get(i);
+            log.info("stopping: " + on);
+            try
+            {
+               sc.unregisterService(on);
+            }
+            catch (Exception ignore)
+            {
+            }
+         }
+
+         throw e;
+      }
+   }
+
+   public void stopServerPeer() throws Exception
+   {
+      if (!isServerPeerStarted())
+      {
+         log.debug("messaging server was not started, so there is no stopping");
+         return;
+      }
+
+      try
+      {
+         // if we don't find a ServerPeer instance registered under the serverPeerObjectName
+         // ObjectName, we assume that the server was already stopped and we silently exit
+         if (sc.query(serverPeerObjectName).isEmpty())
+         {
+            log.warn("ServerPeer already stopped");
+            return;
+         }
+
+         // unbind the JCA ConnectionFactory; nothing happens if no connection factory is bound
+         sc.unbindJCAJMSConnectionFactory();
+         sc.unbindDefaultJMSProvider();
+
+         log.debug("stopping connection factories");
+
+         sc.stopConnectionFactories();
+
+         log.debug("stopping all destinations");
+
+         try
+         {
+            Set destinations = (Set)sc.getAttribute(serverPeerObjectName, "Destinations");
+
+            for (Iterator i = destinations.iterator(); i.hasNext();)
+            {
+               String name;
+               boolean isQueue = true;
+               Destination d = (Destination)i.next();
+               if (d instanceof Queue)
+               {
+                  name = ((Queue)d).getQueueName();
+               }
+               else
+               {
+                  isQueue = false;
+                  name = ((Topic)d).getTopicName();
+               }
+
+               try
+               {
+                  undeployDestination(isQueue, name);
+               }
+               catch (Exception e)
+               {
+                  // needs to be resilient
+               }
+            }
+         }
+         catch (Exception ignore)
+         {
+            // Needs to be resilient on close
+         }
+
+         log.debug("stopping JMS server");
+
+         try
+         {
+            sc.invoke(serverPeerObjectName, "stop", new Object[0], new String[0]);
+            sc.invoke(serverPeerObjectName, "destroy", new Object[0], new String[0]);
+            sc.unregisterService(serverPeerObjectName);
+            sc.invoke(ServiceContainer.SECURITYSTORE_OBJECT_NAME, "stop", new Object[0], new String[0]);
+            sc.unregisterService(ServiceContainer.SECURITYSTORE_OBJECT_NAME);
+         }
+         catch (Exception ignore)
+         {
+            // If the serverpeer failed when starting up previously, then only some of the
+            // services may be started. The ones that didn't start will fail when attempting to shut
+            // them down.
+            // Hence we must catch and ignore or we won't shut everything down
+         }
+
+         log.debug("stopping ServerPeer's plug-in dependencies");
+
+         try
+         {
+            sc.invoke(jmsUserManagerObjectName, "stop", new Object[0], new String[0]);
+            sc.invoke(jmsUserManagerObjectName, "destroy", new Object[0], new String[0]);
+            sc.unregisterService(jmsUserManagerObjectName);
+         }
+         catch (Exception ignore)
+         {
+            // If the serverpeer failed when starting up previously, then only some of the
+            // services may be started. The ones that didn't start will fail when attempting to shut
+            // them down.
+            // Hence we must catch and ignore or we won't shut everything down
+         }
+
+         try
+         {
+            sc.invoke(postOfficeObjectName, "stop", new Object[0], new String[0]);
+            sc.invoke(postOfficeObjectName, "destroy", new Object[0], new String[0]);
+            sc.unregisterService(postOfficeObjectName);
+         }
+         catch (Exception ignore)
+         {
+            // If the serverpeer failed when starting up previously, then only some of the
+            // services may be started. The ones that didn't start will fail when attempting to shut
+            // them down.
+            // Hence we must catch and ignore or we won't shut everything down
+         }
+
+         try
+         {
+            sc.invoke(persistenceManagerObjectName, "stop", new Object[0], new String[0]);
+            sc.invoke(persistenceManagerObjectName, "destroy", new Object[0], new String[0]);
+            sc.unregisterService(persistenceManagerObjectName);
+         }
+         catch (Exception ignore)
+         {
+            // If the serverpeer failed when starting up previously, then only some of the
+            // services may be started. The ones that didn't start will fail when attempting to shut
+            // them down.
+            // Hence we must catch and ignore or we won't shut everything down
+         }
+      }
+      catch (Exception e)
+      {
+         log.error("Failed to stop server peer", e);
+         throw e;
+      }
+   }
+
+   public boolean isServerPeerStarted() throws Exception
+   {
+      if (sc.query(serverPeerObjectName).isEmpty())
+      {
+         return false;
+      }
+      ServerPeer sp = (ServerPeer)sc.getAttribute(serverPeerObjectName, "Instance");
+      sp.getVersion();
+      return true;
+   }
+
+   public ObjectName getServerPeerObjectName()
+   {
+      return serverPeerObjectName;
+   }
+
+   public Set getConnectorSubsystems() throws Exception
+   {
+      RemotingJMXWrapper remoting = (RemotingJMXWrapper)sc.getService(ServiceContainer.REMOTING_OBJECT_NAME);
+
+      return remoting.getConnectorSubsystems();
+   }
+
+   public void addServerInvocationHandler(String subsystem, ServerInvocationHandler handler) throws Exception
+   {
+      RemotingJMXWrapper remoting = (RemotingJMXWrapper)sc.getService(ServiceContainer.REMOTING_OBJECT_NAME);
+
+      remoting.addInvocationHandler(subsystem, handler);
+   }
+
+   public void removeServerInvocationHandler(String subsystem) throws Exception
+   {
+      RemotingJMXWrapper remoting = (RemotingJMXWrapper)sc.getService(ServiceContainer.REMOTING_OBJECT_NAME);
+
+      remoting.removeInvocationHandler(subsystem);
+   }
+
+   /**
+    * Only for in-VM use!
+    */
+   public MessageStore getMessageStore() throws Exception
+   {
+      ServerPeer serverPeer = (ServerPeer)sc.getAttribute(serverPeerObjectName, "Instance");
+      return serverPeer.getMessageStore();
+   }
+
+   public DestinationManager getDestinationManager() throws Exception
+   {
+      ServerPeer serverPeer = (ServerPeer)sc.getAttribute(serverPeerObjectName, "Instance");
+      return serverPeer.getDestinationManager();
+   }
+
+   public PersistenceManager getPersistenceManager() throws Exception
+   {
+      ServerPeer serverPeer = (ServerPeer)sc.getAttribute(serverPeerObjectName, "Instance");
+      return serverPeer.getPersistenceManagerInstance();
+   }
+
+   /**
+    * Only for in-VM use!
+    */
+   public ServerPeer getServerPeer() throws Exception
+   {
+      return (ServerPeer)sc.getAttribute(serverPeerObjectName, "Instance");
+   }
+
+   public void deployTopic(String name, String jndiName, boolean clustered) throws Exception
+   {
+      deployDestination(false, name, jndiName, clustered);
+   }
+
+   public void deployTopic(String name,
+                           String jndiName,
+                           int fullSize,
+                           int pageSize,
+                           int downCacheSize,
+                           boolean clustered) throws Exception
+   {
+      deployDestination(false, name, jndiName, fullSize, pageSize, downCacheSize, clustered);
+   }
+
+   public void deployTopicProgrammatically(String name, String jndiName) throws Exception
+   {
+      sc.invoke(serverPeerObjectName,
+                "deployTopic",
+                new Object[] { name, jndiName },
+                new String[] { "java.lang.String", "java.lang.String" });
+   }
+
+   public void deployQueue(String name, String jndiName, boolean clustered) throws Exception
+   {
+      deployDestination(true, name, jndiName, clustered);
+   }
+
+   public void deployQueue(String name,
+                           String jndiName,
+                           int fullSize,
+                           int pageSize,
+                           int downCacheSize,
+                           boolean clustered) throws Exception
+   {
+      deployDestination(true, name, jndiName, fullSize, pageSize, downCacheSize, clustered);
+   }
+
+   public void deployQueueProgrammatically(String name, String jndiName) throws Exception
+   {
+      sc.invoke(serverPeerObjectName,
+                "deployQueue",
+                new Object[] { name, jndiName },
+                new String[] { "java.lang.String", "java.lang.String" });
+   }
+
+   public ObjectName deployQueueWithDLQnExpiryQ(String q, String dlq, String expq) throws Exception
+   {
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + "QueueService" +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      "Queue" +
+                      ",name=" +
+                      q +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      "Queue" +
+                      "-xmbean.xml\">" +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "       <depends>jboss.messaging:service=PostOffice</depends>" +
+                      "       <attribute name=\"DLQ\">" +
+                      "jboss.messaging.destination:service=Queue,name=" +
+                      dlq +
+                      "</attribute>" +
+                      "       <attribute name=\"ExpiryQueue\">" +
+                      "jboss.messaging.destination:service=Queue,name=" +
+                      expq +
+                      "</attribute>" +
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      // sc.invoke(deston, "start", new Object[0], new String[0]);
+      return deston;
+   }
+
+   public ObjectName deployTopicWithDLQnExpiryQ(String topic, String dlq, String expq) throws Exception
+   {
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + "TopicService" +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      "Topic" +
+                      ",name=" +
+                      topic +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      "Topic" +
+                      "-xmbean.xml\">" +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "       <depends>jboss.messaging:service=PostOffice</depends>" +
+                      "       <attribute name=\"DLQ\">" +
+                      "jboss.messaging.destination:service=Queue,name=" +
+                      dlq +
+                      "</attribute>" +
+                      "       <attribute name=\"ExpiryQueue\">" +
+                      "jboss.messaging.destination:service=Queue,name=" +
+                      expq +
+                      "</attribute>" +
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      return deston;
+   }
+
+   public ObjectName deployQueueWithoutStart(String q, String jndiName, boolean b) throws Exception
+   {
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + "QueueService" +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      "Queue" +
+                      ",name=" +
+                      q +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      "Queue" +
+                      "-xmbean.xml\">" +
+                      (jndiName != null ? "    <attribute name=\"JNDIName\">" + jndiName + "</attribute>" : "") +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "       <depends>jboss.messaging:service=PostOffice</depends>" +
+                      "       <attribute name=\"Clustered\">" +
+                      String.valueOf(b) +
+                      "</attribute>" +
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      return deston;
+   }
+
+   /**
+    * start the services.
+    */
+   public void startDestinationService(ObjectName[] objectNames) throws Exception
+   {
+      for (ObjectName sv : objectNames)
+      {
+         sc.invoke(sv, "start", new Object[0], new String[0]);
+      }
+   }
+
+   public void deployDestination(boolean isQueue, String name, String jndiName, boolean clustered) throws Exception
+   {
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + (isQueue ? "QueueService" : "TopicService") +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      (isQueue ? "Queue" : "Topic") +
+                      ",name=" +
+                      name +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      (isQueue ? "Queue" : "Topic") +
+                      "-xmbean.xml\">" +
+                      (jndiName != null ? "    <attribute name=\"JNDIName\">" + jndiName + "</attribute>" : "") +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "       <attribute name=\"Clustered\">" +
+                      String.valueOf(clustered) +
+                      "</attribute>" +
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      sc.invoke(deston, "start", new Object[0], new String[0]);
+   }
+   
+   public void deployDestination(boolean isQueue, String name, String jndiName, boolean clustered, boolean keepMessage) throws Exception
+   {
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + (isQueue ? "QueueService" : "TopicService") +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      (isQueue ? "Queue" : "Topic") +
+                      ",name=" +
+                      name +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      (isQueue ? "Queue" : "Topic") +
+                      "-xmbean.xml\">" +
+                      (jndiName != null ? "    <attribute name=\"JNDIName\">" + jndiName + "</attribute>" : "") +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "       <attribute name=\"Clustered\">" +
+                      String.valueOf(clustered) +
+                      "</attribute>" +
+                      "       <attribute name=\"DropOldMessageOnRedeploy\">" +
+                      String.valueOf(!keepMessage) +
+                      "</attribute>" +                      
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      sc.invoke(deston, "start", new Object[0], new String[0]);
+   }
+   
+   public void deployDestination(boolean isQueue,
+                                 String name,
+                                 String jndiName,
+                                 int fullSize,
+                                 int pageSize,
+                                 int downCacheSize,
+                                 boolean clustered) throws Exception
+   {
+      log.info("deploying queue, fullsize:" + fullSize + ", ps:" + pageSize + " dc size:" + downCacheSize);
+
+      String config = "<mbean code=\"org.jboss.jms.server.destination." + (isQueue ? "QueueService" : "TopicService") +
+                      "\"" +
+                      "       name=\"jboss.messaging.destination:service=" +
+                      (isQueue ? "Queue" : "Topic") +
+                      ",name=" +
+                      name +
+                      "\"" +
+                      "       xmbean-dd=\"xmdesc/" +
+                      (isQueue ? "Queue" : "Topic") +
+                      "-xmbean.xml\">" +
+                      (jndiName != null ? "    <attribute name=\"JNDIName\">" + jndiName + "</attribute>" : "") +
+                      "       <depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>" +
+                      "    <attribute name=\"FullSize\">" +
+                      fullSize +
+                      "</attribute>" +
+                      "    <attribute name=\"PageSize\">" +
+                      pageSize +
+                      "</attribute>" +
+                      "    <attribute name=\"DownCacheSize\">" +
+                      downCacheSize +
+                      "</attribute>" +
+                      "    <attribute name=\"Clustered\">" +
+                      String.valueOf(clustered) +
+                      "</attribute>" +
+                      "</mbean>";
+
+      MBeanConfigurationElement mbean = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName deston = sc.registerAndConfigureService(mbean);
+      sc.invoke(deston, "create", new Object[0], new String[0]);
+      sc.invoke(deston, "start", new Object[0], new String[0]);
+   }
+
+   public void undeployDestination(boolean isQueue, String name) throws Exception
+   {
+      ObjectName pattern = new ObjectName("*:service=" + (isQueue ? "Queue" : "Topic") + ",name=" + name);
+      Set s = sc.query(pattern);
+      int size = s.size();
+      if (size == 0)
+      {
+         log.debug("No such " + (isQueue ? "queue" : "topic") + " to undeploy: " + name);
+         return;
+      }
+      if (size > 1)
+      {
+         throw new Exception("Too many destination with the same name: " + name);
+      }
+      ObjectName destinationObjectName = (ObjectName)s.iterator().next();
+      sc.invoke(destinationObjectName, "stop", new Object[0], new String[0]);
+      sc.invoke(destinationObjectName, "destroy", new Object[0], new String[0]);
+      sc.unregisterService(destinationObjectName);
+   }
+
+   public boolean undeployDestinationProgrammatically(boolean isQueue, String name) throws Exception
+   {
+      if (isQueue)
+      {
+         return ((Boolean)sc.invoke(serverPeerObjectName,
+                                    "undeployQueue",
+                                    new Object[] { name },
+                                    new String[] { "java.lang.String" })).booleanValue();
+      }
+      else
+      {
+         return ((Boolean)sc.invoke(serverPeerObjectName,
+                                    "undeployTopic",
+                                    new Object[] { name },
+                                    new String[] { "java.lang.String" })).booleanValue();
+      }
+   }
+
+   public void deployConnectionFactory(String objectName, String[] jndiBindings, int prefetchSize) throws Exception
+   {
+      deployConnectionFactory(objectName, jndiBindings, prefetchSize, -1, -1, -1, false, false, false, null);
+   }
+
+   public void deployConnectionFactory(String objectName, String[] jndiBindings) throws Exception
+   {
+      deployConnectionFactory(objectName, jndiBindings, -1, -1, -1, -1, false, false, false, null);
+   }
+
+   public void deployConnectionFactory(String objectName, String[] jndiBindings, boolean strictTck) throws Exception
+   {
+      deployConnectionFactory(objectName, jndiBindings, -1, -1, -1, -1, false, false, strictTck, null);
+   }
+
+   public void deployConnectionFactory(String objectName,
+                                       String[] jndiBindings,
+                                       int prefetchSize,
+                                       int defaultTempQueueFullSize,
+                                       int defaultTempQueuePageSize,
+                                       int defaultTempQueueDownCacheSize) throws Exception
+   {
+      this.deployConnectionFactory(objectName,
+                                   jndiBindings,
+                                   prefetchSize,
+                                   defaultTempQueueFullSize,
+                                   defaultTempQueuePageSize,
+                                   defaultTempQueueDownCacheSize,
+                                   false,
+                                   false,
+                                   false,
+                                   null);
+   }
+
+   public void deployConnectionFactory(String objectName,
+                                       String[] jndiBindings,
+                                       boolean supportsFailover,
+                                       boolean supportsLoadBalancing) throws Exception
+   {
+      this.deployConnectionFactory(objectName,
+                                   jndiBindings,
+                                   -1,
+                                   -1,
+                                   -1,
+                                   -1,
+                                   supportsFailover,
+                                   supportsLoadBalancing,
+                                   false,
+                                   null);
+   }
+
+   public void deployConnectionFactory(String objectName,
+                                       String[] jndiBindings,
+                                       boolean supportsFailover,
+                                       boolean supportsLoadBalancing,
+                                       String clientID) throws Exception
+   {
+      this.deployConnectionFactory(objectName,
+                                   jndiBindings,
+                                   -1,
+                                   -1,
+                                   -1,
+                                   -1,
+                                   supportsFailover,
+                                   supportsLoadBalancing,
+                                   false,
+                                   clientID);
+   }
+
+   private void deployConnectionFactory(String objectName,
+                                        String[] jndiBindings,
+                                        int prefetchSize,
+                                        int defaultTempQueueFullSize,
+                                        int defaultTempQueuePageSize,
+                                        int defaultTempQueueDownCacheSize,
+                                        boolean supportsFailover,
+                                        boolean supportsLoadBalancing,
+                                        boolean strictTck,
+                                        String clientID) throws Exception
+   {
+      log.trace("deploying connection factory with name: " + objectName);
+
+      String config = "<mbean code=\"org.jboss.jms.server.connectionfactory.ConnectionFactory\"\n" + "name=\"" +
+                      objectName +
+                      "\"\n" +
+                      "xmbean-dd=\"xmdesc/ConnectionFactory-xmbean.xml\">\n" +
+                      "<depends optional-attribute-name=\"ServerPeer\">jboss.messaging:service=ServerPeer</depends>\n" +
+                      "<depends optional-attribute-name=\"Connector\">" +
+                      ServiceContainer.REMOTING_OBJECT_NAME +
+                      "</depends>\n";
+      // <arg type="java.lang.String" value="MyClientID"/>
+      if (clientID != null)
+      {
+         config += "<constructor><arg type=\"java.lang.String\" value=\"" + clientID + "\"/> </constructor>\n";
+      }
+
+      if (defaultTempQueueFullSize != -1)
+      {
+         config += "<attribute name=\"DefaultTempQueueFullSize\">" + defaultTempQueueFullSize + "</attribute>\n";
+      }
+
+      if (defaultTempQueuePageSize != -1)
+      {
+         config += "<attribute name=\"DefaultTempQueuePageSize\">" + defaultTempQueuePageSize + "</attribute>\n";
+      }
+
+      if (defaultTempQueueDownCacheSize != -1)
+      {
+         config += "<attribute name=\"DefaultTempQueueDownCacheSize\">" + defaultTempQueueDownCacheSize +
+                   "</attribute>\n";
+      }
+
+      if (prefetchSize != -1)
+      {
+         config += "<attribute name=\"PrefetchSize\">" + prefetchSize + "</attribute>";
+      }
+
+      config += "<attribute name=\"SupportsFailover\">" + supportsFailover + "</attribute>";
+      config += "<attribute name=\"SupportsLoadBalancing\">" + supportsLoadBalancing + "</attribute>";
+      config += "<attribute name=\"StrictTck\">" + strictTck + "</attribute>";
+      if (jndiBindings != null)
+      {
+         config += "<attribute name=\"JNDIBindings\"><bindings>";
+
+         for (int i = 0; i < jndiBindings.length; i++)
+         {
+            config += "<binding>" + jndiBindings[i] + "</binding>\n";
+         }
+         config += "</bindings></attribute>";
+      }
+      config += "</mbean>";
+
+      MBeanConfigurationElement mc = new MBeanConfigurationElement(XMLUtil.stringToElement(config));
+      ObjectName on = sc.registerAndConfigureService(mc);
+
+      log.trace("Object name is now: " + on);
+
+      sc.invoke(on, "create", new Object[0], new String[0]);
+      sc.invoke(on, "start", new Object[0], new String[0]);
+   }
+
+   public void undeployConnectionFactory(ObjectName objectName) throws Exception
+   {
+      sc.invoke(objectName, "stop", new Object[0], new String[0]);
+      sc.invoke(objectName, "destroy", new Object[0], new String[0]);
+      sc.unregisterService(objectName);
+   }
+
+   public void configureSecurityForDestination(String destName, String config) throws Exception
+   {
+      Set s = sc.query(new ObjectName("*:service=Queue,name=" + destName));
+      for (Iterator i = s.iterator(); i.hasNext();)
+      {
+         ObjectName on = (ObjectName)i.next();
+         sc.setAttribute(on, "SecurityConfig", config);
+      }
+
+      s = sc.query(new ObjectName("*:service=Topic,name=" + destName));
+      for (Iterator i = s.iterator(); i.hasNext();)
+      {
+         ObjectName on = (ObjectName)i.next();
+         sc.setAttribute(on, "SecurityConfig", config);
+      }
+   }
+
+   public void setDefaultSecurityConfig(String config) throws Exception
+   {
+      sc.setAttribute(ServiceContainer.SECURITYSTORE_OBJECT_NAME, "DefaultSecurityConfig", config);
+   }
+
+   public String getDefaultSecurityConfig() throws Exception
+   {
+      Element element = (Element)sc.getAttribute(ServiceContainer.SECURITYSTORE_OBJECT_NAME, "DefaultSecurityConfig");
+      return XMLUtil.elementToString(element);
+   }
+
+   public Object executeCommand(Command command) throws Exception
+   {
+      return command.execute(this);
+   }
+
+   public UserTransaction getUserTransaction() throws Exception
+   {
+      return sc.getUserTransaction();
+   }
+
+   public Set getNodeIDView() throws Exception
+   {
+      PostOffice postOffice = (PostOffice)sc.getAttribute(postOfficeObjectName, "Instance");
+
+      return postOffice.nodeIDView();
+   }
+
+   public Map getFailoverMap() throws Exception
+   {
+      PostOffice postOffice = (PostOffice)sc.getAttribute(postOfficeObjectName, "Instance");
+
+      return postOffice.getFailoverMap();
+   }
+
+   public Map getRecoveryArea(String queueName) throws Exception
+   {
+      PostOffice postOffice = (PostOffice)sc.getAttribute(postOfficeObjectName, "Instance");
+
+      return postOffice.getRecoveryArea(queueName);
+   }
+
+   public int getRecoveryMapSize(String queueName) throws Exception
+   {
+      PostOffice postOffice = (PostOffice)sc.getAttribute(postOfficeObjectName, "Instance");
+
+      return postOffice.getRecoveryMapSize(queueName);
+   }
+
+   public List pollNotificationListener(long listenerID) throws Exception
+   {
+      throw new IllegalStateException("Poll doesn't make sense on a local server. " + "Register listeners directly instead.");
+   }
+
+   public void poisonTheServer(int type) throws Exception
+   {
+      URL url = this.getClass().getClassLoader().getResource("poison.xml");
+      if (url == null) // JBMESSAGING-1222 - Hack for OSX JVM Bug when testing the remote connectors
+      { // (Assumes tests are being executed is the jboss-messaging/tests directory)
+
+         url = (new File("etc/poison.xml")).toURL();
+      }
+      AspectXmlLoader.deployXML(url);
+
+      log.debug(url + " deployed");
+
+      PoisonInterceptor.setType(type);
+   }
+
+   public void flushManagedConnectionPool()
+   {
+      sc.flushManagedConnectionPool();
+   }
+
+   public void resetAllSuckers() throws Exception
+   {
+      getServerPeer().resetAllSuckers();
+   }
+
+   // Public ---------------------------------------------------------------------------------------
+
+   // Package protected ----------------------------------------------------------------------------
+
+   // Protected ------------------------------------------------------------------------------------
+
+   protected ServiceContainer getServiceContainer()
+   {
+      return sc;
+   }
+
+   protected void overrideServerPeerConfiguration(MBeanConfigurationElement config,
+                                                  int serverPeerID,
+                                                  String defaultQueueJNDIContext,
+                                                  String defaultTopicJNDIContext) throws Exception
+   {
+      config.setAttribute("ServerPeerID", Integer.toString(serverPeerID));
+      config.setAttribute("DefaultQueueJNDIContext", defaultQueueJNDIContext == null ? "/queue"
+                                                                                    : defaultQueueJNDIContext);
+      config.setAttribute("DefaultTopicJNDIContext", defaultTopicJNDIContext == null ? "/topic"
+                                                                                    : defaultTopicJNDIContext);
+   }
+
+   // Private --------------------------------------------------------------------------------------
+
+   private void overrideAttributes(ObjectName on, ServiceAttributeOverrides attrOverrides) throws Exception
+   {
+      if (attrOverrides == null)
+      {
+         return;
+      }
+
+      Map sao = attrOverrides.get(on);
+
+      for (Iterator i = sao.entrySet().iterator(); i.hasNext();)
+      {
+         Map.Entry entry = (Map.Entry)i.next();
+         String attrName = (String)entry.getKey();
+         Object attrValue = entry.getValue();
+         sc.setAttribute(on, attrName, attrValue.toString());
+
+      }
+   }
+
+
+   public ObjectName getPostOfficeObjectName()
+   {
+      return postOfficeObjectName;
+   }
+
+   public void deployQueue(String name, String jndiName, boolean clustered, boolean keepMessage) throws Exception
+   {
+      deployDestination(true, name, jndiName, clustered, keepMessage);
+   }
+
+   public void deployTopic(String name, String jndiName, boolean clustered, boolean keepMessage) throws Exception
+   {
+      deployDestination(false, name, jndiName, clustered, keepMessage);
+      
+   }
+
+   // Inner classes --------------------------------------------------------------------------------
+
+}

Added: branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/ServiceContainer.java
===================================================================
--- branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/ServiceContainer.java	                        (rev 0)
+++ branches/Branch_1_4/integration/EAP5/tests-src/org/jboss/test/messaging/tools/container/ServiceContainer.java	2009-11-02 05:01:30 UTC (rev 7887)
@@ -0,0 +1,1775 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.messaging.tools.container;
+
+import com.arjuna.ats.arjuna.recovery.RecoveryManager;
+import org.hsqldb.Server;
+import org.hsqldb.persist.HsqlProperties;
+import org.jboss.jms.jndi.JMSProviderAdapter;
+import org.jboss.jms.jndi.JNDIProviderAdapter;
+import org.jboss.jms.server.ServerPeer;
+import org.jboss.jms.server.remoting.JMSServerInvocationHandler;
+import org.jboss.jms.server.security.SecurityMetadataStore;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.util.JNDIUtil;
+import org.jboss.messaging.util.XMLUtil;
+import org.jboss.remoting.InvokerLocator;
+import org.jboss.remoting.ServerInvocationHandler;
+import org.jboss.remoting.transport.PortUtil;
+import org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory;
+import org.jboss.resource.adapter.jdbc.remote.WrapperDataSourceService;
+import org.jboss.resource.adapter.jms.JmsManagedConnectionFactory;
+import org.jboss.resource.connectionmanager.*;
+import org.jboss.system.Registry;
+import org.jboss.system.ServiceController;
+import org.jboss.system.ServiceCreator;
+import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.tools.jboss.MBeanConfigurationElement;
+import org.jboss.test.messaging.tools.jboss.ServiceDeploymentDescriptor;
+import org.jboss.tm.TransactionManagerService;
+import org.jboss.tm.usertx.client.ServerVMClientUserTransaction;
+import org.jboss.util.id.GUID;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import javax.management.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NameNotFoundException;
+import javax.naming.spi.NamingManager;
+import javax.sql.DataSource;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.sql.*;
+import java.util.*;
+
+/**
+ * An MBeanServer and a configurable set of services (TransactionManager, Remoting, etc) available
+ * for testing.
+ *
+ * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
+ * @version <tt>$Revision: 4986 $</tt>
+ *
+ * $Id: ServiceContainer.java 4986 2008-09-18 22:11:43Z clebert.suconic at jboss.com $
+ */
+public class ServiceContainer
+{
+   // Constants ------------------------------------------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(ServiceContainer.class);
+
+   private static final String CONFIGURATION_FILE_NAME = "container.xml";
+
+   public static final String DO_NOT_USE_MESSAGING_MARSHALLERS = "DO_NOT_USE_MESSAGING_MARSHALLERS";
+
+   // Static ---------------------------------------------------------------------------------------
+
+   public static ObjectName SERVICE_CONTROLLER_OBJECT_NAME;
+   public static ObjectName CLASS_LOADER_OBJECT_NAME;
+   public static ObjectName TRANSACTION_MANAGER_OBJECT_NAME;
+   public static ObjectName CACHED_CONNECTION_MANAGER_OBJECT_NAME;
+
+   public static ObjectName DEFAULTDS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME;
+   public static ObjectName DEFAULTDS_MANAGED_CONNECTION_POOL_OBJECT_NAME;
+   public static ObjectName DEFAULTDS_CONNECTION_MANAGER_OBJECT_NAME;
+   public static ObjectName DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME;
+
+   public static ObjectName JMS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME;
+   public static ObjectName JMS_MANAGED_CONNECTION_POOL_OBJECT_NAME;
+   public static ObjectName JMS_CONNECTION_MANAGER_OBJECT_NAME;
+   public static ObjectName JMS_CONNECTION_FACTORY_BINDING_SERVICE_OBJECT_NAME;
+   public static ObjectName SECURITYSTORE_OBJECT_NAME;
+
+   public static ObjectName REMOTING_OBJECT_NAME;
+
+   // Used only on testcases where Socket and HTTP are deployed at the same time
+   public static ObjectName HTTP_REMOTING_OBJECT_NAME;
+
+   public static ObjectName SERVER_PEER_OBJECT_NAME;
+
+   public static String DATA_SOURCE_JNDI_NAME = "java:/DefaultDS";
+   public static String TRANSACTION_MANAGER_JNDI_NAME = "java:/TransactionManager";
+   public static String USER_TRANSACTION_JNDI_NAME = "UserTransaction";
+   public static String JCA_JMS_CONNECTION_FACTORY_JNDI_NAME = "java:/JCAConnectionFactory";
+
+   // Must match the value in remoting-http-service.xml
+   public static long HTTP_CONNECTOR_CALLBACK_POLL_PERIOD = 102;
+
+   // List<ObjectName>
+   private List connFactoryObjectNames = new ArrayList();
+
+   static
+   {
+      try
+      {
+         SERVICE_CONTROLLER_OBJECT_NAME =
+         new ObjectName("jboss.system:service=ServiceController");
+         CLASS_LOADER_OBJECT_NAME =
+         new ObjectName("jboss.system:service=ClassLoader");
+         TRANSACTION_MANAGER_OBJECT_NAME =
+         new ObjectName("jboss:service=TransactionManager");
+         CACHED_CONNECTION_MANAGER_OBJECT_NAME =
+         new ObjectName("jboss.jca:service=CachedConnectionManager");
+
+         DEFAULTDS_CONNECTION_MANAGER_OBJECT_NAME =
+         new ObjectName("jboss.jca:name=DefaultDS,service=LocalTxCM");
+         DEFAULTDS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME =
+         new ObjectName("jboss.jca:name=DefaultDS,service=ManagedConnectionFactory");
+         DEFAULTDS_MANAGED_CONNECTION_POOL_OBJECT_NAME =
+         new ObjectName("jboss.jca:name=DefaultDS,service=ManagedConnectionPool");
+         DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME =
+         new ObjectName("jboss.jca:name=DefaultDS,service=DataSourceBinding");
+
+         JMS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME =
+         new ObjectName("jboss.jca:service=ManagedConnectionFactory,name=JCAConnectionFactory");
+         JMS_MANAGED_CONNECTION_POOL_OBJECT_NAME =
+         new ObjectName("jboss.jca:service=ManagedConnectionPool,name=JCAConnectionFactory");
+         JMS_CONNECTION_MANAGER_OBJECT_NAME =
+         new ObjectName("jboss.jca:service=TxCM,name=JCAConnectionFactory");
+         JMS_CONNECTION_FACTORY_BINDING_SERVICE_OBJECT_NAME =
+         new ObjectName("jboss.jca:service=ConnectionFactoryBinding,name=JCAConnectionFactory");
+
+         REMOTING_OBJECT_NAME =
+         new ObjectName("jboss.messaging:service=Connector,transport=bisocket");
+
+         HTTP_REMOTING_OBJECT_NAME =
+         new ObjectName("jboss.messaging:service=Connector,transport=http");
+
+         SERVER_PEER_OBJECT_NAME =
+         new ObjectName("jboss.messaging:service=ServerPeer");
+         SECURITYSTORE_OBJECT_NAME = new ObjectName("jboss.messaging:service=SecurityStore");
+      }
+      catch(Exception e)
+      {
+         e.printStackTrace();
+      }
+   }
+
+   public static String getCurrentAddress() throws Exception
+   {
+      String currentAddress = System.getProperty("test.bind.address");
+
+      if (currentAddress == null)
+      {
+         currentAddress = "localhost";
+      }
+      return currentAddress;
+   }
+
+   // Attributes -----------------------------------------------------------------------------------
+
+   private ServiceContainerConfiguration config;
+
+   private TransactionManager tm;
+
+   private MBeanServer mbeanServer;
+   private ServiceCreator serviceCreator; // the 'creator' helps in creating and registering XMBeans
+   private InitialContext initialContext;
+   private String jndiNamingFactory;
+   private Server hsqldbServer;
+   private RecoveryManager recoveryManager;
+   private JBossManagedConnectionPool mcp;
+
+   private boolean transaction;
+   private boolean database;
+   private boolean jca;
+   private boolean remoting;
+   private boolean security;
+   private boolean httpConnectionFactory;
+   private boolean channelfactory; // the JGroups channels multiplexer
+
+   private List toUnbindAtExit;
+   private String ipAddressOrHostName;
+
+   // There may be many service containers on the same machine, so we need to distinguish them
+   // so we don't start up multiple servers with services running on the same port
+   private int serverIndex;
+
+   // Static ---------------------------------------------------------------------------------------
+
+   public static Object type(MBeanInfo mbeanInfo, String attributeName, String valueAsString)
+      throws Exception
+   {
+      MBeanAttributeInfo[] attrs = mbeanInfo.getAttributes();
+      MBeanAttributeInfo attr = null;
+
+      for(int i = 0; i < attrs.length; i++)
+      {
+         if (attrs[i].getName().equals(attributeName))
+         {
+            attr = attrs[i];
+            break;
+         }
+      }
+
+      if (attr == null)
+      {
+         throw new Exception("No such attribute: " + attributeName);
+      }
+
+      String type = attr.getType();
+
+      if ("int".equals(type) || "java.lang.Integer".equals(type))
+      {
+         int i = Integer.parseInt(valueAsString);
+         return new Integer(i);
+      }
+      else if ("long".equals(type) || "java.lang.Long".equals(type))
+      {
+         long l = Long.parseLong(valueAsString);
+         return new Long(l);
+      }
+      else if ("boolean".equals(type) || "java.lang.Boolean".equals(type))
+      {
+         boolean b = Boolean.valueOf(valueAsString).booleanValue();
+         return new Boolean(b);
+      }
+      else if ("java.lang.String".equals(type))
+      {
+         return valueAsString;
+      }
+      else if ("javax.management.ObjectName".equals(type))
+      {
+         return new ObjectName(valueAsString);
+      }
+      else if ("org.w3c.dom.Element".equals(type))
+      {
+      	if (valueAsString == null)
+      	{
+      		return null;
+      	}
+      	else
+      	{
+      		return XMLUtil.stringToElement(valueAsString);
+      	}
+      }
+      else if (type.startsWith("org.jboss."))
+      {
+         Class interfazza = ServiceContainer.class.getClassLoader().loadClass(type);
+         Class implementation = ServiceContainer.class.getClassLoader().loadClass(valueAsString);
+         return implementation.newInstance();
+      }
+      else if (type.startsWith("java.util.Properties"))
+      {
+      	ByteArrayInputStream is = new ByteArrayInputStream(valueAsString.getBytes());
+         Properties props = new Properties();
+         props.load(is);
+         return props;
+      }
+
+      throw new Exception("Don't know to handle type " + type);
+
+   }
+
+   // Constructors ---------------------------------------------------------------------------------
+
+   public ServiceContainer(String servicesToStart) throws Exception
+   {
+      this(servicesToStart, null);
+   }
+
+   public ServiceContainer(String sevicesToStart, int serverIndex) throws Exception
+   {
+      this(sevicesToStart, null, serverIndex);
+   }
+
+   /**
+    * @param sevicesToStart - A comma separated list of services to be started. Available services:
+    *        transaction, jca, database, remoting.  Example: "transaction, database, remoting".
+    *        "all" will start every service available. A dash in front of a service name will
+    *        disable that service. Example "all,-database".
+    * @param tm - specifies a specific TransactionManager instance to bind into the mbeanServer.
+    *        If null, the default JBoss TransactionManager implementation will be used.
+    */
+   public ServiceContainer(String sevicesToStart, TransactionManager tm) throws Exception
+   {
+      this.tm = tm;
+      parseConfig(sevicesToStart);
+      toUnbindAtExit = new ArrayList();
+      this.serverIndex = 0;
+   }
+
+   public ServiceContainer(String sevicesToStart, TransactionManager tm, int serverIndex)
+      throws Exception
+   {
+      this.tm = tm;
+      parseConfig(sevicesToStart);
+      toUnbindAtExit = new ArrayList();
+      this.serverIndex = serverIndex;
+   }
+
+   // Public ---------------------------------------------------------------------------------------
+
+   public void start() throws Exception
+   {
+      start(true);
+   }
+
+   public void start(boolean cleanDatabase) throws Exception
+   {
+      start(cleanDatabase, null);
+   }
+
+   public void start(boolean cleanDatabase, ServiceAttributeOverrides attrOverrides)
+      throws Exception
+   {
+      try
+      {
+         readConfigurationFile();
+
+         ipAddressOrHostName = getCurrentAddress();
+         log.debug("all server sockets will be open on address " + ipAddressOrHostName);
+
+         toUnbindAtExit.clear();
+
+         jndiNamingFactory = System.getProperty("java.naming.factory.initial");
+
+         //TODO: need to think more about this; if I don't do it, though, bind() fails because it tries to use "java.naming.provider.url"
+         try
+         {
+            NamingManager.
+               setInitialContextFactoryBuilder(new InVMInitialContextFactoryBuilder());
+         }
+         catch(IllegalStateException e)
+         {
+            // OK
+         }
+
+         Hashtable t = InVMInitialContextFactory.getJNDIEnvironment(serverIndex);
+         System.setProperty("java.naming.factory.initial",
+                            (String)t.get("java.naming.factory.initial"));
+         System.setProperty(Constants.SERVER_INDEX_PROPERTY_NAME,
+                            Integer.toString(serverIndex));
+
+         initialContext = new InitialContext();
+
+         System.setProperty("javax.management.builder.initial",
+                               "org.jboss.test.messaging.tools.container.MBeanServerBuilder");
+
+         mbeanServer = MBeanServerFactory.createMBeanServer("jboss");
+
+         serviceCreator = new ServiceCreator(mbeanServer);
+
+         startServiceController();
+
+         registerClassLoader();
+
+         if (transaction)
+         {
+            startTransactionManager();
+         }
+
+         if (database)
+         {
+            startInVMDatabase();
+         }
+
+         if (jca)
+         {
+            startCachedConnectionManager(CACHED_CONNECTION_MANAGER_OBJECT_NAME);
+
+            // DefaultDS specific
+            startManagedConnectionFactory(DEFAULTDS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME);
+            startManagedConnectionPool(DEFAULTDS_MANAGED_CONNECTION_POOL_OBJECT_NAME,
+                                       DEFAULTDS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME,
+                                       "ByContainer");
+            startConnectionManager(DEFAULTDS_CONNECTION_MANAGER_OBJECT_NAME, true, true,
+                                   TRANSACTION_MANAGER_OBJECT_NAME,
+                                   CachedConnectionManagerMBean.OBJECT_NAME,
+                                   DEFAULTDS_MANAGED_CONNECTION_POOL_OBJECT_NAME);
+            startWrapperDataSourceService();
+         }
+
+         if (database && transaction && jca && cleanDatabase)
+         {
+            // We make sure the database is clean (only if we have all dependencies the database,
+            // otherwise we'll get an access error)
+            deleteAllData();
+         }
+
+         if (remoting)
+         {
+            startRemoting(attrOverrides, config.getRemotingTransport(), REMOTING_OBJECT_NAME);
+         }
+
+         if (security)
+         {
+            startSecurityManager();
+         }
+
+         if (channelfactory)
+         {
+            startChannelFactory();
+         }
+
+         loadJNDIContexts();
+
+         log.debug("loaded JNDI context");
+
+
+         String transport = config.getRemotingTransport();
+
+         log.info("Remoting type: .............. " + (remoting ? transport : "DISABLED"));
+         log.info("Clustering mode: ............ " +
+            (this.isClustered() ? "CLUSTERED" : "NON-CLUSTERED"));
+
+         log.debug(this + " started");
+      }
+      catch(Throwable e)
+      {
+         log.error("Failed to start ServiceContainer", e);
+         throw new Exception("Failed to start ServiceContainer", e);
+      }
+   }
+
+   public void dropTables() throws Exception
+   {
+   	dropAllTables();
+   }
+
+   public void startConnectionFactories(ServiceAttributeOverrides attrOverrides) throws Exception
+   {
+      deployConnectionFactories("server/default/deploy/connection-factories-service.xml", attrOverrides);
+
+      log.info("HTTP ConnectionFactory " + httpConnectionFactory);
+      if (httpConnectionFactory)
+      {
+         log.info("Installing HTTP connection factory");
+         ServiceAttributeOverrides httpOverride = new ServiceAttributeOverrides();
+         startRemoting(httpOverride, "http", HTTP_REMOTING_OBJECT_NAME);
+         deployConnectionFactories("connection-factory-http.xml", attrOverrides);
+      }
+
+      // bind the default JMS provider
+      bindDefaultJMSProvider();
+      // bind the JCA ConnectionFactory
+      bindJCAJMSConnectionFactory();
+   }
+
+   public void stopConnectionFactories() throws Exception
+   {
+      for(Iterator i = connFactoryObjectNames.iterator(); i.hasNext(); )
+      {
+         try
+         {
+            ObjectName on = (ObjectName)i.next();
+            invoke(on, "stop", new Object[0], new String[0]);
+            invoke(on, "destroy", new Object[0], new String[0]);
+            unregisterService(on);
+         }
+         catch (Exception ignore)
+         {
+            //If the serverpeer failed when starting up previously, then only some of the
+            //services may be started. The ones that didn't start will fail when attempting to shut
+            //them down.
+            //Hence we must catch and ignore or we won't shut everything down
+         }
+      }
+      connFactoryObjectNames.clear();
+
+   }
+
+   public void flushManagedConnectionPool()
+   {
+   	mcp.flush();
+   }
+
+
+   public void stop() throws Exception
+   {
+   	log.info("Stopping serviceconatiner");
+
+      unloadJNDIContexts();
+
+      stopService(REMOTING_OBJECT_NAME);
+
+      if (httpConnectionFactory)
+      {
+         stopService(HTTP_REMOTING_OBJECT_NAME);
+      }
+
+      if (jca)
+      {
+         stopWrapperDataSourceService();
+         stopConnectionManager(DEFAULTDS_CONNECTION_MANAGER_OBJECT_NAME);
+         stopManagedConnectionPool(DEFAULTDS_MANAGED_CONNECTION_POOL_OBJECT_NAME);
+         stopManagedConnectionFactory(DEFAULTDS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME);
+         stopService(CACHED_CONNECTION_MANAGER_OBJECT_NAME);
+      }
+
+      stopService(TRANSACTION_MANAGER_OBJECT_NAME);
+
+      if (database)
+      {
+         stopInVMDatabase();
+      }
+
+      unregisterClassLoader();
+      stopServiceController();
+      MBeanServerFactory.releaseMBeanServer(mbeanServer);
+
+      if (security)
+      {
+         initialContext.unbind(MockJBossSecurityManager.TEST_SECURITY_DOMAIN);
+      }
+
+      cleanJNDI();
+
+      initialContext.close();
+
+      if (jndiNamingFactory != null)
+      {
+         System.setProperty("java.naming.factory.initial", jndiNamingFactory);
+      }
+
+      log.debug(this + " stopped");
+   }
+
+   public DataSource getDataSource()
+   {
+      DataSource ds = null;
+      try
+      {
+         InitialContext ic = new InitialContext();
+         ds = (DataSource)ic.lookup(DATA_SOURCE_JNDI_NAME);
+         ic.close();
+      }
+      catch(Exception e)
+      {
+         log.error("Failed to look up DataSource", e);
+      }
+      return ds;
+   }
+
+   public TransactionManager getTransactionManager()
+   {
+      TransactionManager tm = null;
+      try
+      {
+         InitialContext ic = new InitialContext();
+         tm = (TransactionManager)ic.lookup(TRANSACTION_MANAGER_JNDI_NAME);
+         ic.close();
+      }
+      catch(Exception e)
+      {
+         log.error("Failed to look up transaction manager", e);
+      }
+      return tm;
+   }
+
+   public UserTransaction getUserTransaction() throws Exception
+   {
+      return (UserTransaction)initialContext.lookup(USER_TRANSACTION_JNDI_NAME);
+   }
+
+   public Object getService(ObjectName on) throws Exception
+   {
+      return mbeanServer.invoke(on, "getInstance", new Object[0], new String[0]);
+   }
+
+   public String getPersistenceConfigFile(boolean clustered)
+   {
+      String databaseName = getDatabaseName();
+
+      return "server/default/deploy/" + databaseName + "-persistence-service.xml";
+   }
+
+   public Properties getPersistenceManagerSQLProperties() throws Exception
+   {
+      String persistenceConfigFile = getPersistenceConfigFile(false);
+      log.info("Persistence config file: .... " + persistenceConfigFile);
+
+      MBeanConfigurationElement persistenceManagerConfig =
+         ServiceConfigHelper.loadServiceConfiguration(persistenceConfigFile, "PersistenceManager");
+
+      String props = persistenceManagerConfig.getAttributeValue("SqlProperties");
+
+      if (props != null)
+      {
+         ByteArrayInputStream is = new ByteArrayInputStream(props.getBytes());
+
+         Properties sqlProperties = new Properties();
+
+         sqlProperties.load(is);
+
+         return sqlProperties;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   public Properties getPostOfficeSQLProperties() throws Exception
+   {
+      String persistenceConfigFile = getPersistenceConfigFile(true);
+      log.info("Persistence config file: .... " + persistenceConfigFile);
+
+      MBeanConfigurationElement postOfficeConfig =
+         ServiceConfigHelper.loadServiceConfiguration(persistenceConfigFile, "PostOffice");
+
+      String props = postOfficeConfig.getAttributeValue("SqlProperties");
+
+      if (props != null)
+      {
+         ByteArrayInputStream is = new ByteArrayInputStream(props.getBytes());
+
+         Properties sqlProperties = new Properties();
+
+         sqlProperties.load(is);
+
+         return sqlProperties;
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   /**
+    * @return Set<ObjectName>
+    */
+   public Set query(ObjectName pattern)
+   {
+      if (pattern == null)
+      {
+         return Collections.EMPTY_SET;
+      }
+      return mbeanServer.queryNames(pattern, null);
+   }
+
+   /**
+    * Creates and registers a service based on the MBean service descriptor element. Supports
+    * XMBeans. The implementing class and the ObjectName are inferred from the mbean element. If
+    * there are configuration attributed specified in the deployment descriptor, they are applied
+    * to the service instance.
+    */
+   public ObjectName registerAndConfigureService(MBeanConfigurationElement mbeanConfig)
+      throws Exception
+   {
+      ObjectName on = mbeanConfig.getObjectName();
+      serviceCreator.install(on, CLASS_LOADER_OBJECT_NAME, mbeanConfig.getDelegate());
+
+      // inject dependencies
+      for(Iterator i = mbeanConfig.dependencyOptionalAttributeNames().iterator(); i.hasNext(); )
+      {
+         String name = (String)i.next();
+         String value = mbeanConfig.getDependencyOptionalAttributeValue(name);
+         setAttribute(on, name, value);
+      }
+
+      // apply attributes
+      for(Iterator i = mbeanConfig.attributeNames().iterator(); i.hasNext();)
+      {
+         String name = (String)i.next();
+         String value = mbeanConfig.getAttributeValue(name);
+         setAttribute(on, name, value);
+      }
+
+      log.debug(mbeanConfig + " registered and configured");
+      return on;
+   }
+
+   /**
+    * Note that this method makes no assumption on whether the service was stopped or destroyed, nor
+    * does it attempt to stop/destroy the service.
+    */
+   public void unregisterService(ObjectName on) throws Exception
+   {
+      mbeanServer.unregisterMBean(on);
+      log.debug(on + " unregistered");
+   }
+
+   public Object invoke(ObjectName on, String operationName, Object[] params, String[] signature)
+      throws Exception
+   {
+      try
+      {
+         return mbeanServer.invoke(on, operationName, params, signature);
+      }
+      catch(MBeanException e)
+      {
+         // unwrap the exception thrown by the service
+         throw (Exception)e.getCause();
+      }
+   }
+
+   /**
+    * Set the attribute value, performing String -> Object conversion as appropriate.
+    */
+   public void setAttribute(ObjectName on, String name, String valueAsString) throws Exception
+   {
+      MBeanInfo mbeanInfo = mbeanServer.getMBeanInfo(on);
+      if("SecurityStore".equals(name))
+      {
+         return;
+      }
+      Object value = type(mbeanInfo, name, valueAsString);
+      mbeanServer.setAttribute(on, new Attribute(name, value));
+   }
+
+   public Object getAttribute(ObjectName on, String name) throws Exception
+   {
+      return mbeanServer.getAttribute(on, name);
+   }
+
+   public void addNotificationListener(ObjectName on, NotificationListener listener)
+      throws Exception
+   {
+      mbeanServer.addNotificationListener(on, listener, null, null);
+   }
+
+   public void removeNotificationListener(ObjectName on, NotificationListener listener)
+      throws Exception
+   {
+      mbeanServer.removeNotificationListener(on, listener);
+   }
+
+   public MBeanServer getMBeanServer()
+   {
+      return mbeanServer;
+   }
+
+   public void bindDefaultJMSProvider() throws Exception
+   {
+      JNDIProviderAdapter pa = new JNDIProviderAdapter();
+      pa.setQueueFactoryRef("/ConnectionFactory");
+      pa.setTopicFactoryRef("/ConnectionFactory");
+      pa.setFactoryRef("/ConnectionFactory");
+      initialContext.bind("java:/DefaultJMSProvider", pa);
+   }
+
+   public void unbindDefaultJMSProvider() throws Exception
+   {
+      initialContext.unbind("java:/DefaultJMSProvider");
+   }
+
+   public void bindJCAJMSConnectionFactory() throws Exception
+   {
+      deployJBossJMSRA(JMS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME);
+
+      startManagedConnectionPool(JMS_MANAGED_CONNECTION_POOL_OBJECT_NAME,
+                                 JMS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME,
+                                 "ByApplication");
+
+      startConnectionManager(JMS_CONNECTION_MANAGER_OBJECT_NAME, true, false, // not local, but XA(!)
+                             TRANSACTION_MANAGER_OBJECT_NAME,
+                             CachedConnectionManagerMBean.OBJECT_NAME,
+                             JMS_MANAGED_CONNECTION_POOL_OBJECT_NAME);
+
+      ObjectName on = JMS_CONNECTION_FACTORY_BINDING_SERVICE_OBJECT_NAME;
+
+      // create it
+      ConnectionFactoryBindingService cfBindingService = new ConnectionFactoryBindingService();
+
+      // register it
+      mbeanServer.registerMBean(cfBindingService, on);
+
+      // configure it
+      mbeanServer.setAttribute(on, new Attribute("ConnectionManager", JMS_CONNECTION_MANAGER_OBJECT_NAME));
+      mbeanServer.setAttribute(on, new Attribute("JndiName", JCA_JMS_CONNECTION_FACTORY_JNDI_NAME));
+      mbeanServer.setAttribute(on, new Attribute("UseJavaContext", Boolean.TRUE));
+
+      // start it
+      mbeanServer.invoke(on, "start", new Object[0], new String[0]);
+
+      log.debug("started " + on);
+   }
+
+   /**
+    * This method may be called twice successively, so it is important to handle graciously this
+    * situation.
+    */
+   public void unbindJCAJMSConnectionFactory() throws Exception
+   {
+      ObjectName on = JMS_CONNECTION_FACTORY_BINDING_SERVICE_OBJECT_NAME;
+
+      if (mbeanServer.isRegistered(on))
+      {
+         mbeanServer.invoke(on, "stop", new Object[0], new String[0]);
+         mbeanServer.invoke(on, "destroy", new Object[0], new String[0]);
+         mbeanServer.unregisterMBean(on);
+      }
+
+      stopConnectionManager(JMS_CONNECTION_MANAGER_OBJECT_NAME);
+      stopManagedConnectionPool(JMS_MANAGED_CONNECTION_POOL_OBJECT_NAME);
+      undeployJBossJMSRA(JMS_MANAGED_CONNECTION_FACTORY_OBJECT_NAME);
+   }
+
+   public String getDatabaseName()
+   {
+      return config.getDatabaseName();
+   }
+
+   public String getRemotingTransport()
+   {
+      return config.getRemotingTransport();
+   }
+
+   public boolean isClustered()
+   {
+      return config.isClustered();
+   }
+
+   public void installJMSProviderAdaptor(String jndi, JMSProviderAdapter adaptor) throws Exception
+   {
+      log.info("Binding adaptor " + adaptor + " in JNDI: " + jndi);
+      initialContext.bind(jndi, adaptor);
+   }
+
+   public void uninstallJMSProviderAdaptor(String jndi) throws Exception
+   {
+      initialContext.unbind(jndi);
+   }
+
+   public void startRecoveryManager()
+   {
+      log.info("Starting arjuna recovery manager");
+
+      //Need to start the recovery manager manually - if deploying
+      //inside JBoss this wouldn't be necessary - since you would use
+      //the TransactionManagerService MBean which would start the recovery manager
+      //for you
+      recoveryManager = RecoveryManager.manager(RecoveryManager.INDIRECT_MANAGEMENT);
+
+      log.info("Started recovery manager");
+   }
+
+   public void stopRecoveryManager()
+   {
+      if (recoveryManager != null)
+      {
+         recoveryManager.stop();
+      }
+   }
+
+
+   static boolean storeAlreadySet = false;
+
+   // Recovery doesn't play well with reseting the ObjectStore, so we do that per VM
+   public static void setupObjectStoreDir()
+   {
+      String name = "TestObjectStore-";
+      if (!storeAlreadySet)
+      {
+         storeAlreadySet = true;
+         String objectStoreDir = System.getProperty("objectstore.dir");
+         log.trace("ObjectStoreDir===" + objectStoreDir);
+
+         //We must ensure each node has its own object store
+
+         String newObjectStore = name + new GUID().toString();
+
+         if (objectStoreDir != null)
+         {
+         	//Delete the old one
+         	//deleteDirectory(new File(objectStoreDir));
+
+            newObjectStore = objectStoreDir + "/" + newObjectStore;
+         }
+
+         log.info("Setting com.arjuna.ats.arjuna.common.Environment.OBJECTSTORE_DIR to " + newObjectStore);
+
+         System.setProperty(com.arjuna.ats.arjuna.common.Environment.OBJECTSTORE_DIR, newObjectStore);
+
+         //We must also make sure the node identifier is unique for each node
+         //Otherwise xids might overlap
+         String arjunanodeId = "TestNodeID-" + new GUID().toString();
+
+         log.info("Setting com.arjuna.ats.arjuna.common.Environment.XA_NODE_IDENTIFIER to " + arjunanodeId);
+
+         System.setProperty(com.arjuna.ats.arjuna.common.Environment.XA_NODE_IDENTIFIER, arjunanodeId);
+
+         log.info("Setting objectstore.dir to " + newObjectStore);
+      }
+   }
+
+
+
+   public String toString()
+   {
+      return "ServiceContainer[" + Integer.toHexString(hashCode()) + "]";
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private --------------------------------------------------------------------------------------
+
+   /**
+    * Note that this method makes no assumption on whether the service was created or started, nor
+    * does it attempt to create/start the service.
+    *
+    * @param service - a Standard/DynamicMBean instance.
+    */
+   private void registerService(Object service, ObjectName on) throws Exception
+   {
+      mbeanServer.registerMBean(service, on);
+      log.debug(service + " registered as " + on);
+   }
+
+   private void readConfigurationFile() throws Exception
+   {
+      InputStream cs = getClass().getClassLoader().getResourceAsStream(CONFIGURATION_FILE_NAME);
+      if (cs == null) // JBMESSAGING-1222 - Hack for OSX JVM Bug when testing the remote connectors
+      {	              //(Assumes tests are being executed is the jboss-messaging/tests directory)
+    	 cs = new FileInputStream("etc/" + CONFIGURATION_FILE_NAME);
+    	 if(cs == null)
+    	 {
+    		 throw new Exception("Cannot file container's configuration file " +
+                             CONFIGURATION_FILE_NAME + ". Make sure it is in the classpath.");
+    	 }
+      }
+
+      try
+      {
+         config = new ServiceContainerConfiguration(cs);
+      }
+      finally
+      {
+         cs.close();
+      }
+   }
+
+   private void loadJNDIContexts() throws Exception
+   {
+      String[] names = {ServerManagement.DEFAULT_QUEUE_CONTEXT,
+                        ServerManagement.DEFAULT_TOPIC_CONTEXT};
+
+      for (int i = 0; i < names.length; i++)
+      {
+         try
+         {
+            initialContext.lookup(names[i]);
+         }
+         catch(NameNotFoundException e)
+         {
+            JNDIUtil.createContext(initialContext, names[i]);
+            log.debug("created context /" + names[i]);
+         }
+      }
+   }
+
+   private void unloadJNDIContexts() throws Exception
+   {
+      // ServerPeer should do that upon its shutdown, this is redundant
+
+      String[] context = { "/topic", "/queue" };
+      for(int i = 0; i < context.length; i++)
+      {
+         try
+         {
+            Context c = (Context)initialContext.lookup(context[i]);
+            JNDIUtil.tearDownRecursively(c);
+         }
+         catch(NameNotFoundException e)
+         {
+            // OK
+            log.debug("no context " + context[i] + " to unload, cleanup already performed");
+         }
+      }
+   }
+
+   private void startServiceController() throws Exception
+   {
+      // I don't really need it, because I enforce dependencies by hand, but this will keep some
+      // services happy.
+      ServiceController sc = new ServiceController();
+      mbeanServer.registerMBean(sc, SERVICE_CONTROLLER_OBJECT_NAME);
+   }
+
+   private void stopServiceController() throws Exception
+   {
+      mbeanServer.unregisterMBean(SERVICE_CONTROLLER_OBJECT_NAME);
+   }
+
+   /**
+    * Register a class loader used to instantiate other services.
+    */
+   private void registerClassLoader() throws Exception
+   {
+      ClassLoader cl = getClass().getClassLoader();
+      mbeanServer.registerMBean(new ClassLoaderJMXWrapper(cl), CLASS_LOADER_OBJECT_NAME);
+   }
+
+   private void unregisterClassLoader() throws Exception
+   {
+      mbeanServer.unregisterMBean(CLASS_LOADER_OBJECT_NAME);
+   }
+
+   private void startInVMDatabase() throws Exception
+   {
+      if (!"hsqldb".equals(config.getDatabaseName()))
+      {
+         // is an out-of-process DB, and it must be stared externally
+         return;
+      }
+
+      log.debug("starting " + config.getDatabaseName() + " in-VM");
+
+      String url = config.getDatabaseConnectionURL();
+      HsqlProperties props = new HsqlProperties();
+      props.setProperty("server.database.0", ServiceContainerConfiguration.getHypersonicDatabase(url));
+      props.setProperty("server.dbname.0", ServiceContainerConfiguration.getHypersonicDbname(url));
+      props.setProperty("server.trace", "false");
+      props.setProperty("server.silent", "true");
+      props.setProperty("server.no_system_exit", "true");
+      props.setProperty("server.port", 27862);
+      props.setProperty("server.address", ipAddressOrHostName);
+
+      hsqldbServer = new Server();
+      hsqldbServer.setLogWriter(null);
+      hsqldbServer.setProperties(props);
+      hsqldbServer.start();
+
+      log.debug("started " + config.getDatabaseName() + " in-VM");
+   }
+
+   private void stopInVMDatabase() throws Exception
+   {
+      if (!"hsqldb".equals(config.getDatabaseName()))
+      {
+         // is an out-of-process DB, and it must be stopped externally
+         return;
+      }
+
+      log.debug("stop " + hsqldbServer);
+
+      Class.forName(config.getDatabaseDriverClass());
+
+      Connection conn =
+         DriverManager.getConnection(config.getDatabaseConnectionURL(),
+                                     config.getDatabaseUserName(),
+                                     config.getDatabasePassword());
+
+      Statement stat = conn.createStatement();
+      stat.executeUpdate("SHUTDOWN");
+      conn.close();
+
+      // faster stop
+      // hsqldbServer.stop();
+   }
+
+
+   private void startTransactionManager() throws Exception
+   {
+      if (tm == null)
+      {
+         setupObjectStoreDir();
+         log.info("Starting arjuna tx mgr");
+         tm = com.arjuna.ats.jta.TransactionManager.transactionManager();
+      }
+
+      TransactionManagerJMXWrapper mbean = new TransactionManagerJMXWrapper(tm);
+      mbeanServer.registerMBean(mbean, TRANSACTION_MANAGER_OBJECT_NAME);
+      mbeanServer.invoke(TRANSACTION_MANAGER_OBJECT_NAME, "start", new Object[0], new String[0]);
+      log.debug("started " + TRANSACTION_MANAGER_OBJECT_NAME);
+
+      initialContext.bind(TRANSACTION_MANAGER_JNDI_NAME, tm);
+      toUnbindAtExit.add(TRANSACTION_MANAGER_JNDI_NAME);
+
+      log.debug("bound " + TRANSACTION_MANAGER_JNDI_NAME);
+
+      initialContext.
+         rebind(USER_TRANSACTION_JNDI_NAME, ServerVMClientUserTransaction.getSingleton());
+
+      log.debug("bound " + USER_TRANSACTION_JNDI_NAME);
+   }
+
+   public SecurityMetadataStore startSecurityStore() throws Exception
+   {
+      ObjectName securityObject = new ObjectName("jboss.messaging:service=SecurityStore");
+      SecurityMetadataStore securityMetadataStore = new SecurityMetadataStore();
+      securityMetadataStore.setSecurityDomain(MockJBossSecurityManager.TEST_SECURITY_DOMAIN);
+      securityMetadataStore.setSuckerPassword(SecurityMetadataStore.DEFAULT_SUCKER_USER_PASSWORD);
+      securityMetadataStore.setDefaultSecurityConfig(XMLUtil.stringToElement("<security>\n" +
+              "                  <role name=\"guest\" read=\"true\" write=\"true\" create=\"true\"/>\n" +
+              "             </security>"));
+      mbeanServer.registerMBean(securityMetadataStore, securityObject);
+      mbeanServer.invoke(securityObject, "start", new Object[0], new String[0]);
+      return securityMetadataStore;
+   }
+
+   private static boolean deleteDirectory(File directory)
+   {
+      if (directory.isDirectory())
+      {
+         String[] files = directory.list();
+
+         for (int j = 0; j < files.length; j++)
+         {
+            if (!deleteDirectory(new File(directory, files[j])))
+            {
+               return false;
+            }
+         }
+      }
+
+      return directory.delete();
+   }
+
+   private void startCachedConnectionManager(ObjectName on) throws Exception
+   {
+      CachedConnectionManager ccm = new CachedConnectionManager();
+
+      // dependencies
+      ccm.setTransactionManagerServiceName(TRANSACTION_MANAGER_OBJECT_NAME);
+
+      mbeanServer.registerMBean(ccm, on);
+      mbeanServer.invoke(on, "start", new Object[0], new String[0]);
+      log.debug("started " + on);
+   }
+
+   /**
+    * Database specific.
+    */
+   private void startManagedConnectionFactory(ObjectName on) throws Exception
+   {
+      LocalManagedConnectionFactory mcf = new LocalManagedConnectionFactory();
+
+      log.info("connection url:" + config.getDatabaseConnectionURL());
+      log.info("driver:" + config.getDatabaseConnectionURL());
+      log.info("username:" + config.getDatabaseUserName());
+      log.info("password:" + config.getDatabasePassword());
+
+      mcf.setConnectionURL(config.getDatabaseConnectionURL());
+      mcf.setDriverClass(config.getDatabaseDriverClass());
+      mcf.setUserName(config.getDatabaseUserName());
+      mcf.setPassword(config.getDatabasePassword());
+      String isolation = config.getDatabaseTransactionIsolation();
+      if (isolation != null)
+      {
+         mcf.setTransactionIsolation(isolation);
+      }
+
+      ManagedConnectionFactoryJMXWrapper mbean = new ManagedConnectionFactoryJMXWrapper(mcf);
+      mbeanServer.registerMBean(mbean, on);
+      mbeanServer.invoke(on, "start", new Object[0], new String[0]);
+      log.debug("started " + on);
+   }
+
+   /**
+    * This method may be called twice successively, so it is important to handle graciously this
+    * situation.
+    */
+   private void stopManagedConnectionFactory(ObjectName on) throws Exception
+   {
+      stopService(on);
+   }
+
+   private void startManagedConnectionPool(ObjectName on,
+                                           ObjectName managedConnectionFactoryObjectName,
+                                           String criteria) throws Exception
+   {
+      mcp = new JBossManagedConnectionPool();
+      mcp.setCriteria(criteria);
+
+      // dependencies
+      mcp.setManagedConnectionFactoryName(managedConnectionFactoryObjectName);
+
+      mbeanServer.registerMBean(mcp, on);
+      mbeanServer.invoke(on, "start", new Object[0], new String[0]);
+      log.debug("started " + on);
+
+
+   }
+
+   /**
+    * This method may be called twice successively, so it is important to handle graciously this
+    * situation.
+    */
+   private void stopManagedConnectionPool(ObjectName on) throws Exception
+   {
+      stopService(on);
+   }
+
+   private TxConnectionManager startConnectionManager(ObjectName on,
+                                                      boolean trackConnectionByTx,
+                                                      boolean localTransactions,
+                                                      ObjectName transactionManagerObjectName,
+                                                      ObjectName cachedConnectionManagerObjectName,
+                                                      ObjectName managedConnectionPoolObjectName)
+      throws Exception
+   {
+      TxConnectionManager cm = new TxConnectionManager();
+      cm.preRegister(mbeanServer, on);
+      cm.setTrackConnectionByTx(trackConnectionByTx);
+      cm.setLocalTransactions(localTransactions);
+
+      // dependencies
+      cm.setTransactionManagerService(transactionManagerObjectName);
+      cm.setCachedConnectionManager(cachedConnectionManagerObjectName);
+      cm.setManagedConnectionPool(managedConnectionPoolObjectName);
+
+      mbeanServer.registerMBean(cm, on);
+      mbeanServer.invoke(on, "start", new Object[0], new String[0]);
+      log.debug("started " + on);
+
+      return cm;
+   }
+
+   /**
+    * This method may be called twice successively, so it is important to handle graciously this
+    * situation.
+    */
+   private void stopConnectionManager(ObjectName on) throws Exception
+   {
+      stopService(on);
+   }
+
+   private void startWrapperDataSourceService() throws Exception
+   {
+      WrapperDataSourceService wdss = new WrapperDataSourceService();
+      wdss.setJndiName(DATA_SOURCE_JNDI_NAME);
+
+      // dependencies
+      wdss.setConnectionManager(DEFAULTDS_CONNECTION_MANAGER_OBJECT_NAME);
+      ObjectName irrelevant = new ObjectName(":name=irrelevant");
+      wdss.setJMXInvokerName(irrelevant);
+      Registry.bind(irrelevant, new NoopInvoker());
+
+      mbeanServer.registerMBean(wdss, DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME);
+      mbeanServer.invoke(DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME, "start", new Object[0], new String[0]);
+
+      log.debug("started " + DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME);
+   }
+
+   private void stopWrapperDataSourceService() throws Exception
+   {
+      stopService(DEFAULTDS_WRAPPER_DATA_SOURCE_SERVICE_OBJECT_NAME);
+   }
+
+   private void deployJBossJMSRA(ObjectName managedConnFactoryObjectName) throws Exception
+   {
+      JmsManagedConnectionFactory mcf = new JmsManagedConnectionFactory();
+//      mcf.setClientID("");
+//      mcf.setUserName("");
+//      mcf.setPassword("");
+      mcf.setJmsProviderAdapterJNDI("java:/DefaultJMSProvider");
+      mcf.setStrict(true);
+      mcf.setSessionDefaultType("javax.jms.Queue");
+
+      registerService(new ManagedConnectionFactoryJMXWrapper(mcf), managedConnFactoryObjectName);
+   }
+
+   /**
+    * This method may be called twice successively, so it is important to handle graciously this
+    * situation.
+    */
+   private void undeployJBossJMSRA(ObjectName managedConnFactoryObjectName) throws Exception
+   {
+      stopService(managedConnFactoryObjectName);
+   }
+
+   private String buildLocatorURI(String transport, Map overrideMap) throws Exception
+   {
+      // We use this from thirdparty remoting tests when we don't want to send stuff through
+      // JMSWireFormat, but we want everything else in the connector's configuration to be
+      // identical with what we use in Messaging
+      boolean overrideMarshallers =
+         overrideMap != null && overrideMap.get(DO_NOT_USE_MESSAGING_MARSHALLERS) != null;
+
+      // Note that we DO NOT want the direct thread pool on the server side - since that can lead
+      // to deadlocks
+
+      String configFileName = "remoting/remoting-" + transport + "-service.xml";
+
+      MBeanConfigurationElement connectorServiceConfig =
+         ServiceConfigHelper.loadServiceConfiguration(configFileName, "Connector");
+
+      String invokerConfig = connectorServiceConfig.getAttributeValue("Configuration");
+
+      Element invokerElement = (Element) XMLUtil
+         .stringToElement(invokerConfig)
+         .getElementsByTagName("invoker").item(0);
+
+      NodeList invokerAttributes = invokerElement.getElementsByTagName("attribute");
+
+      StringBuffer paramsBuffer = new StringBuffer();
+
+      for (int i = 0; i < invokerAttributes.getLength(); i++)
+      {
+         Element attr = (Element) invokerAttributes.item(i);
+         String key = attr.getAttribute("name");
+
+         if (attr.getAttribute("isParam").equals("") && (key == null || !key.equals("serverSocketClass")))
+         {
+            continue;
+         }
+
+         String value = attr.getTextContent().trim();
+
+         if (overrideMarshallers &&
+               (key.equals("marshaller") || key.equals("unmarshaller")))
+         {
+            continue;
+         }
+
+         if (paramsBuffer.length() > 0)
+         {
+            paramsBuffer.append('&');
+         }
+
+         if (overrideMap != null)
+         {
+	         String valueOverride = (String)overrideMap.get(key);
+	         if (valueOverride != null)
+	         {
+	            value = valueOverride;
+	         }
+         }
+
+         paramsBuffer.append(key).append('=').append(value);
+      }
+
+      int freePort = PortUtil.findFreePort(ipAddressOrHostName);
+
+      return new StringBuffer()
+         .append(transport).append("://")
+         .append(ipAddressOrHostName).append(':').append(freePort)
+         .append("/?").append(paramsBuffer)
+         .toString();
+   }
+
+   private void startRemoting(ServiceAttributeOverrides attrOverrides,
+                              String transport,
+                              ObjectName objectName) throws Exception
+   {
+      log.debug("Starting remoting transport=" + transport + " objectName=" + objectName);
+      RemotingJMXWrapper mbean;
+      String locatorURI = null;
+
+      // some tests may want specific locator URI overrides to simulate special conditions; use
+      // that with priority, if available
+      Map overrideMap = null;
+
+      if (attrOverrides != null)
+      {
+         overrideMap = attrOverrides.get(objectName);
+
+         if (overrideMap != null)
+         {
+            locatorURI = (String)overrideMap.get("LocatorURI");
+         }
+      }
+
+      if (locatorURI == null)
+      {
+         locatorURI = buildLocatorURI(transport, overrideMap);
+         log.info("creating server for: " + locatorURI);
+      }
+
+      log.debug("Using locator uri: " + locatorURI);
+
+      InvokerLocator locator = new InvokerLocator(locatorURI);
+
+      log.debug("Started remoting connector on uri:" + locator.getLocatorURI());
+
+      mbean = new RemotingJMXWrapper(locator);
+      mbeanServer.registerMBean(mbean, objectName);
+      mbeanServer.invoke(objectName, "start", new Object[0], new String[0]);
+
+      ServerInvocationHandler handler = new JMSServerInvocationHandler();
+
+      mbeanServer.invoke(objectName, "addInvocationHandler",
+                         new Object[] { ServerPeer.REMOTING_JMS_SUBSYSTEM, handler},
+                         new String[] { "java.lang.String",
+                                        "org.jboss.remoting.ServerInvocationHandler"});
+
+      log.debug("started " + objectName);
+   }
+
+
+   private void startSecurityManager() throws Exception
+   {
+      MockJBossSecurityManager sm = new MockJBossSecurityManager();
+      this.initialContext.bind(MockJBossSecurityManager.TEST_SECURITY_DOMAIN, sm);
+
+      toUnbindAtExit.add(MockJBossSecurityManager.TEST_SECURITY_DOMAIN);
+
+      log.debug("started JBoss Mock Security Manager, using ic: " + this.initialContext + " id " + System.identityHashCode(this.initialContext));
+   }
+
+   private void stopService(ObjectName target) throws Exception
+   {
+      if (mbeanServer.isRegistered(target))
+      {
+         mbeanServer.invoke(target, "stop", new Object[0], new String[0]);
+         mbeanServer.unregisterMBean(target);
+         log.debug("stopped " + target);
+      }
+   }
+
+   private void cleanJNDI() throws Exception
+   {
+      for (Iterator i = toUnbindAtExit.iterator(); i.hasNext(); )
+      {
+         String name = (String)i.next();
+
+         initialContext.unbind(name);
+      }
+   }
+
+   private void executeStatement(TransactionManager mgr, DataSource ds, String statement) throws Exception
+   {
+      Connection conn = null;
+      boolean exception = false;
+
+      try
+      {
+         try
+         {
+            mgr.begin();
+
+            conn = ds.getConnection();
+
+            log.debug("executing " + statement);
+
+            PreparedStatement ps = conn.prepareStatement(statement);
+
+            ps.executeUpdate();
+
+            log.debug(statement + " executed");
+
+            ps.close();
+         }
+         catch (SQLException e)
+         {
+            // Ignore
+            log.debug("Failed to execute statement", e);
+            exception = true;
+         }
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+
+         if (exception)
+         {
+            mgr.rollback();
+         }
+         else
+         {
+            mgr.commit();
+         }
+      }
+
+
+   }
+
+   protected void dropAllTables() throws Exception
+   {
+      log.info("DROPPING ALL TABLES FROM DATABASE!");
+
+      InitialContext ctx = new InitialContext();
+
+      // We need to execute each drop in its own transaction otherwise postgresql will not execute
+      // further commands after one fails
+
+      TransactionManager mgr = (TransactionManager)ctx.lookup(TransactionManagerService.JNDI_NAME);
+      DataSource ds = (DataSource)ctx.lookup("java:/DefaultDS");
+
+      javax.transaction.Transaction txOld = mgr.suspend();
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_POSTOFFICE");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_MSG_REF");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_MSG");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_TX");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_COUNTER");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_USER");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_ROLE");
+
+      executeStatement(mgr, ds, "DROP TABLE JBM_DUAL");
+
+      if (txOld != null)
+      {
+         mgr.resume(txOld);
+      }
+
+      log.debug("done with dropping tables");
+   }
+
+   protected void deleteAllData() throws Exception
+   {
+      log.info("DELETING ALL DATA FROM DATABASE!");
+
+      InitialContext ctx = new InitialContext();
+
+      // We need to execute each drop in its own transaction otherwise postgresql will not execute
+      // further commands after one fails
+
+      TransactionManager mgr = (TransactionManager)ctx.lookup(TransactionManagerService.JNDI_NAME);
+      DataSource ds = (DataSource)ctx.lookup("java:/DefaultDS");
+
+      javax.transaction.Transaction txOld = mgr.suspend();
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_POSTOFFICE");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_MSG_REF");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_MSG");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_TX");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_COUNTER");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_USER");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_ROLE");
+
+      executeStatement(mgr, ds, "DELETE FROM JBM_ID_CACHE");
+
+      if (txOld != null)
+      {
+         mgr.resume(txOld);
+      }
+
+      log.debug("done with the deleting data");
+   }
+
+   private void startChannelFactory() throws Exception
+   {
+      log.debug("Starting multiplexer");
+
+      String channelFactory = "server/default/deploy/mock-channelfactory-service.xml";
+      URL multiplexerCofigURL = getClass().getClassLoader().getResource(channelFactory);
+
+      if (multiplexerCofigURL == null)
+      {
+         throw new Exception("Cannot find " + multiplexerCofigURL + " in the classpath");
+      }
+
+      ServiceDeploymentDescriptor multiplexerDD = ServiceConfigHelper.loadConfigFile(channelFactory);
+
+      List services = multiplexerDD.query("service", "ChannelFactory");
+
+      if (services.isEmpty())
+      {
+         log.info("Couldn't find multiplexer config");
+      }
+      else
+      {
+         log.info("Could find multiplexer config");
+      }
+
+      MBeanConfigurationElement multiplexerConfig =
+         (MBeanConfigurationElement)services.iterator().next();
+      ObjectName nameMultiplexer = registerAndConfigureService(multiplexerConfig);
+      invoke(nameMultiplexer,"create", new Object[0], new String[0]);
+      invoke(nameMultiplexer,"start", new Object[0], new String[0]);
+   }
+
+   private void overrideAttributes(ObjectName on, ServiceAttributeOverrides attrOverrides)
+      throws Exception
+   {
+      if (attrOverrides == null)
+      {
+         return;
+      }
+
+      Map sao = attrOverrides.get(on);
+
+      for(Iterator i = sao.entrySet().iterator(); i.hasNext();)
+      {
+         Map.Entry entry = (Map.Entry)i.next();
+         String attrName = (String)entry.getKey();
+         Object attrValue = entry.getValue();
+         setAttribute(on, attrName, attrValue.toString());
+
+      }
+   }
+
+   public void deployConnectionFactories(String connFactoryConfigFile,
+                                         ServiceAttributeOverrides attrOverrides) throws Exception
+   {
+      connFactoryObjectNames.clear();
+
+      ServiceDeploymentDescriptor cfdd = ServiceConfigHelper.loadConfigFile(connFactoryConfigFile);
+
+      List connFactoryElements = cfdd.query("service", "ConnectionFactory");
+
+      for (Iterator i = connFactoryElements.iterator(); i.hasNext();)
+      {
+         MBeanConfigurationElement connFactoryElement = (MBeanConfigurationElement) i.next();
+         ObjectName on = registerAndConfigureService(connFactoryElement);
+         overrideAttributes(on, attrOverrides);
+         // dependencies have been automatically injected already
+         invoke(on, "create", new Object[0], new String[0]);
+         invoke(on, "start", new Object[0], new String[0]);
+         connFactoryObjectNames.add(on);
+      }
+
+      connFactoryElements = cfdd.query("service", "ClusteredConnectionFactory");
+
+      for (Iterator i = connFactoryElements.iterator(); i.hasNext();)
+      {
+         MBeanConfigurationElement connFactoryElement = (MBeanConfigurationElement) i.next();
+         ObjectName on = registerAndConfigureService(connFactoryElement);
+         overrideAttributes(on, attrOverrides);
+         // dependencies have been automatically injected already
+         invoke(on, "create", new Object[0], new String[0]);
+         invoke(on, "start", new Object[0], new String[0]);
+         connFactoryObjectNames.add(on);
+      }
+
+      connFactoryElements = cfdd.query("service", "HTTPConnectionFactory");
+
+      for (Iterator i = connFactoryElements.iterator(); i.hasNext();)
+      {
+         MBeanConfigurationElement connFactoryElement = (MBeanConfigurationElement) i.next();
+         ObjectName on = registerAndConfigureService(connFactoryElement);
+         overrideAttributes(on, attrOverrides);
+         // dependencies have been automatically injected already
+         invoke(on, "create", new Object[0], new String[0]);
+         invoke(on, "start", new Object[0], new String[0]);
+         connFactoryObjectNames.add(on);
+      }
+
+      connFactoryElements = cfdd.query("service", "ClusterPullConnectionFactory");
+
+      for (Iterator i = connFactoryElements.iterator(); i.hasNext();)
+      {
+         MBeanConfigurationElement connFactoryElement = (MBeanConfigurationElement) i.next();
+         ObjectName on = registerAndConfigureService(connFactoryElement);
+         overrideAttributes(on, attrOverrides);
+         // dependencies have been automatically injected already
+         invoke(on, "create", new Object[0], new String[0]);
+         invoke(on, "start", new Object[0], new String[0]);
+         connFactoryObjectNames.add(on);
+      }
+   }
+
+   private void parseConfig(String config)
+   {
+      config = config.toLowerCase();
+      for (StringTokenizer st = new StringTokenizer(config, ", "); st.hasMoreTokens(); )
+      {
+         String tok = st.nextToken();
+         boolean minus = false;
+
+         if (tok.startsWith("-"))
+         {
+            tok = tok.substring(1);
+            minus = true;
+         }
+
+         if ("all".equals(tok))
+         {
+            transaction = true;
+            database = true;
+            jca = true;
+            remoting = true;
+            security = true;
+            channelfactory = true;
+         }
+         else
+         if ("all+http".equals(tok))
+         {
+            channelfactory = true;
+         	transaction = true;
+            database = true;
+            jca = true;
+            remoting = true;
+            security = true;
+            httpConnectionFactory = true;
+         }
+         else if ("transaction".equals(tok))
+         {
+            transaction = true;
+            if (minus)
+            {
+               transaction = false;
+            }
+         }
+         else if ("database".equals(tok))
+         {
+            database = true;
+            if (minus)
+            {
+               database = false;
+            }
+         }
+         else if ("jca".equals(tok))
+         {
+            jca = true;
+            if (minus)
+            {
+               jca = false;
+            }
+         }
+         else if ("remoting".equals(tok))
+         {
+            remoting = true;
+            if (minus)
+            {
+               remoting = false;
+            }
+         }
+         else if ("security".equals(tok))
+         {
+            security = true;
+            if (minus)
+            {
+               security = false;
+            }
+         }
+         else if ("channelfactory".equals(tok))
+         {
+            channelfactory = true;
+            if (minus)
+            {
+               channelfactory = false;
+            }
+         }
+         else if ("none".equals(tok))
+         {
+            transaction = false;
+            database = false;
+            jca = false;
+            remoting = false;
+            security = false;
+            channelfactory = false;
+         }
+         else
+         {
+            throw new IllegalArgumentException("Unknown service: " + tok);
+         }
+      }
+   }
+
+   // Inner classes --------------------------------------------------------------------------------
+}




More information about the jboss-cvs-commits mailing list