|
Thank you very much ! the filter works fine. We have added the following : 1. In web.xml : <filter> <filter-name>TransactionPerRequestFilter</filter-name> <filter-class>com.opticneo.filter.TransactionPerRequestFilter</filter-class> </filter> <filter-mapping> <filter-name>TransactionPerRequestFilter</filter-name> <url-pattern>*.php</url-pattern> </filter-mapping> 2. And the filter itself : import java.io.IOException; import javax.ejb.EJBException; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.transaction.SystemException; import javax.transaction.UserTransaction; import org.apache.log4j.Logger; public class TransactionPerRequestFilter implements Filter { private static Logger log = Logger.getLogger(TransactionPerRequestFilter.class); public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { UserTransaction ut = null ; try { Context context = new InitialContext(); ut = (javax.transaction.UserTransaction) context.lookup("java:comp/UserTransaction"); ut.begin(); chain.doFilter(request, response); ut.commit(); } catch (Exception ex) { try { ut.rollback(); } catch (SystemException syex) { throw new EJBException ("Rollback failed: " + syex.getMessage()); } throw new EJBException ("Transaction failed: " + ex.getMessage()); } } public void init(FilterConfig filterConfig) throws ServletException { log.debug("Initializing filter..."); } public void destroy() {} }
Michael Rusch a écrit : >> Seems that the objects no longer have the association with valid session, so either the Session or PersistenceManager should be kept around to fill the objects in upon use. Forcing eager load could also be used I think. >> >> Alex.Just noting that this can be done on the configuration level, or you can do it using joins when you query for your objects. > I assume the easiest route here is to use a Filter to achieve > "session/transaction per request". > > </Mattias> Along those same lines, you might also want to check out the "Open Session in View" pattern, which is mentioned in a number of places in the Hibernate docs: https://www.hibernate.org/43.html Michael |
_______________________________________________ resin-interest mailing list [email protected] http://maillist.caucho.com/mailman/listinfo/resin-interest

