Guest User

Untitled

a guest
Jun 25th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. package com.philipgloyne.interceptor;
  2.  
  3. import org.hibernate.FlushMode;
  4. import org.hibernate.Session;
  5. import org.hibernate.SessionFactory;
  6. import org.springframework.dao.DataAccessResourceFailureException;
  7. import org.springframework.orm.hibernate3.SessionFactoryUtils;
  8. import org.springframework.orm.hibernate3.SessionHolder;
  9. import org.springframework.transaction.support.TransactionSynchronizationManager;
  10. import org.springframework.ws.context.MessageContext;
  11. import org.springframework.ws.server.EndpointInterceptor;
  12.  
  13. public class OpenSessionInServiceCall implements EndpointInterceptor {
  14.  
  15. private final SessionFactory sessionFactory;
  16.  
  17. private final FlushMode flushMode = FlushMode.MANUAL;
  18.  
  19. public OpenSessionInServiceCall(final SessionFactory sessionFactory) {
  20. super();
  21. this.sessionFactory = sessionFactory;
  22. }
  23.  
  24. @Override
  25. public boolean handleFault(final MessageContext messageContext, final Object endpoint) {
  26. closeSession();
  27. return true;
  28. }
  29.  
  30. @Override
  31. public boolean handleRequest(final MessageContext messageContext, final Object endpoint) throws Exception {
  32. final Session session = getSession(this.sessionFactory);
  33. TransactionSynchronizationManager.bindResource(this.sessionFactory, new SessionHolder(session));
  34. return true;
  35. }
  36.  
  37. @Override
  38. public boolean handleResponse(final MessageContext messageContext, final Object endpoint) {
  39. closeSession();
  40. return true;
  41. }
  42.  
  43. protected Session getSession(final SessionFactory sessionFactory) throws DataAccessResourceFailureException {
  44. final Session session = SessionFactoryUtils.getSession(sessionFactory, true);
  45. session.setFlushMode(this.flushMode);
  46. return session;
  47. }
  48.  
  49. private void closeSession() {
  50. final SessionHolder sessionHolder = (SessionHolder) TransactionSynchronizationManager.unbindResource(this.sessionFactory);
  51. SessionFactoryUtils.closeSession(sessionHolder.getSession());
  52. }
  53.  
  54. }
Add Comment
Please, Sign In to add comment