Problema com openJPA

Boa Tarde Colegas,
estou com um problema ao criar um open session in view filter, para resolver os problemas com lazy. porem não estou conseguindo
recuperar a transação para poder abrir e fechar.

segue abaixo como estou fazendo

import java.io.IOException;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.EntityTransaction;

import javax.persistence.Persistence;

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 com.ibm.ejs.util.ThreadLocal;

public class JPASessionRequestFilter implements Filter {

private static EntityManagerFactory sf;



private static final ThreadLocal tls = new ThreadLocal();



private static final ThreadLocal tltx = new ThreadLocal();



@Override

public void destroy() {

	

}



@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

	try {

        beginTransaction();

        chain.doFilter(request, response);

        commitTransaction();	

    } catch (Throwable ex) {

    	rollbackTransaction();

    	throw new ServletException(ex);

    }

}



@Override

public void init(FilterConfig filterConfig) throws ServletException {

    openSession();

}

protected static synchronized

EntityManagerFactory getSessionFactory(String name) {

  if (sf == null) {

     sf = Persistence.createEntityManagerFactory(name);

  }

  return sf;

}

public static void openSession() {

  EntityManager s = (EntityManager) tls.get();

  if (s == null) {

     s = getSessionFactory("saog-core-service").createEntityManager();

     tls.set(s);

     tls.get();

  }

}

public static EntityManager getCurrentSession() {

  return (EntityManager) tls.get();

}

public static void closeSession() {

  EntityManager s = (EntityManager) tls.get();

  tls.set(null);

  if (s != null && s.isOpen()) s.close();

}

public static void beginTransaction() {

  EntityTransaction tx = (EntityTransaction) tltx.get();

  if (tx == null) {

     tx = getCurrentSession().getTransaction(); 

     tx.begin();

     tltx.set(tx);

  }

}

public static void commitTransaction() {

  EntityTransaction tx = (EntityTransaction)tltx.get();

  if (tx != null && tx.isActive()) tx.commit();

  tltx.set(null);

}

public static void rollbackTransaction() {

  EntityTransaction tx = (EntityTransaction)tltx.get();

  tltx.set(null);

  if (tx != null && tx.isActive()) tx.rollback(); 

}

}

porem quando uso o begin no qual ele vai pelo getCurrentSession para recuperar o getTransaction da o seguinte erro:
org.apache.openjpa.persistence.InvalidStateException: You cannot access the EntityTransaction when using managed transactions.

Att,