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

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

<server>


  <!-- ==================================================================== -->
  <!-- ConnectionManager setup for xa informix dbs                          -->
  <!-- Thanks to Larry Sanderson (larrys@mrstock.com)                       -->
  <!-- Build jmx-api (build/build.sh all) and view for config documentation -->
  <!-- ==================================================================== -->

  <mbean code="org.jboss.resource.connectionmanager.XATxConnectionManager" name="jboss.jca:service=XATxCM,name=InformixXaDS">
    <!--make the rar deploy! hack till better deployment-->
    <depends>jboss.jca:service=RARDeployer</depends>


    <depends optional-attribute-name="ManagedConnectionFactoryName">
      <!--embedded mbean-->
      <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=XATxDS,name=InformixXaDS">
        <!--hack-->
        <depends optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=Minerva JDBC XATransaction ResourceAdapter</depends>

        <!--real attributes-->
        <attribute name="ManagedConnectionFactoryProperties">
          <properties>
            <config-property>
              <config-property-name>XADataSourceClass</config-property-name>
              <config-property-type>java.lang.String</config-property-type>
              <config-property-value>com.informix.jdbcx.IfxXADataSource</config-property-value>
            </config-property>
            <config-property>
              <config-property-name>XADataSourceProperties</config-property-name>
              <config-property-type>java.lang.String</config-property-type>
              <config-property-value>IfxWAITTIME=10;Description=My Description;IfxIFXHOST=myhost.mydomain.com;PortNumber=1557;DatabaseName=mydb;ServerName=myserver</config-property-value>
            </config-property>
            <config-property>
                <config-property-name>TransactionIsolation</config-property-name>
                <config-property-type>java.lang.String</config-property-type>
                <config-property-value>TRANSACTION_READ_COMMITTED</config-property-value>
            </config-property>
          </properties>
        </attribute>
        <attribute name="JndiName">InformixXaDS</attribute>
      </mbean>
    </depends>
    <depends optional-attribute-name="ManagedConnectionPool">
      <!--embedded mbean-->
      <mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" name="jboss.jca:service=XATxPool,name=InformixXaDS">

        <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)-->
        <attribute name="Criteria">ByContainer</attribute>
      </mbean>
    </depends>
    <depends optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager</depends>

    <!-- Include a login module configuration named InformixXaDbRealm. 
         Update your login-conf.xml, here is an example for a 
         ConfiguredIdentityLoginModule:

    <application-policy name = "InformixXaDbRealm">
       <authentication>
          <login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule" flag = "required">
             <module-option name = "principal">yourprincipal</module-option>
             <module-option name = "userName">yourusername</module-option>
             <module-option name = "password">yourpassword</module-option>
             <module-option name = "managedConnectionFactoryName">jboss.jca:service=XATxCM,name=InformixXaDS</module-option>
          </login-module>
       </authentication>
    </application-policy>

    NOTE: the application-policy name attribute must match SecurityDomainJndiName, and the 
      module-option name = "managedConnectionFactoryName"
    must match the object name of the ConnectionManager you are configuring here.
    -->
    <!--uncomment out this line if you are using the InformixXaDbRealm above 
    <attribute name="SecurityDomainJndiName">InformixXaDbRealm</attribute>
    -->

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

    <attribute name="TransactionManager">java:/TransactionManager</attribute>
  </mbean>

</server>
