Problemas com spring 3, jpa 2 e jsf 2

Agradeço se alguem conseguir me ajudar.
Tenho uma aplicação relativamente grande de medicina funcionando bem com Spring 2.5, jpa, hibernate 3, jsf 1.2, richfaces 3.3 e servidor glassfish
Acontece que resolvi trabalhar nela melhorando performace, usabilidade e outras implementações. Resolvi tambem fazer um upgrade dos framewoks mudando pra Spring 3, jpa 2, jsf 2 com primeface e icefaces, ate aqui não tive problema de confrito ou cousa parecida a sistema faz o deploy numa boa. SO QUE: quando tento logar na aplicação fazendo o primeiro acesso a banco de dados para recuperar login/senha obtenho o seguinte erro:
“Could not open JPA EntityManager for transaction” / " Exception Description: Cannot use an EntityTransaction while using JTA."
O que é mais intrigante pra mim que isso so acontece com a aplicação rodando (WEB). Nada disso ocorre quanto faço o messo procedimento usando Junit ou ate mesmo rodando de uma Classe Principal.

Desde ja agradeço quem puder me ajudar.

segue os meus arquivos de configuraão e fragmento das classes envolvidas:

WEB.xml

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

FilterAutenticacao medicina.controle.FilterAutenticacao FilterAutenticacao /pages/telas/*
<!--Spring-->
<filter>
    <filter-name>openEntityManager</filter-name>
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
</context-param>



<!--ICEFACES-->
<context-param>
<param-name>com.icesoft.faces.synchronousUpdate</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.doJSFStateManagement</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.jboss.seam.core.init.debug</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.uploadDirectory</param-name>
<param-value>/</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.standardRequestScope</param-name>
<param-value>true</param-value>
</context-param>


<!--JSF-->
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
<context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>
<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

CONFIGRAÇÂO DO SPRING

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

    <!-- Responsavel Pela gestão das Entidades -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
            <property name="persistenceUnitName"  value="medicinaPU"/>
         <property name="jpaVendorAdapter">
                    <bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter" >
                        <property name="databasePlatform" value="org.eclipse.persistence.platform.database.MySQLPlatform"/>
                        <property name="showSql" value="false"/>
                    </bean>
        </property>

        <property name="loadTimeWeaver">
            <bean  class="org.eclipse.equinox.weaving.springweaver.EquinoxAspectsLoadTimeWeaver">
                    
            </bean>
        </property>
</bean>

    <!-- Responsavel Pela gestão da transações-->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager" />

<!-- Marcação de transações atraves de anotações -->

    <!-- Responsavel Pela injeção e criação do entityManager na Classe  -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>



<bean id="usuario" class="medicina.infraestrutura.UsuarioDecorator" >
    <property name="daoUsuario">
        <bean name="genericUsuarioDao" class="medicina.dao.GenericDao"  />
    </property>
</bean>

<bean id="menu" class="medicina.infraestrutura.MenuDecorator" >
    <property name="daoMenu">
        <bean name="genericMenuDao" class="medicina.dao.GenericDao"  />
    </property>
</bean>

<bean id="itemMenu" class="medicina.infraestrutura.ItemMenuDecorator" >
    <property name="daoItemMenu">
        <bean name="genericItemMenuDao" class="medicina.dao.GenericDao"  />
    </property>
</bean>

<bean id="opcaoItemMenu" class="medicina.infraestrutura.OpcaoItemMenuDecorator" >
    <property name="daoOpcaoItemMenu">
        <bean name="genericOpcaoDao" class="medicina.dao.GenericDao"  />
    </property>
</bean>

<bean id="perfil" class="medicina.infraestrutura.PerfilDecorator" >
    <property name="daoPerfil">
        <bean name="genericPerfilDao" class="medicina.dao.GenericDao"  />
    </property>
</bean>

Persistence.xml

<?xml version="1.0" encoding="UTF-8"?> org.eclipse.persistence.jpa.PersistenceProvider medicina.persistencia.Usuario medicina.persistencia.RazaoPessoa medicina.persistencia.Empresa medicina.persistencia.ItemMenu medicina.persistencia.LogAcesso medicina.persistencia.LogOperacao medicina.persistencia.Menu medicina.persistencia.Perfil medicina.persistencia.Permissao medicina.persistencia.Profissional medicina.persistencia.UsuariosAcessaEmpresas medicina.persistencia.Clinica medicina.persistencia.OpcaoItemMenu true
</properties>

CARREGA AS CONFIGURAÇÕES DO SPRING

public class SpringBeans {

private static ApplicationContext springContext;


public static synchronized ApplicationContext getSpringContext(){
    if (springContext == null){
        springContext = new ClassPathXmlApplicationContext("/medicina/recursos/applicationContext.xml");
    }
    return springContext;
}


public static UsuarioRepository getUsuarioRepository() {
    return ((UsuarioRepository) springContext.getBean("usuario"));
}


public static MenuRepository getMenuRepository() {
    return ((MenuRepository) springContext.getBean("menu"));
}

public static ItemMenuRepository getItemMenuRepository() {
    return ((ItemMenuRepository) springContext.getBean("itemMenu"));
}

public static OpcaoItemMenuRepository getOpcaoItemMenuRepository() {
    return ((OpcaoItemMenuRepository) springContext.getBean("opcaoItemMenu"));
}

public static PerfilRepository getPerfilRepository() {
    return ((PerfilRepository) springContext.getBean("perfil"));
}

}

DAO GENERICO

@Transactional(readOnly = true)
@Repository()
public class GenericDao<PersistentObject, IDType extends Serializable> implements Dao<PersistentObject, IDType> {

private EntityManager em;





//Injeta EntityManager atravez do Spring
@PersistenceContext()
public void setEntityManager(EntityManager em) {
    this.em = em;
}

//Obtem os EntityManager
public EntityManager getEntityManager() {
    return em;
}





@Override
public PersistentObject buscarPorNamedQuery(String queryNome, Map<String, Object> params) {
    Query query = em.createNamedQuery(queryNome);
    for (String key : params.keySet()) {
        query.setParameter(key, params.get(key));
    }
    return (PersistentObject) query.getSingleResult();
}




@Override
public PersistentObject buscarPorId(Class<PersistentObject> classe, IDType id) {
    return em.find(classe, id);
}

@Override
public void close() {
    {
        em.close();
    }

}

}

BEAN GERENCIADO DE LOGIN

@ManagedBean(name=“login”)
@RequestScoped()
public class MBLogin {

//@ManagedProperty(value="#{usuario}")
private Usuario usuario;
private int withDivEsquerdo = 500;
private int withDivDireito = 500;
private String navegacao = "/pages/telas/mso";//?faces-redirect=true

public MBLogin(){
    setUsuario(new Usuario());
}

public boolean validacao() {

  //implementar
    boolean valido = true;
    return valido;
 }


public String logar(){

    SpringBeans.getSpringContext();

    if (validacao() == false) {
        return "login";

    } else {
        try {
            setUsuario(SpringBeans.getUsuarioRepository().buscarLoginSenha(getUsuario().getLogin(), Criptografia.criptografar(getUsuario().getSenha()),false,true));
            //Coloca o Usuario na sessão
            HttpServletRequest requestUser = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
            requestUser.getSession().setAttribute("userLogado", getUsuario());

        } catch (Exception e) {
            return "login";
        }

        return "/pages/telas/mso";
    }

}