Hi,

we are using the esql taglib. There we realized some strange behavior concerning
autocommit.

Conclusion:
 If you want to set autocommit to false, you have to state
  "<esql:autocommit>false</esql:autocommit>"
 in every esql:connection you use!

 Not stating "<esql:autocommit>false</esql:autocommit>" in a esql:connection
resets autocommit to true!


Explanation:
 We are using the "jdbc/auto-commit" element in cocoon.xconf to state wether we
need autocommit or not.
 In the esql-queries we do not use the "esql:autocommit" element at all.

 Now it seems that autocommit is only deactivated if the "esql:autocommit"
element is present and does contain "false".
 In every other case, autocommit is set to true (even if the jdbc connection
says "<auto-commit>false</auto-commit>").

 In the xsl-code of the esql-taglib (the source is from cocoon 2.0.2) I found
the following:

 <xsl:template match="esql:connection">

  ...
  <xsl:variable name="autocommit"><xsl:call-template
name="get-nested-string"><xsl:with-param name="content"
select="esql:autocommit"/></xsl:call-template></xsl:variable>
  ...

      try {
        if ("false".equals(String.valueOf(<xsl:copy-of select="$autocommit"/>)))
 {
          if (_esql_connection.getAutoCommit()) {
            _esql_connection.setAutoCommit(false);
          }
        } else {
          if (!_esql_connection.getAutoCommit()) {
            _esql_connection.setAutoCommit(true);
          }
        }
   ...

 </xsl:template>

 I think, the "else"-clause is the problem:

  If "esql:autocommit" is not "false", then autocommit will be set to true!

 So this means, even when the jdbc connection states
"<auto-commit>false</auto-commit>" it will be set to true,
 if no element "<esql:autocommit>false</esql:autocommit>" is present.

With best wishes and hopefully no more unwanted commits
Christoph Oberle



---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to