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

<!-- $Id$ -->

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  McKoi Database 1.00 configuration                                    -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- This is basically a cut-and-paste of the Solid example service, modified
     for McKoi DB.  This required McKoi release 1.00, which includes
     the MBean implementation that allow it to operate within JBoss
     (previously, a seperate MBean JAR file was needed). -->
      

<server>

	<!-- The current working directory is the JBoss/bin directory, so this
		 relative path works. -->
		 
	<mbean code="net.sf.tapestry.contrib.mckoi.McKoiDB" name="jboss:service=McKoiDB">
  		<attribute name="ConfigPath">../server/tapestry/db/tapestry.conf</attribute>
	</mbean>
	  		

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

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

        <attribute name="JndiName">McKoiDB</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:mckoi://localhost/</config-property>
            <config-property name="DriverClass" type="java.lang.String">com.mckoi.JDBCDriver</config-property>
            <config-property name="UserName" type="java.lang.String">admin</config-property>
            <config-property name="Password" type="java.lang.String">secret</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=McKoiDB">

        <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:service=JaasSecurityManager</depends>
    

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

</server>


