Please send your *-ds.xml file. If you are setting autocommit, then you should not be using a transactional pool as JBoss will enlist the connection within a transaction and call commit for you.

Bill

rajeshnn wrote:

Hi I havent yet got a reply to my query as mentioned below in the mail. I am not able yo proceed with the work because of this. My application works witout any problem in J2EE & Oracle 9iAS

Could you pls help

Regards
Rajesh

-----Original Message-----
From: rajeshnn Sent: Thursday, September 25, 2003 3:44 PM
To: [EMAIL PROTECTED]
Subject: RE: [JBoss-user] error while trying to open a new connection



Hi Adrian
We are providing you the sample code . It contains a servlet and a stateful session bean.
In the ejbCreate we are creating a connection and we are setting autoCommit to false at that time.
The servlet creates the bean and will call the doQuery() method. At this point the autoCommit attribute is coming as true.
We are using bean managed persistence. we have set the attribute SpecCompliant as true in transaction-service.xml.


Why is this happening and how can we solve the issue?

The example code is attached along with this.


Regards Rajesh


-----Original Message----- From: Adrian Brock [mailto:[EMAIL PROTECTED] Sent: Wednesday, September 24, 2003 6:30 PM To: [EMAIL PROTECTED] Subject: RE: [JBoss-user] error while trying to open a new connection


Again you'll have to give me some information. Where is getConnection() invoked and where do you store the connection? What is done between getting the connection and the commit()? Is this a StatefulSessionBean? What is the deployment descriptor for the resource-ref?

What does the following return just before the commit():
m_dbCon.getAutoCommit();
((org.jboss.resource.adapter.jdbc.WrappedConnection)
m_dbCon).getUnderylingConnection().getAutoCommit();

You know this kind of pattern won't scale. You are not
using the pool. You will need one db connection per user.

Regards,
Adrian

On Wed, 2003-09-24 at 07:48, rajeshnn wrote:

Hi Adrian
Thanks you very much for the quick response.

        The issue described in the earlier mail(below) has been solved while using 
jboss-3.2.2RC4 ( latest jboss release ), as advised by you.
Now i am facing a new error.

java.sql.SQLException: You cannot commit with autocommit set!

I had also set CachedConnectionManager in transaction-service.xml( SpecCompliant to true ) ),

code is given below:
===============
public Connection getConnection(){
        String m_strDefaultDataSource   ="java:comp/env/jdbc/Data";

        InitialContext ic                       = new InitialContext();
        DataSource m_dsCommmon  = ( DataSource ) ic.lookup( m_strDefaultDataSource );
        m_dbCon                 = m_dsCommmon.getConnection();
        m_dbCon.setAutoCommit(false);
        
        return m_dbCon;
}

private boolean storeSignInDetails(String strUserName,String strClientIp , Connection m_dbCon){

        String strUserId        = getUserId();
        strUserId                       = ( null == strUserId )?"Invalid":strUserId;

        String strQuery ="//sql statement for logging //
        try{
                Statement stmt = m_dbCon.createStatement();
                int iCount = stmt.executeUpdate(strQuery);
                m_dbCon.commit();

        }catch(Exception e){
                e.printStackTrace();
                return false;
        }

return true;

}

// Also pls note that i am not closing the connection, as this is used for further 
transaction.
// We are using bean managed transaction . We are handling the transaction using JDBC 
only (not using JavaTransaction API).
//Initially after successful logging of the user, the user details are logged and it 
is commited
        ( Given in the  above function --storeSignInDetails () ).
//Later it is commited , only when the user finishes his transaction.
// So we need to use setAutoCommit( false );

Is there any way to prevent this issue....

Also can u please clarify as to what JBoss is expecting. Do we need to disable 
CachedConnectionManager??
        

10:45:37,843 ERROR [STDERR] java.sql.SQLException: You cannot commit with autocommit 
set!
10:45:37,859 ERROR [STDERR]     at 
org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.jdbcCommit
BaseWrapperManagedConnection.java:494)
10:45:37,859 ERROR [STDERR]     at 
org.jboss.resource.adapter.jdbc.WrappedConnection.commit(WrappedConnection.java:465)
10:45:37,859 ERROR [STDERR]     at 
com.suntec.tbms3.ui.CUserValidateSB.storeSignInDetails(CUserValidateSB.java:318)






This electronic mail (including any attachment thereto) may be confidential and privileged and is intended only for the individual or entity named above. Any unauthorized use, printing, copying, disclosure or dissemination of this communication may be subject to legal restriction or sanction. Accordingly, if you are not the intended recipient, please notify the sender by replying to this email immediately and delete this email (and any attachment thereto) from your computer system...Thank You




This electronic mail (including any attachment thereto) may be confidential and privileged and is intended only for the individual or entity named above. Any unauthorized use, printing, copying, disclosure or dissemination of this communication may be subject to legal restriction or sanction. Accordingly, if you are not the intended recipient, please notify the sender by replying to this email immediately and delete this email (and any attachment thereto) from your computer system...Thank You




------------------------------------------------------------------------

/*
 * Created on Sep 22, 2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package com.study;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.sql.*;
import java.sql.*;

/**
* @author krishnakumar
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
* @ejb.bean name = "Query"
* display-name = "QueryBean"
* description = "Test bean for JBoss"
* view-type = "remote"
* jndi-name = "ejb/Query"
* transaction-type = "Bean"
* type = "Stateful"
* * @ejb.resource-ref res-ref-name = "jdbc/Data"
* res-auth = "Container"
* res-type = "javax.sql.DataSource"
* jndi-name = "jdbc/Data"
*
* @ejb.ejb-ref ejb-name = "Help"
*
* @jboss.ejb-ref-jndi ref-name = "Help"
* jndi-name = "ejb/Help"
*
* * @jboss.resource-ref res-ref-name = "jdbc/Data"
* jndi-name = "java:/Data"
*/
public class QueryBean implements SessionBean {

/**
* Default create method
[EMAIL PROTECTED] CreateException
[EMAIL PROTECTED] */
public void ejbCreate() throws CreateException
{
makeConnection();
try {
System.out.println( "After makeConnection AUTO COMMIT is " + m_dbCon.getAutoCommit() );
}catch (SQLException e) {
e.printStackTrace();
}
}

/**
* @return
*
[EMAIL PROTECTED] view-type = "remote"
*/
public void doQuery()
{
try{
System.out.println( "Inside doQuery AUTO COMMIT is " + m_dbCon.getAutoCommit() );
}catch (SQLException e) {
e.printStackTrace();
}
}

/* (non-Javadoc)
* @see javax.ejb.SessionBean#ejbActivate()
*/
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
makeConnection();
}


        /* (non-Javadoc)
         * @see javax.ejb.SessionBean#ejbPassivate()
         */
        public void ejbPassivate() throws EJBException, RemoteException {
                // TODO Auto-generated method stub
                closeConnection();
        }

        /* (non-Javadoc)
         * @see javax.ejb.SessionBean#ejbRemove()
         */
        public void ejbRemove() throws EJBException, RemoteException {
                // TODO Auto-generated method stub
                closeConnection();
        }

        /* (non-Javadoc)
         * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
         */
        public void setSessionContext(SessionContext arg0)
                throws EJBException, RemoteException {
                // TODO Auto-generated method stub

}

private void makeConnection()
{
try {
InitialContext ic = new InitialContext();
m_Ds = ( DataSource ) ic.lookup( "java:comp/env/jdbc/Data" );
m_dbCon = m_Ds.getConnection();
//Setting autocommit to false m_dbCon.setAutoCommit(false);
}catch( Exception e)
{
e.printStackTrace();
}
}

private void closeConnection()
{
if( null != m_dbCon )
{
try {
m_dbCon.close();
}catch( SQLException sqe )
{
sqe.printStackTrace();
}

}
}

private Connection m_dbCon;
private DataSource m_Ds;
}



------------------------------------------------------------------------


/*
 * Created on Sep 22, 2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package com.study;

import java.io.IOException;
import javax.rmi.*;

import javax.naming.InitialContext;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author krishnakumar
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 * @web.servlet                 name                    = "QueryServlet"
 *                                              display-name    = "QueryServlet"
 *                                              description     = "Test Servlet for 
JBoss"
 *
 * @web.servlet-mapping url-pattern     = "/QueryAlias"
 *
 * @web.ejb-ref                 name                    = "ejb/Query"
 *                                              type                    = "Session"
 *                                              home                    = 
"com.study.QueryHome"
 *                                              remote                  = 
"com.study.Query"
 *                                              description     = "Test servlet for 
JBoss"
 *
 * @jboss.ejb-ref-jndi  ref-name                = "ejb/Query"
 *                                              jndi-name               = "ejb/Query"
 */
public class QueryServlet extends HttpServlet {

Query remote;

        /* (non-Javadoc)
         * @see javax.servlet.GenericServlet#init()
         */
        public void init() throws ServletException {
                // TODO Auto-generated method stub
                super.init();
                try {
                        InitialContext ic       = new InitialContext();
                        Object obj                      = ic.lookup( 
"java:comp/env/ejb/Query" );
                        QueryHome home          = 
(QueryHome)PortableRemoteObject.narrow(obj, QueryHome.class);
                        remote                          = home.create();
                }catch( Exception e )
                {
                        e.printStackTrace();
                }
        }

        /* (non-Javadoc)
         * @see 
javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, 
javax.servlet.http.HttpServletResponse)
         */
        protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
                throws ServletException, IOException {
                // TODO Auto-generated method stub
                doPost(arg0, arg1);
        }

        /* (non-Javadoc)
         * @see 
javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, 
javax.servlet.http.HttpServletResponse)
         */
        protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1)
                throws ServletException, IOException {
                // TODO Auto-generated method stub
                remote.doQuery();
                try {
                        remote.remove();
                }catch (Exception e) {
                        e.printStackTrace();
                }

        }
}

-- ================ Bill Burke Chief Architect JBoss Group LLC. ================



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to