[jboss-user] [JBoss Seam] - FlushMode=MANUAL -- not immediately commited to db?

tynor do-not-reply at jboss.com
Thu Feb 7 13:28:06 EST 2008


Seam 2.0.0.GA
Hibernate 3.2.4.sp1
MySQL 5.0.16

I am using EJB3/JPA persistence and am having trouble with a manually flushed transaction.   Even after a call to em.flush(), the data is not visible to an external db client -- it seems that even though manually flushed, the transaction is not committed until after the outer backing bean action method returns.    

I need to ensure that my pending changes to the db are commited to the db so that I can invoke another application which uses that data from the database -- all before actually returning from the backing bean action.

I've tried to call em.getTransaction().commit(), but get a runtime error: 

  | Caused by: javax.faces.el.EvaluationException: java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()
  | 

Is it possible to commit the transaction without returning from an action method?

Thanks!

Report.java:

  | 	@Begin(flushMode=FlushModeType.MANUAL, join=true)
  | 	public void wire() {
  | 		// nop - placeholder function here only to allow manual flushing config
  | 	}
  | ...
  |         public void generate () {
  |               entityManager.persist(foo);
  |               entityManager.persist(bar);
  | ...
  |               entityManager.flush();
  |               log.debug("committed");  <-----------
  | 

If I set breakpoint after the flush, I cannot see the new data persisted to the database from an external client until I exit all the way back out of the top level action function (report.generate()).

Report.page.xml (the page that invokes the backing bean action): 

  | <?xml version="1.0" encoding="UTF-8"?>
  | <page xmlns="http://jboss.com/products/seam/pages"
  |       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |       xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd">
  |    <!--  wire up manually flushed transaction for reports -->
  |    <action execute="#{report.wire}"/>
  | </page>
  | 
  | 

persistence.xml:

  | <?xml version="1.0" encoding="UTF-8"?>
  | <!-- Persistence deployment descriptor for dev profile -->
  | <persistence xmlns="http://java.sun.com/xml/ns/persistence" 
  |              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |              xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
  |              version="1.0">
  |              
  |    <persistence-unit name="myproject">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/myprojectDatasource</jta-data-source>
  |       <properties>
  |          <property name="hibernate.hbm2ddl.auto" value="update"/>
  |          <property name="hibernate.cache.use_query_cache" value="true"/>
  |          <property name="hibernate.show_sql" value="false"/>
  |          <property name="jboss.entity.manager.factory.jndi.name" value="java:/myprojectEntityManagerFactory"/>
  |       </properties>
  |    </persistence-unit>    
  | </persistence>
  | 

components.xml:

  |    <persistence:managed-persistence-context name="entityManager"
  |                               auto-create="true"
  |                persistence-unit-jndi-name="java:/myprojectEntityManagerFactory"
  | 

myproject-ds.xml: 

  | <?xml version="1.0" encoding="UTF-8"?>
  | <datasources>
  |    
  |    <local-tx-datasource>
  |       <jndi-name>myprojectDatasource</jndi-name>
  |       <connection-url>jdbc:mysql:///myproject</connection-url>
  |       <driver-class>com.mysql.jdbc.Driver</driver-class>
  |       <user-name>myproject</user-name>
  |       <password>myproject</password>
  |    </local-tx-datasource>
  |    
  | </datasources>
  | 




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

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



More information about the jboss-user mailing list