wood burning stoves 2.0*
The moose likes Object Relational Mapping and the fly likes Throw an exception dosnt cause to rollback when it is not Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "Throw an exception dosnt cause to rollback when it is not" Watch "Throw an exception dosnt cause to rollback when it is not" New topic
Author

Throw an exception dosnt cause to rollback when it is not

avihai marchiano
Ranch Hand

Joined: Jan 10, 2007
Posts: 342
at the same EJB

I have a facade (Stateless) and a DAO (stateless)

@Stateless
@Local(HotelService.class)
@Remote(HotelService.class)
public class HotelServiceBean implements HotelService {


@EJB
private HotelDao hotelDao;

public List<Hotel> findAllHotels() {
return hotelDao.findAllHotels();
}

public Hotel saveHotel(Hotel newHotel) {
Hotel hotel = hotelDao.saveHotel(newHotel);
String test = null;
if(test == null){
throw new RuntimeException();
}
return hotel;
}

}


As you can see after the dao save the record i throw an exception , but the record was save to the DB and roll back was not executed.

DS:

<?xml version="1.0" encoding="UTF-8"?>

<!-- $Id: mysql-ds.xml 41016 2006-02-07 14:23:00Z acoliver $ -->
<!-- Datasource config for MySQL using 3.0.9 available from:
http://www.mysql.com/downloads/api-jdbc-stable.html
-->

<datasources>
<local-tx-datasource>
<jndi-name>TestDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/test</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>test</user-name>
<password>1234</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- should only be used on drivers after 3.22.1 with "ping" support
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
-->
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>


Perssistence.xml

<persistence>
<persistence-unit name="Demo">
<jta-data-source>java:/TestDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>



Thank you very much!!!
avihai marchiano
Ranch Hand

Joined: Jan 10, 2007
Posts: 342
The problem was because MySQl configure as ISAM
Shailesh Kini
Ranch Hand

Joined: Oct 17, 2001
Posts: 153
Hey Avihai,

Does that mean transaction was not supported by MySQL? I believe it uses InnoDB for transaction management. Thanks for posting the solution.
[ June 19, 2007: Message edited by: Shailesh Kini ]

Shailesh Kini.
avihai marchiano
Ranch Hand

Joined: Jan 10, 2007
Posts: 342
Its mean that you need to create the Tables or the storage engine InnoDB and not ISAM in case you need transaction
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Throw an exception dosnt cause to rollback when it is not
 
Similar Threads
JPA,/mysql/JBoss and a big head ache
Error while starting jboss(java.lang.ClassNotFoundException: No ClassLoaders found for: com.mysql.j)
JBoss DBCP
Exception - when create a new factory by Persistence class
JNDI error message