You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kandula-dev@ws.apache.org by Jack Wang <pi...@yahoo.com> on 2006/02/13 05:45:17 UTC

RE: Tomcat MySQL XA support

Thanks. If I use MysqlDataSource, there is no problem. But my problem is how to use MySQL's XA in
tomcat environment. Who has this example?  I have done a test to check MySQL XA's function, but
the result is failed. So I wonder if MySQL has real XA to operate database. Especial how to fix
"Lock wait timeout exceeded; try restarting transaction" problem ?  Sorry I past the previous mail
in the end for reference,in wich "Lock wait timeout exceeded" occured.

Wang Jun

--- Lin Sun <li...@gmail.com>写道:

> I have a simple jsp script that can lookup a server-wide datasource.   In
> the jsp, I don't have to specify the driver or make the connection. I only
> need to perform the lookup (the following code in a try/catch block).  The
> Tranql resource adapter will take the configuration from the database
> deployment plan and create the database connection pool.   And your
> application is portable between different databases with minor changes in
> the database deployment plan and the appropriate resource adapters.
> 
> Context initContext = new InitialContext();
> Context envContext  = (Context)initContext.lookup("java:/comp/env");
> DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
> 
> Hope this helps!
> Thanks, 
>  
> Lin
> 
> 
> On Feb 9, 2006, at 5:36 AM, Jack Wang wrote:
> 
> >
> > Does MySQL5.0.18 suport XA in Tomcat 5.5 ? I do a XA test in tomcat  
> > with only a jsp file and
> > necessary jars. The jsp is as:
> >
> > ---------------------------------------------
> > <%
> > Context ctx = new InitialContext();
> > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource xads = new
> > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource();
> > xads.setServerName("localhost");
> > xads.setDatabaseName("test");
> > xads.setPortNumber(3306);
> > XAConnection xcon = xads.getXAConnection("root","password");
> > Connection con = xcon.getConnection();
> >
> > System.out.println("I get the correct xads and the con=" + con);
> > System.out.println("Bind xads to InitialContext");
> >
> > ctx.bind("myXADB", xads);
> > MysqlXADataSource mysqlXADataSource = (MysqlXADataSource)ctx.lookup 
> > ("myXADB");
> >
> > System.out.println("Get the null MysqlXADataSource from ctx xads="  
> > + mysqlXADataSource );
> > %>
> > ---------------------------------------------
> >
> >  Why mysqlXADataSource get from the InitialContext is null ?
> >
> >  Is this why I can not configure the XADataSource in tomcat in the  
> > previous mail ?
> >
> >  I have waste much time in this problem, please help.
> >
> >  Thanks.
> >


---------- previous mail begin ---------------
>   I hava done a test to use the MySQL XADataSource. For MySQL has no MYSQLXADataSourceFactory
> class, so I coded one to produce MysqlXADataSource. MysqlXADataSource is configured in tomcat
> 5.5
> server.xml. I can get the MysqlXADataSource instance xaDs by which I can get XAConnection and
> XAResource. I also configured a UserTransaction which was produced by
> org.objectweb.jotm.UserTransactionFactory. The following is the action's code in a test web
> application. This action runs correctly the first time, but in the second time, it runs very
> slow,
> then reports "Lock wait timeout exceeded; try restarting transaction" error.
> 
>   The first question is that it seems the action did not update the table testdata's data. Did
> the
> UserTransaction ut have some error not participate in the database transaction?
> 	
>   The second question is that I have searched this error, but don't know how to solve it. Please
> give me some tips. Must I not use MySQL's XA in Kandula ? Thanks.
> 	
> 	
> The java code (JOTM example):
> ========================================================
> UserTransaction ut = null;
> try{
>     Context ctx = new InitialContext();
>     MysqlXADataSource xaDs = (MysqlXADataSource)ctx.lookup("java:comp/env/jdbc/myXADB");
>     ut = (UserTransaction)ctx.lookup("java:comp/env/UserTransaction");
> 
>     XAConnection xCon = xaDs.getXAConnection();
>     java.sql.Connection conn = xCon.getConnection();
> 
>     System.out.println("<<< beginning the transaction >>> xa con = " + conn);
>     ut.begin();
> 
>     // JDBC statements
>     Statement stmt = conn.createStatement();
>     ResultSet rst =  stmt.executeQuery("select id, foo from testdata");
>     if(rst.next()) {
>         foo=rst.getInt(2);
>     }
>     System.out.println("foo = "+ foo +" (before completion)");
> 
>     String sql = "update testdata set foo=" + (++foo) + " where id=1";
>     stmt.executeUpdate(sql);// <=== The program will wait here, and then report the error
> message
> !
>     
>     ut.commit();
>     System.out.println("<<< committing the transaction >>>");
> 
>     conn.close();
>     System.out.println("<<< done >>>");
> }catch(Exception e) {
>     System.out.print("DBTest >> ");
>     e.printStackTrace();
>     System.out.println("<<< rolling back the transaction >>>");
>     try { 
>     	ut.rollback(); 
>     	System.out.println("rollback ok."); 
>     }catch(Exception e1){ 
>     	System.out.println("rollback Error " + e1); 
>     } 
>     System.out.println("rollback end"); 
> }
> }
> ========================================================
> 
> 
> The error message:
> ========================================================
> ==> xaDataSource = com.mysql.jdbc.jdbc2.optional.MysqlXADataSource@e2fbeb <==
> <<< beginning the transaction >>> xa con =
> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@170984c
> foo = 29 (before completion)
> <<< committing the transaction >>>
> <<< done >>>
> <<< beginning the transaction >>> xa con =
> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@4d5575
> foo = 29 (before completion)
> - set rollback only (tx=bb14:38:0:01777d30dfc9556034...986c02:)
> DBTest >> java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
>         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
>         at
> com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1159)
>         at
> com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:684)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
>         at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
>         at
>
com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:840)
>         at foo.XADBTest.init(XADBTest.java:92)
>         at org.apache.jsp.testJotm_jsp._jspService(org.apache.jsp.testJotm_jsp:55)
>         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
>         at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
>         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
>         at
>
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>         at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>         at java.lang.Thread.run(Thread.java:595)
> <<< rolling back the transaction >>>
> rollback ok.
> rollback end
---------- previous mail end   ---------------






	

	
		
___________________________________________________________ 
雅虎1G免费邮箱百分百防垃圾信 
http://cn.mail.yahoo.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org


RE: Tomcat MySQL XA support

Posted by Dasarath Weeratunge <dw...@purdue.edu>.
Quoting Jack Wang <pi...@yahoo.com>:

Hi Jack, I recall using MySQL in Summer of 2004 and at the time MySQL did not 
support distributed transactions. Neither did PostgreSQL. I ended up using 
SQLServer. I don't know whether these DBMSes support distributed transactions 
now-- if they don't then you cannot use them with Kandula.

--dasarath

> 
> Thanks. If I use MysqlDataSource, there is no problem. But my problem is how
> to use MySQL's XA in
> tomcat environment. Who has this example?  I have done a test to check MySQL
> XA's function, but
> the result is failed. So I wonder if MySQL has real XA to operate database.
> Especial how to fix
> "Lock wait timeout exceeded; try restarting transaction" problem ?  Sorry I
> past the previous mail
> in the end for reference,in wich "Lock wait timeout exceeded" occured.
> 
> Wang Jun
> 
> --- Lin Sun <li...@gmail.com>дµÀ:
> 
> > I have a simple jsp script that can lookup a server-wide datasource.   In
> > the jsp, I don't have to specify the driver or make the connection. I only
> > need to perform the lookup (the following code in a try/catch block).  The
> > Tranql resource adapter will take the configuration from the database
> > deployment plan and create the database connection pool.   And your
> > application is portable between different databases with minor changes in
> > the database deployment plan and the appropriate resource adapters.
> > 
> > Context initContext = new InitialContext();
> > Context envContext  = (Context)initContext.lookup("java:/comp/env");
> > DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
> > 
> > Hope this helps!
> > Thanks, 
> >  
> > Lin
> > 
> > 
> > On Feb 9, 2006, at 5:36 AM, Jack Wang wrote:
> > 
> > >
> > > Does MySQL5.0.18 suport XA in Tomcat 5.5 ? I do a XA test in tomcat  
> > > with only a jsp file and
> > > necessary jars. The jsp is as:
> > >
> > > ---------------------------------------------
> > > <%
> > > Context ctx = new InitialContext();
> > > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource xads = new
> > > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource();
> > > xads.setServerName("localhost");
> > > xads.setDatabaseName("test");
> > > xads.setPortNumber(3306);
> > > XAConnection xcon = xads.getXAConnection("root","password");
> > > Connection con = xcon.getConnection();
> > >
> > > System.out.println("I get the correct xads and the con=" + con);
> > > System.out.println("Bind xads to InitialContext");
> > >
> > > ctx.bind("myXADB", xads);
> > > MysqlXADataSource mysqlXADataSource = (MysqlXADataSource)ctx.lookup 
> > > ("myXADB");
> > >
> > > System.out.println("Get the null MysqlXADataSource from ctx xads="  
> > > + mysqlXADataSource );
> > > %>
> > > ---------------------------------------------
> > >
> > >  Why mysqlXADataSource get from the InitialContext is null ?
> > >
> > >  Is this why I can not configure the XADataSource in tomcat in the  
> > > previous mail ?
> > >
> > >  I have waste much time in this problem, please help.
> > >
> > >  Thanks.
> > >
> 
> 
> ---------- previous mail begin ---------------
> >   I hava done a test to use the MySQL XADataSource. For MySQL has no
> MYSQLXADataSourceFactory
> > class, so I coded one to produce MysqlXADataSource. MysqlXADataSource is
> configured in tomcat
> > 5.5
> > server.xml. I can get the MysqlXADataSource instance xaDs by which I can
> get XAConnection and
> > XAResource. I also configured a UserTransaction which was produced by
> > org.objectweb.jotm.UserTransactionFactory. The following is the action's
> code in a test web
> > application. This action runs correctly the first time, but in the second
> time, it runs very
> > slow,
> > then reports "Lock wait timeout exceeded; try restarting transaction"
> error.
> > 
> >   The first question is that it seems the action did not update the table
> testdata's data. Did
> > the
> > UserTransaction ut have some error not participate in the database
> transaction?
> > 	
> >   The second question is that I have searched this error, but don't know
> how to solve it. Please
> > give me some tips. Must I not use MySQL's XA in Kandula ? Thanks.
> > 	
> > 	
> > The java code (JOTM example):
> > ========================================================
> > UserTransaction ut = null;
> > try{
> >     Context ctx = new InitialContext();
> >     MysqlXADataSource xaDs =
> (MysqlXADataSource)ctx.lookup("java:comp/env/jdbc/myXADB");
> >     ut = (UserTransaction)ctx.lookup("java:comp/env/UserTransaction");
> > 
> >     XAConnection xCon = xaDs.getXAConnection();
> >     java.sql.Connection conn = xCon.getConnection();
> > 
> >     System.out.println("<<< beginning the transaction >>> xa con = " +
> conn);
> >     ut.begin();
> > 
> >     // JDBC statements
> >     Statement stmt = conn.createStatement();
> >     ResultSet rst =  stmt.executeQuery("select id, foo from testdata");
> >     if(rst.next()) {
> >         foo=rst.getInt(2);
> >     }
> >     System.out.println("foo = "+ foo +" (before completion)");
> > 
> >     String sql = "update testdata set foo=" + (++foo) + " where id=1";
> >     stmt.executeUpdate(sql);// <=== The program will wait here, and then
> report the error
> > message
> > !
> >     
> >     ut.commit();
> >     System.out.println("<<< committing the transaction >>>");
> > 
> >     conn.close();
> >     System.out.println("<<< done >>>");
> > }catch(Exception e) {
> >     System.out.print("DBTest >> ");
> >     e.printStackTrace();
> >     System.out.println("<<< rolling back the transaction >>>");
> >     try { 
> >     	ut.rollback(); 
> >     	System.out.println("rollback ok."); 
> >     }catch(Exception e1){ 
> >     	System.out.println("rollback Error " + e1); 
> >     } 
> >     System.out.println("rollback end"); 
> > }
> > }
> > ========================================================
> > 
> > 
> > The error message:
> > ========================================================
> > ==> xaDataSource = com.mysql.jdbc.jdbc2.optional.MysqlXADataSource@e2fbeb
> <==
> > <<< beginning the transaction >>> xa con =
> > com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@170984c
> > foo = 29 (before completion)
> > <<< committing the transaction >>>
> > <<< done >>>
> > <<< beginning the transaction >>> xa con =
> > com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@4d5575
> > foo = 29 (before completion)
> > - set rollback only (tx=bb14:38:0:01777d30dfc9556034...986c02:)
> > DBTest >> java.sql.SQLException: Lock wait timeout exceeded; try restarting
> transaction
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
> >         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
> >         at
> >
> com.mysql.jdbc.ServerPreparedStatement.serverExecute
(ServerPreparedStatement.java:1159)
> >         at
> >
> com.mysql.jdbc.ServerPreparedStatement.executeInternal
(ServerPreparedStatement.java:684)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
> >         at
> >
> com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate
(PreparedStatementWrapper.java:840)
> >         at foo.XADBTest.init(XADBTest.java:92)
> >         at
> org.apache.jsp.testJotm_jsp._jspService(org.apache.jsp.testJotm_jsp:55)
> >         at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >         at
> org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:322)
> >         at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
> >         at
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >         at
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
> >         at
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
> >         at
> org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
> >         at
> org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
> >         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> >         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> >         at
> org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
> >         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> >         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
> >         at
> >
> 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConne
ction(Http11BaseProtocol.java:663)
> >         at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:527)
> >         at
> >
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:80)
> >         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:684)
> >         at java.lang.Thread.run(Thread.java:595)
> > <<< rolling back the transaction >>>
> > rollback ok.
> > rollback end
> ---------- previous mail end   ---------------
> 
> 
> 
> 
> 
> 
> 	
> 
> 	
> 		
> ___________________________________________________________ 
> ÑÅ»¢1GÃâ·ÑÓÊÏä°Ù·Ö°Ù·ÀÀ¬»øÐÅ 
> http://cn.mail.yahoo.com/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: kandula-dev-help@ws.apache.org
> 
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org


Re: Tomcat MySQL XA support

Posted by Gianny Damour <gi...@optusnet.com.au>.
Hi,

This "Lock wait timeout exceeded; try restarting transaction" problem
has nothing to do with XA. Basically, an update statement was being
executed. This statement was trying to update a row having a write lock,
e.g. another transaction was updating the same record. In this scenario,
the update statement is not executed as long as the lock is not
released. If the lock is not released before the wait timeout of the
update statement, then this exception is thrown.

Thanks,
Gianny

Jack Wang wrote:

>Thanks. If I use MysqlDataSource, there is no problem. But my problem is how to use MySQL's XA in
>tomcat environment. Who has this example?  I have done a test to check MySQL XA's function, but
>the result is failed. So I wonder if MySQL has real XA to operate database. Especial how to fix
>"Lock wait timeout exceeded; try restarting transaction" problem ?  Sorry I past the previous mail
>in the end for reference,in wich "Lock wait timeout exceeded" occured.
>
>Wang Jun
>
>--- Lin Sun <li...@gmail.com>写道:
>
>  
>
>>I have a simple jsp script that can lookup a server-wide datasource.   In
>>the jsp, I don't have to specify the driver or make the connection. I only
>>need to perform the lookup (the following code in a try/catch block).  The
>>Tranql resource adapter will take the configuration from the database
>>deployment plan and create the database connection pool.   And your
>>application is portable between different databases with minor changes in
>>the database deployment plan and the appropriate resource adapters.
>>
>>Context initContext = new InitialContext();
>>Context envContext  = (Context)initContext.lookup("java:/comp/env");
>>DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
>>
>>Hope this helps!
>>Thanks, 
>> 
>>Lin
>>
>>
>>On Feb 9, 2006, at 5:36 AM, Jack Wang wrote:
>>
>>    
>>
>>>Does MySQL5.0.18 suport XA in Tomcat 5.5 ? I do a XA test in tomcat  
>>>with only a jsp file and
>>>necessary jars. The jsp is as:
>>>
>>>---------------------------------------------
>>><%
>>>Context ctx = new InitialContext();
>>>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource xads = new
>>>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource();
>>>xads.setServerName("localhost");
>>>xads.setDatabaseName("test");
>>>xads.setPortNumber(3306);
>>>XAConnection xcon = xads.getXAConnection("root","password");
>>>Connection con = xcon.getConnection();
>>>
>>>System.out.println("I get the correct xads and the con=" + con);
>>>System.out.println("Bind xads to InitialContext");
>>>
>>>ctx.bind("myXADB", xads);
>>>MysqlXADataSource mysqlXADataSource = (MysqlXADataSource)ctx.lookup 
>>>("myXADB");
>>>
>>>System.out.println("Get the null MysqlXADataSource from ctx xads="  
>>>+ mysqlXADataSource );
>>>%>
>>>---------------------------------------------
>>>
>>> Why mysqlXADataSource get from the InitialContext is null ?
>>>
>>> Is this why I can not configure the XADataSource in tomcat in the  
>>>previous mail ?
>>>
>>> I have waste much time in this problem, please help.
>>>
>>> Thanks.
>>>
>>>      
>>>
>
>
>---------- previous mail begin ---------------
>  
>
>>  I hava done a test to use the MySQL XADataSource. For MySQL has no MYSQLXADataSourceFactory
>>class, so I coded one to produce MysqlXADataSource. MysqlXADataSource is configured in tomcat
>>5.5
>>server.xml. I can get the MysqlXADataSource instance xaDs by which I can get XAConnection and
>>XAResource. I also configured a UserTransaction which was produced by
>>org.objectweb.jotm.UserTransactionFactory. The following is the action's code in a test web
>>application. This action runs correctly the first time, but in the second time, it runs very
>>slow,
>>then reports "Lock wait timeout exceeded; try restarting transaction" error.
>>
>>  The first question is that it seems the action did not update the table testdata's data. Did
>>the
>>UserTransaction ut have some error not participate in the database transaction?
>>	
>>  The second question is that I have searched this error, but don't know how to solve it. Please
>>give me some tips. Must I not use MySQL's XA in Kandula ? Thanks.
>>	
>>	
>>The java code (JOTM example):
>>========================================================
>>UserTransaction ut = null;
>>try{
>>    Context ctx = new InitialContext();
>>    MysqlXADataSource xaDs = (MysqlXADataSource)ctx.lookup("java:comp/env/jdbc/myXADB");
>>    ut = (UserTransaction)ctx.lookup("java:comp/env/UserTransaction");
>>
>>    XAConnection xCon = xaDs.getXAConnection();
>>    java.sql.Connection conn = xCon.getConnection();
>>
>>    System.out.println("<<< beginning the transaction >>> xa con = " + conn);
>>    ut.begin();
>>
>>    // JDBC statements
>>    Statement stmt = conn.createStatement();
>>    ResultSet rst =  stmt.executeQuery("select id, foo from testdata");
>>    if(rst.next()) {
>>        foo=rst.getInt(2);
>>    }
>>    System.out.println("foo = "+ foo +" (before completion)");
>>
>>    String sql = "update testdata set foo=" + (++foo) + " where id=1";
>>    stmt.executeUpdate(sql);// <=== The program will wait here, and then report the error
>>message
>>!
>>    
>>    ut.commit();
>>    System.out.println("<<< committing the transaction >>>");
>>
>>    conn.close();
>>    System.out.println("<<< done >>>");
>>}catch(Exception e) {
>>    System.out.print("DBTest >> ");
>>    e.printStackTrace();
>>    System.out.println("<<< rolling back the transaction >>>");
>>    try { 
>>    	ut.rollback(); 
>>    	System.out.println("rollback ok."); 
>>    }catch(Exception e1){ 
>>    	System.out.println("rollback Error " + e1); 
>>    } 
>>    System.out.println("rollback end"); 
>>}
>>}
>>========================================================
>>
>>
>>The error message:
>>========================================================
>>==> xaDataSource = com.mysql.jdbc.jdbc2.optional.MysqlXADataSource@e2fbeb <==
>><<< beginning the transaction >>> xa con =
>>com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@170984c
>>foo = 29 (before completion)
>><<< committing the transaction >>>
>><<< done >>>
>><<< beginning the transaction >>> xa con =
>>com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@4d5575
>>foo = 29 (before completion)
>>- set rollback only (tx=bb14:38:0:01777d30dfc9556034...986c02:)
>>DBTest >> java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
>>        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
>>        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
>>        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
>>        at
>>com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1159)
>>        at
>>com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:684)
>>        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
>>        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
>>        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
>>        at
>>
>>    
>>
>com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:840)
>  
>
>>        at foo.XADBTest.init(XADBTest.java:92)
>>        at org.apache.jsp.testJotm_jsp._jspService(org.apache.jsp.testJotm_jsp:55)
>>        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
>>        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
>>        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>        at
>>
>>    
>>
>org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>  
>
>>        at
>>org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>>        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>>        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>>        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>>        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>>        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>>        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
>>        at
>>
>>    
>>
>org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>  
>
>>        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>>        at
>>org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>>        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>>        at java.lang.Thread.run(Thread.java:595)
>><<< rolling back the transaction >>>
>>rollback ok.
>>rollback end
>>    
>>
>---------- previous mail end   ---------------
>
>
>
>
>
>
>	
>
>	
>		
>___________________________________________________________ 
>雅虎1G免费邮箱百分百防垃圾信 
>http://cn.mail.yahoo.com/
>
>
>  
>



RE: Tomcat MySQL XA support

Posted by Dasarath Weeratunge <dw...@purdue.edu>.
Quoting Jack Wang <pi...@yahoo.com>:

Hi Jack, I recall using MySQL in Summer of 2004 and at the time MySQL did not 
support distributed transactions. Neither did PostgreSQL. I ended up using 
SQLServer. I don't know whether these DBMSes support distributed transactions 
now-- if they don't then you cannot use them with Kandula.

--dasarath

> 
> Thanks. If I use MysqlDataSource, there is no problem. But my problem is how
> to use MySQL's XA in
> tomcat environment. Who has this example?  I have done a test to check MySQL
> XA's function, but
> the result is failed. So I wonder if MySQL has real XA to operate database.
> Especial how to fix
> "Lock wait timeout exceeded; try restarting transaction" problem ?  Sorry I
> past the previous mail
> in the end for reference,in wich "Lock wait timeout exceeded" occured.
> 
> Wang Jun
> 
> --- Lin Sun <li...@gmail.com>дµÀ:
> 
> > I have a simple jsp script that can lookup a server-wide datasource.   In
> > the jsp, I don't have to specify the driver or make the connection. I only
> > need to perform the lookup (the following code in a try/catch block).  The
> > Tranql resource adapter will take the configuration from the database
> > deployment plan and create the database connection pool.   And your
> > application is portable between different databases with minor changes in
> > the database deployment plan and the appropriate resource adapters.
> > 
> > Context initContext = new InitialContext();
> > Context envContext  = (Context)initContext.lookup("java:/comp/env");
> > DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
> > 
> > Hope this helps!
> > Thanks, 
> >  
> > Lin
> > 
> > 
> > On Feb 9, 2006, at 5:36 AM, Jack Wang wrote:
> > 
> > >
> > > Does MySQL5.0.18 suport XA in Tomcat 5.5 ? I do a XA test in tomcat  
> > > with only a jsp file and
> > > necessary jars. The jsp is as:
> > >
> > > ---------------------------------------------
> > > <%
> > > Context ctx = new InitialContext();
> > > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource xads = new
> > > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource();
> > > xads.setServerName("localhost");
> > > xads.setDatabaseName("test");
> > > xads.setPortNumber(3306);
> > > XAConnection xcon = xads.getXAConnection("root","password");
> > > Connection con = xcon.getConnection();
> > >
> > > System.out.println("I get the correct xads and the con=" + con);
> > > System.out.println("Bind xads to InitialContext");
> > >
> > > ctx.bind("myXADB", xads);
> > > MysqlXADataSource mysqlXADataSource = (MysqlXADataSource)ctx.lookup 
> > > ("myXADB");
> > >
> > > System.out.println("Get the null MysqlXADataSource from ctx xads="  
> > > + mysqlXADataSource );
> > > %>
> > > ---------------------------------------------
> > >
> > >  Why mysqlXADataSource get from the InitialContext is null ?
> > >
> > >  Is this why I can not configure the XADataSource in tomcat in the  
> > > previous mail ?
> > >
> > >  I have waste much time in this problem, please help.
> > >
> > >  Thanks.
> > >
> 
> 
> ---------- previous mail begin ---------------
> >   I hava done a test to use the MySQL XADataSource. For MySQL has no
> MYSQLXADataSourceFactory
> > class, so I coded one to produce MysqlXADataSource. MysqlXADataSource is
> configured in tomcat
> > 5.5
> > server.xml. I can get the MysqlXADataSource instance xaDs by which I can
> get XAConnection and
> > XAResource. I also configured a UserTransaction which was produced by
> > org.objectweb.jotm.UserTransactionFactory. The following is the action's
> code in a test web
> > application. This action runs correctly the first time, but in the second
> time, it runs very
> > slow,
> > then reports "Lock wait timeout exceeded; try restarting transaction"
> error.
> > 
> >   The first question is that it seems the action did not update the table
> testdata's data. Did
> > the
> > UserTransaction ut have some error not participate in the database
> transaction?
> > 	
> >   The second question is that I have searched this error, but don't know
> how to solve it. Please
> > give me some tips. Must I not use MySQL's XA in Kandula ? Thanks.
> > 	
> > 	
> > The java code (JOTM example):
> > ========================================================
> > UserTransaction ut = null;
> > try{
> >     Context ctx = new InitialContext();
> >     MysqlXADataSource xaDs =
> (MysqlXADataSource)ctx.lookup("java:comp/env/jdbc/myXADB");
> >     ut = (UserTransaction)ctx.lookup("java:comp/env/UserTransaction");
> > 
> >     XAConnection xCon = xaDs.getXAConnection();
> >     java.sql.Connection conn = xCon.getConnection();
> > 
> >     System.out.println("<<< beginning the transaction >>> xa con = " +
> conn);
> >     ut.begin();
> > 
> >     // JDBC statements
> >     Statement stmt = conn.createStatement();
> >     ResultSet rst =  stmt.executeQuery("select id, foo from testdata");
> >     if(rst.next()) {
> >         foo=rst.getInt(2);
> >     }
> >     System.out.println("foo = "+ foo +" (before completion)");
> > 
> >     String sql = "update testdata set foo=" + (++foo) + " where id=1";
> >     stmt.executeUpdate(sql);// <=== The program will wait here, and then
> report the error
> > message
> > !
> >     
> >     ut.commit();
> >     System.out.println("<<< committing the transaction >>>");
> > 
> >     conn.close();
> >     System.out.println("<<< done >>>");
> > }catch(Exception e) {
> >     System.out.print("DBTest >> ");
> >     e.printStackTrace();
> >     System.out.println("<<< rolling back the transaction >>>");
> >     try { 
> >     	ut.rollback(); 
> >     	System.out.println("rollback ok."); 
> >     }catch(Exception e1){ 
> >     	System.out.println("rollback Error " + e1); 
> >     } 
> >     System.out.println("rollback end"); 
> > }
> > }
> > ========================================================
> > 
> > 
> > The error message:
> > ========================================================
> > ==> xaDataSource = com.mysql.jdbc.jdbc2.optional.MysqlXADataSource@e2fbeb
> <==
> > <<< beginning the transaction >>> xa con =
> > com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@170984c
> > foo = 29 (before completion)
> > <<< committing the transaction >>>
> > <<< done >>>
> > <<< beginning the transaction >>> xa con =
> > com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@4d5575
> > foo = 29 (before completion)
> > - set rollback only (tx=bb14:38:0:01777d30dfc9556034...986c02:)
> > DBTest >> java.sql.SQLException: Lock wait timeout exceeded; try restarting
> transaction
> >         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
> >         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
> >         at
> >
> com.mysql.jdbc.ServerPreparedStatement.serverExecute
(ServerPreparedStatement.java:1159)
> >         at
> >
> com.mysql.jdbc.ServerPreparedStatement.executeInternal
(ServerPreparedStatement.java:684)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
> >         at
> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
> >         at
> >
> com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate
(PreparedStatementWrapper.java:840)
> >         at foo.XADBTest.init(XADBTest.java:92)
> >         at
> org.apache.jsp.testJotm_jsp._jspService(org.apache.jsp.testJotm_jsp:55)
> >         at
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >         at
> org.apache.jasper.servlet.JspServletWrapper.service
(JspServletWrapper.java:322)
> >         at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
> >         at
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> >         at
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
> >         at
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
> >         at
> org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
> >         at
> org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
> >         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> >         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> >         at
> org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
> >         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> >         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
> >         at
> >
> 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConne
ction(Http11BaseProtocol.java:663)
> >         at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:527)
> >         at
> >
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:80)
> >         at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:684)
> >         at java.lang.Thread.run(Thread.java:595)
> > <<< rolling back the transaction >>>
> > rollback ok.
> > rollback end
> ---------- previous mail end   ---------------
> 
> 
> 
> 
> 
> 
> 	
> 
> 	
> 		
> ___________________________________________________________ 
> ÑÅ»¢1GÃâ·ÑÓÊÏä°Ù·Ö°Ù·ÀÀ¬»øÐÅ 
> http://cn.mail.yahoo.com/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: kandula-dev-help@ws.apache.org
> 
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: kandula-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: kandula-dev-help@ws.apache.org


RE: Tomcat MySQL XA support

Posted by li...@bway.net.
It's possible that you got yourself an in-doubt transaction.

If you try it again from the mysql shell (i.e. type in your sql statement
yourself) and it says the same thing, then you may have in-doubt
transaction.

>
> Thanks. If I use MysqlDataSource, there is no problem. But my problem is
> how to use MySQL's XA in
> tomcat environment. Who has this example?  I have done a test to check
> MySQL XA's function, but
> the result is failed. So I wonder if MySQL has real XA to operate
> database. Especial how to fix
> "Lock wait timeout exceeded; try restarting transaction" problem ?  Sorry
> I past the previous mail
> in the end for reference,in wich "Lock wait timeout exceeded" occured.
>
> Wang Jun
>
> --- Lin Sun <li...@gmail.com>дµÀ:
>
>> I have a simple jsp script that can lookup a server-wide datasource.
>> In
>> the jsp, I don't have to specify the driver or make the connection. I
>> only
>> need to perform the lookup (the following code in a try/catch block).
>> The
>> Tranql resource adapter will take the configuration from the database
>> deployment plan and create the database connection pool.   And your
>> application is portable between different databases with minor changes
>> in
>> the database deployment plan and the appropriate resource adapters.
>>
>> Context initContext = new InitialContext();
>> Context envContext  = (Context)initContext.lookup("java:/comp/env");
>> DataSource ds = (DataSource)envContext.lookup("jdbc/DataSource");
>>
>> Hope this helps!
>> Thanks,
>>
>> Lin
>>
>>
>> On Feb 9, 2006, at 5:36 AM, Jack Wang wrote:
>>
>> >
>> > Does MySQL5.0.18 suport XA in Tomcat 5.5 ? I do a XA test in tomcat
>> > with only a jsp file and
>> > necessary jars. The jsp is as:
>> >
>> > ---------------------------------------------
>> > <%
>> > Context ctx = new InitialContext();
>> > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource xads = new
>> > com.mysql.jdbc.jdbc2.optional.MysqlXADataSource();
>> > xads.setServerName("localhost");
>> > xads.setDatabaseName("test");
>> > xads.setPortNumber(3306);
>> > XAConnection xcon = xads.getXAConnection("root","password");
>> > Connection con = xcon.getConnection();
>> >
>> > System.out.println("I get the correct xads and the con=" + con);
>> > System.out.println("Bind xads to InitialContext");
>> >
>> > ctx.bind("myXADB", xads);
>> > MysqlXADataSource mysqlXADataSource = (MysqlXADataSource)ctx.lookup
>> > ("myXADB");
>> >
>> > System.out.println("Get the null MysqlXADataSource from ctx xads="
>> > + mysqlXADataSource );
>> > %>
>> > ---------------------------------------------
>> >
>> >  Why mysqlXADataSource get from the InitialContext is null ?
>> >
>> >  Is this why I can not configure the XADataSource in tomcat in the
>> > previous mail ?
>> >
>> >  I have waste much time in this problem, please help.
>> >
>> >  Thanks.
>> >
>
>
> ---------- previous mail begin ---------------
>>   I hava done a test to use the MySQL XADataSource. For MySQL has no
>> MYSQLXADataSourceFactory
>> class, so I coded one to produce MysqlXADataSource. MysqlXADataSource is
>> configured in tomcat
>> 5.5
>> server.xml. I can get the MysqlXADataSource instance xaDs by which I can
>> get XAConnection and
>> XAResource. I also configured a UserTransaction which was produced by
>> org.objectweb.jotm.UserTransactionFactory. The following is the action's
>> code in a test web
>> application. This action runs correctly the first time, but in the
>> second time, it runs very
>> slow,
>> then reports "Lock wait timeout exceeded; try restarting transaction"
>> error.
>>
>>   The first question is that it seems the action did not update the
>> table testdata's data. Did
>> the
>> UserTransaction ut have some error not participate in the database
>> transaction?
>>
>>   The second question is that I have searched this error, but don't know
>> how to solve it. Please
>> give me some tips. Must I not use MySQL's XA in Kandula ? Thanks.
>>
>>
>> The java code (JOTM example):
>> ========================================================
>> UserTransaction ut = null;
>> try{
>>     Context ctx = new InitialContext();
>>     MysqlXADataSource xaDs =
>> (MysqlXADataSource)ctx.lookup("java:comp/env/jdbc/myXADB");
>>     ut = (UserTransaction)ctx.lookup("java:comp/env/UserTransaction");
>>
>>     XAConnection xCon = xaDs.getXAConnection();
>>     java.sql.Connection conn = xCon.getConnection();
>>
>>     System.out.println("<<< beginning the transaction >>> xa con = " +
>> conn);
>>     ut.begin();
>>
>>     // JDBC statements
>>     Statement stmt = conn.createStatement();
>>     ResultSet rst =  stmt.executeQuery("select id, foo from testdata");
>>     if(rst.next()) {
>>         foo=rst.getInt(2);
>>     }
>>     System.out.println("foo = "+ foo +" (before completion)");
>>
>>     String sql = "update testdata set foo=" + (++foo) + " where id=1";
>>     stmt.executeUpdate(sql);// <=== The program will wait here, and then
>> report the error
>> message
>> !
>>
>>     ut.commit();
>>     System.out.println("<<< committing the transaction >>>");
>>
>>     conn.close();
>>     System.out.println("<<< done >>>");
>> }catch(Exception e) {
>>     System.out.print("DBTest >> ");
>>     e.printStackTrace();
>>     System.out.println("<<< rolling back the transaction >>>");
>>     try {
>>     	ut.rollback();
>>     	System.out.println("rollback ok.");
>>     }catch(Exception e1){
>>     	System.out.println("rollback Error " + e1);
>>     }
>>     System.out.println("rollback end");
>> }
>> }
>> ========================================================
>>
>>
>> The error message:
>> ========================================================
>> ==> xaDataSource =
>> com.mysql.jdbc.jdbc2.optional.MysqlXADataSource@e2fbeb <==
>> <<< beginning the transaction >>> xa con =
>> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@170984c
>> foo = 29 (before completion)
>> <<< committing the transaction >>>
>> <<< done >>>
>> <<< beginning the transaction >>> xa con =
>> com.mysql.jdbc.jdbc2.optional.ConnectionWrapper@4d5575
>> foo = 29 (before completion)
>> - set rollback only (tx=bb14:38:0:01777d30dfc9556034...986c02:)
>> DBTest >> java.sql.SQLException: Lock wait timeout exceeded; try
>> restarting transaction
>>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
>>         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
>>         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
>>         at
>> com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1159)
>>         at
>> com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:684)
>>         at
>> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
>>         at
>> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
>>         at
>> com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
>>         at
>>
> com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:840)
>>         at foo.XADBTest.init(XADBTest.java:92)
>>         at
>> org.apache.jsp.testJotm_jsp._jspService(org.apache.jsp.testJotm_jsp:55)
>>         at
>> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>         at
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
>>         at
>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
>>         at
>> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>         at
>>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>>         at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>         at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>>         at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>>         at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>>         at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>>         at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>>         at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
>>         at
>>
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>>         at
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>>         at
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>>         at
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>>         at java.lang.Thread.run(Thread.java:595)
>> <<< rolling back the transaction >>>
>> rollback ok.
>> rollback end
> ---------- previous mail end   ---------------
>
>
>
>
>
>
>
>
>
>
> ___________________________________________________________
> ÑÅ»¢1GÃâ·ÑÓÊÏä°Ù·Ö°Ù·ÀÀ¬»øÐÅ
> http://cn.mail.yahoo.com/
>