<?xml version="1.0" encoding="UTF-8"?>

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<server>

  <!-- ==================================================================== -->
  <!-- New ConnectionManager setup for solid using 3.0 driver               -->
  <!-- Build jmx-api (build/build.sh all) and view for config documentation -->
  <!-- Thanks to Casey Haakenson                                            -->
  <!-- ==================================================================== -->

  <mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=SolidDS">


    <depends optional-attribute-name="ManagedConnectionFactoryName">
      <!--embedded mbean-->
      <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=SolidDS">

        <attribute name="JndiName">SolidDS</attribute>
        
        <!--NOTE: Solid wants the username/password in the URL, it will 
            ignore the specific arguments.-->
        <attribute name="ManagedConnectionFactoryProperties">
          <properties>
            <config-property name="ConnectionURL" type="java.lang.String">jdbc:solid://yourdbhost:1964/yourdbusername/yourdbpassword</config-property>
            <config-property name="DriverClass" type="java.lang.String">solid.jdbc.SolidDriver</config-property>
          </properties>

            <!--These properties are ignored by the Solid driver.
            <config-property name="UserName" type="java.lang.String"></config-property>
            <config-property name="Password" type="java.lang.String"></config-property>
             -->
        </attribute>
        <!--hack-->
        <depends optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper</depends>
      </mbean>
    </depends>

    <depends optional-attribute-name="ManagedConnectionPool">
      <!--embedded mbean-->
      <mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" name="jboss.jca:service=LocalTxPool,name=SolidDS">

        <attribute name="MinSize">0</attribute>
        <attribute name="MaxSize">50</attribute>
        <attribute name="BlockingTimeoutMillis">5000</attribute>
        <attribute name="IdleTimeoutMinutes">15</attribute>
        <!--criteria indicates if Subject (from security domain) or app supplied
            parameters (such as from getConnection(user, pw)) are used to distinguish
            connections in the pool. Choices are 
            ByContainerAndApplication (use both), 
            ByContainer (use Subject),
            ByApplication (use app supplied params only),
            ByNothing (all connections are equivalent, usually if adapter supports
              reauthentication)-->
        <!-- Since at present only a single user specified in the URL is supported, 
          ByNothing is mosst appropriate.  If a URL construction scheme is implemented, 
          this could be one of the other values -->
        <attribute name="Criteria">ByNothing</attribute>
      </mbean>

    </depends>
    <depends optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager</depends>
   <!-- Since the username/password needs to be in the url, there is no way at 
     present for a generic wrapper to supply user/pw to the driver.  A custom 
     wrapper could be used to consruct the url dynamically from a base and the 
     user/pw.  In case someone does that, I'm leaving the container-managed-security 
     attribute in.  -->
    <!-- <attribute name="SecurityDomainJndiName">SolidDbRealm</attribute>-->

    <depends optional-attribute-name="JaasSecurityManagerService">jboss.security:name=JaasSecurityManager</depends>

    <attribute name="TransactionManager">java:/TransactionManager</attribute>
    <!--make the rar deploy! hack till better deployment-->
    <depends>jboss.jca:service=RARDeployer</depends>
  </mbean>

</server>
