3 Replies Latest reply: Feb 24, 2006 2:13 AM by Scott Stark RSS

    How to Declaratively set autoCommit to false

    Ritu Kedia Newbie

      I am using non-transactional DataSource. I want to declaratively set autoCommit to false in the ds.xml on Jboss 3.2.x.

      My mssql-ds.xml is defined as bleow:

      <datasources>
       <no-tx-datasource>
       <jndi-name>DefaultDS</jndi-name>
       <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb;SelectMethod=Cursor</connection-url>
       <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
       <user-name>sa</user-name>
       <password>sa</password>
       <max-pool-size>50</max-pool-size>
       </no-tx-datasource>
      </datasources>


      Currently I am programmatically setting autocommit to false on my connection. Is there a way to set it declaratively in the above ds.xml file?



        • 1. Re: How to Declaratively set autoCommit to false
          Adrian Brock Master

          There is no current way to do this.

          JBoss assumes auto commit is true when the connection is first created,
          as per spec.
          Maybe you could provide a patch, with code similar to the transaction isolation
          override?

          • 2. Re: How to Declaratively set autoCommit to false
            Jörg von Frantzius Newbie

             

            "adrian@jboss.org" wrote:

            JBoss assumes auto commit is true when the connection is first created,
            as per spec.
            I searched the JCA and J2EE specs for this, but couldn't find anything backing this assumption. Do you per chance have some concrete reference for this?

            Thanks,
            Jörg

            • 3. Re: How to Declaratively set autoCommit to false
              Scott Stark Master



              15.5.3.1 Auto Commit
              When a Connection is in an auto-commit mode, an Interaction, associated with the Connection, automatically commits after it has been executed. The auto-commit mode must be turned off if multiple interactions have to be grouped in a single transaction and committed or rolled back as a unit.
              CCI does not provide explicit set/getAutoCommit methods in the Connection interface. This simplifies the application programming model for the transaction management.
              A resource adapter must manage the auto-commit mode as follows:
              A transactional resource adapter either at the XATransaction or
              LocalTransaction level must set the auto-commit mode of Connection
              instances participating in a transaction to off within the transaction. This
              requirement holds for true both container-managed and bean-managed
              transaction demarcation.
              A transactional resource adapter must set the auto-commit mode of Connection instances to on when used outside a transaction.
              These requirements are independent of whether a transaction is managed as a local or XA transaction. A transactional resource adapter should implement this requirement in an implementation-specific manner.
              A non-transactional resource adapter at the NoTransaction level, is not required to support the auto-commit mode for Connection.