[jboss-user] [Beginners Corner] - Rollback not working

saulat78 do-not-reply at jboss.com
Fri Nov 2 07:36:54 EDT 2007


Hello

I have a Stateless EJB, that is performing two transactions via DAOs,
the first DAO inserts the record, then I am explicitly throwing exception in the second DAO and it fails to add record, then I expect the ut.rollback() method to roll back my first record but it is not doing so, can any one tell me what I am missing.


  | 
  | @Stateless
  | @TransactionManagement(TransactionManagementType.BEAN)
  | public class DTCTestBean implements DTCTestRemote
  | {
  |     @Resource  SessionContext ctx;
  | 
  |    public void performTransaction(int param)
  |    {
  | 
  |            UserTransaction ut=null;
  |            Connection conn = null;
  | 
  |            try
  |            {
  |              InitialContext initCtx =  new InitialContext(getProperties());
  |              DataSource ds = (javax.sql.DataSource)initCtx.lookup(DAOConstants.DB_VAM);
  |              conn = ds.getConnection();
  |              ut = ctx.getUserTransaction();
  | 
  |               // start the transaction
  |              ut.begin();
  | 
  |              FirstDAO dao = new FirstDAO();
  |              MyDTO dto = new MyDTO();
  |              dto.setA(123);
  |       int i = dao.insert(dto, conn); //performs the first transaction
  | 
  | 
  |              SecondDAO dao2 = new SecondDAO();
  |              SecondDTO dto2 = new SecondDTO();
  |              dto2.setB(456);
  |            
  |              int j = dao2.insert(dto2, conn) ; //explicitly throwing exception
  | 
  |               ut.commit();
  |             }
  |             catch(Exception e)
  |             {
  |                 try
  |                 {
  |                    System.out.println("Attempting to roll back");
  |                    ut.rollback(); // Y this dont roll back the first transaction
  |                    System.out.println("Transaction roll back");
  | 
  |                 }
  |                 catch(Exception in)
  |                 {
  |                     
  |                     in.printStackTrace();
  |                 }
  | 
  |             }
  |             finally
  |             {
  |                 try
  |                 {
  |                     if(conn != null)
  |                         conn.close();
  |                 }
  |                 catch(Exception e)
  |                 {
  |                     System.out.println("Ignorable Exception " + e.toString() );
  |                 }
  |             }
  |     }
  | 
  |      private  Properties getProperties() 
  | {
  |         String urlName = "jnp://222.222.2.227:1099";
  |         Properties p = new Properties();
  |         p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
  |         p.put(Context.PROVIDER_URL, urlName);
  |         p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
  |         return p;
  | 
  |     }
  |  }	

My data source conf is 

 <datasources>
  |    <local-tx-datasource>
  |       <jndi-name>VAM</jndi-name>
  |       <use-java-context>false</use-java-context>
  |       <connection-url>jdbc:sqlserver://YCASHMTDEV:1433;databaseName=VAM</connection-url>
  |       <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
  |       <user-name>sa</user-name>
  |       <password>sa1234</password>
  |       
  |       <max-pool-size>100</max-pool-size>
  |       <min-pool-size>10</min-pool-size>
  |       <blocking-timeout-millis>5000</blocking-timeout-millis>
  |       <idle-timeout-minutes>15</idle-timeout-minutes>
  |       
  |       <!-- correspondinasdg type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
  |       <metadata>
  |                <type-mapping>mySQL</type-mapping>
  |       </metadata>
  |       <metadata>
  |            <type-mapping>MS SQLSERVER2005</type-mapping>
  |         </metadata>
  |     </local-tx-datasource>
  | 
  |   
  | 
  | </datasources>	

I am also using two more data sources in the same file but i only included that I am using. 

Any help will be appreciated

Saulat

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101258#4101258

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101258



More information about the jboss-user mailing list