Found another potential problem with running the MBean inside of JBoss... When using a JDBC CacheLoader it seems to be trying to work with the datasource before its ready even though I have specified a dependancy on the datasource.
I checked the constructor for TreeCache and I don't see anything there that would be a problem. Constructors are the only thing I am aware of in an MBean that gets called regardless of dependancies. I drop the original jboss-cache.jar back in and jboss starts up just fine...
Below is the stack trace I am getting on start up and the service.xml I am using. Notice I have commented out the optimistic locking and the new "UseMarshalling" settings and the problem still occurs.
service.xml:
<mbean code="org.jboss.cache.TreeCache"
 name="jboss.cache:service=TreeCachePersisted">
 <depends>jboss:service=Naming</depends>
 <depends>jboss:service=TransactionManager</depends>
 <depends>jboss.jca:service=DataSourceBinding,name=persistedCacheMySqlDS</depends>
 <!--
 Configure the TransactionManager
 -->
 <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
 <!--
 Node locking scheme:
 OPTIMISTIC
 PESSIMISTIC (default)
 See http://wiki.jboss.org/wiki/Wiki.jsp?page=OptimisticNodeLocking for a discussion on this
 WARNING: Using node locking scheme of OPTIMISTIC is EXPERIMENTAL at this stage
 and is not officially released or supported.
 Use at your own risk (but do provide feedback on
 http://jira.jboss.com/jira/browse/JBCACHE-69)
 - Manik Surtani (manik@jboss.org)
 <attribute name="NodeLockingScheme">OPTIMISTIC</attribute>
 -->
 <!--
 Isolation level : SERIALIZABLE
 REPEATABLE_READ (default)
 READ_COMMITTED
 READ_UNCOMMITTED
 NONE
 -->
 <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
 <!--
 Valid modes are LOCAL, REPL_ASYNC and REPL_SYNC
 -->
 <attribute name="CacheMode">REPL_SYNC</attribute>
 <!--
 Just used for async repl: use a replication queue
 -->
 <attribute name="UseReplQueue">false</attribute>
 <!--
 Replication interval for replication queue (in ms)
 -->
 <attribute name="ReplQueueInterval">0</attribute>
 <!--
 Max number of elements which trigger replication
 -->
 <attribute name="ReplQueueMaxElements">0</attribute>
 <!-- Name of cluster. Needs to be the same for all clusters, in order
 to find each other
 -->
 <attribute name="ClusterName">TreeCachePersisted-Cluster</attribute>
 <!-- JGroups protocol stack properties. Can also be a URL,
 e.g. file:/home/bela/default.xml
 <attribute name="ClusterProperties"></attribute>
 -->
 <attribute name="ClusterConfig">
 <config>
 <!-- UDP: if you have a multihomed machine,
 set the bind_addr attribute to the appropriate NIC IP address -->
 <!-- UDP: On Windows machines, because of the media sense feature
 being broken with multicast (even after disabling media sense)
 set the loopback attribute to true -->
 <!--DO NOT MOVE OR REMOVE THIS COMMENT USED FOR CONFIG-->
 <UDP mcast_addr="228.1.2.6" mcast_port="48899"
 ip_ttl="64" ip_mcast="true" bind_addr="127.0.0.1"
 mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
 ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
 loopback="true"/>
 <PING timeout="2000" num_initial_members="3"
 up_thread="false" down_thread="false"/>
 <MERGE2 min_interval="10000" max_interval="20000"/>
 <!-- <FD shun="true" up_thread="true" down_thread="true" />-->
 <FD_SOCK/>
 <VERIFY_SUSPECT timeout="1500"
 up_thread="false" down_thread="false"/>
 <pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
 max_xmit_size="8192" up_thread="false" down_thread="false"/>
 <UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"
 down_thread="false"/>
 <pbcast.STABLE desired_avg_gossip="20000"
 up_thread="false" down_thread="false"/>
 <FRAG frag_size="8192"
 down_thread="false" up_thread="false"/>
 <pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
 shun="true" print_local_addr="true"/>
 <pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
 </config>
 </attribute>
 <!--
 Whether or not to fetch state on joining a cluster
 -->
 <attribute name="FetchStateOnStartup">true</attribute>
 <!--
 The max amount of time (in milliseconds) we wait until the
 initial state (ie. the contents of the cache) are retrieved from
 existing members in a clustered environment
 -->
 <attribute name="InitialStateRetrievalTimeout">30000</attribute>
 <!--
 Number of milliseconds to wait until all responses for a
 synchronous call have been received.
 -->
 <attribute name="SyncReplTimeout">10000</attribute>
 <!-- Max number of milliseconds to wait for a lock acquisition -->
 <attribute name="LockAcquisitionTimeout">15000</attribute>
 <!-- Name of the eviction policy class. Not supported now. -->
 <attribute name="EvictionPolicyClass"></attribute>
 <!-- Configuration of the database persistence used for this cache. -->
 <attribute name="CacheLoaderClass">org.jboss.cache.loader.JDBCCacheLoader</attribute>
 <attribute name="CacheLoaderShared">true</attribute>
 <attribute name="CacheLoaderPreload">/</attribute>
 <attribute name="CacheLoaderFetchTransientState">false</attribute>
 <attribute name="CacheLoaderFetchPersistentState">false</attribute>
 <attribute name="CacheLoaderConfig">
 cache.jdbc.datasource=java:/persistedCacheMySqlDS
 cache.jdbc.table.drop=false
 </attribute>
 <!--
 Indicate whether to use marshalling or not. Set this to true if you are running under a scoped
 class loader, e.g., inside an application server. Default is "false".
 <attribute name="UseMarshalling">true</attribute>
 -->
 </mbean>
StackTrace: 14:20:09,877 ERROR [TreeCache] Initialization failed jboss.cache:service=TreeCachePersisted
java.lang.IllegalStateException: Failed to lookup datasource java:/persistedCacheMySqlDS: persistedCacheMySqlDS not bound
 at org.jboss.cache.loader.JDBCCacheLoader.setConfig(JDBCCacheLoader.java:130)
 at org.jboss.cache.TreeCache.createCacheLoader(TreeCache.java:1710)
 at org.jboss.cache.TreeCache._createService(TreeCache.java:1171)
 at org.jboss.cache.TreeCache.createService(TreeCache.java:1144)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalCreate(ServiceMBeanSupport.java:238)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:220)
 at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
 at $Proxy0.create(Unknown Source)
 at org.jboss.system.ServiceController.create(ServiceController.java:330)
 at org.jboss.system.ServiceController.create(ServiceController.java:275)
 at org.jboss.system.ServiceController.create(ServiceController.java:353)
 at org.jboss.system.ServiceController.create(ServiceController.java:275)
 at org.jboss.system.ServiceController.create(ServiceController.java:353)
 at org.jboss.system.ServiceController.create(ServiceController.java:275)
 at org.jboss.system.ServiceController.create(ServiceController.java:353)
 at org.jboss.system.ServiceController.create(ServiceController.java:275)
 at org.jboss.system.ServiceController.create(ServiceController.java:353)
 at org.jboss.system.ServiceController.create(ServiceController.java:275)
 at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
 at $Proxy4.create(Unknown Source)
 at org.jboss.deployment.SARDeployer.create(SARDeployer.java:229)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.mx.util.JMXInvocationHandler.invoke(JMXInvocationHandler.java:273)
 at $Proxy42.create(Unknown Source)
 at org.jboss.deployment.XSLSubDeployer.create(XSLSubDeployer.java:224)
 at org.jboss.deployment.MainDeployer.create(MainDeployer.java:918)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:774)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
 at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
 at $Proxy8.deploy(Unknown Source)
 at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:325)
 at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:501)
 at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:204)
 at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:277)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:272)
 at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:222)
 at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:897)
 at $Proxy0.start(Unknown Source)
 at org.jboss.system.ServiceController.start(ServiceController.java:418)
 at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
 at $Proxy4.start(Unknown Source)
 at org.jboss.deployment.SARDeployer.start(SARDeployer.java:273)
 at org.jboss.deployment.MainDeployer.start(MainDeployer.java:964)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:775)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:738)
 at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:722)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:141)
 at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
 at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:121)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:127)
 at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
 at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
 at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:644)
 at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
 at $Proxy5.deploy(Unknown Source)
 at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:434)
 at org.jboss.system.server.ServerImpl.start(ServerImpl.java:315)
 at org.jboss.Main.boot(Main.java:195)
 at org.jboss.Main$1.run(Main.java:463)
 at java.lang.Thread.run(Thread.java:595)