Quoting Jack Wang <[EMAIL PROTECTED]>:

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 <[EMAIL PROTECTED]>дµÀ:
> 
> > 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 = [EMAIL PROTECTED]
> <==
> > <<< beginning the transaction >>> xa con =
> > [EMAIL PROTECTED]
> > foo = 29 (before completion)
> > <<< committing the transaction >>>
> > <<< done >>>
> > <<< beginning the transaction >>> xa con =
> > [EMAIL PROTECTED]
> > 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 




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

Reply via email to