Problemas com Spring

Pessoal estou tentando fazer um Projeto Java para WEB com JSF 2, Hibernate, Spring e Primefaces. Mas estou com dificuldade na configuração do Spring.
Alguém sabe me dizer que erro é esse?

Erro do Console:

Informações: columns: [id, usuariosy, usuariosx, transy, transx, acessox, data, acessoy, valory, valorx]
Nov 19, 2012 4:51:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: foreign keys: []
Nov 19, 2012 4:51:35 PM org.hibernate.tool.hbm2ddl.TableMetadata <init>
Informações: indexes: [primary]
Nov 19, 2012 4:51:35 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
Informações: schema update complete
[b]org.springframework.orm.hibernate3.HibernateSystemException: Unable to locate UserTransaction to check status; nested exception is org.hibernate.TransactionException: Unable to locate UserTransaction to check status[/b]
	at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
	at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
	at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
	at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
	at org.springframework.orm.hibernate3.HibernateTemplate.loadAll(HibernateTemplate.java:584)

Minha configuração do Spring

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <!-- habilita a configuração por annotations -->
    <context:annotation-config />
	
    <!-- define os pacotes/subpacotes que onde serão procurados beans do spring -->
    <context:component-scan base-package="br.com.codigosfontes" />
	
    <!-- Parâmetros de conexão com o banco de dados -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/infocanais" />
        <property name="username" value="root" />
        <property name="password" value="equipeinfo" />
    </bean>
    
    <!-- Propriedades do hibernate -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
            
        <property name="dataSource" ref="dataSource" />
        <property name="exposeTransactionAwareSessionFactory"><value>true</value></property>
        
        <property name="annotatedClasses">
            <list>
                <value>br.com.codigosfontes.domain.Apf</value>
            </list>
        </property>
        
        <property name="hibernateProperties">
            <props>
                <!--<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> -->
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
                <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
                <prop key="current_session_context_class">thread</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="connection.pool_size">5</prop>
                <prop key="hibernate.use_outer_join">true</prop>
                <prop key="hibernate.max_fetch_depth">1</prop>
                <prop key="hibernate.jdbc.batch_size">0</prop>          
                <prop key="hibernate.hbm2ddl.auto">update</prop>                              
            </props>
        </property>
        
    </bean>
    
    <!-- Injeta uma sessão do hibernate -->   
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>  
    
    <!-- DAOs -->
    <bean id="apfDAO" 
          class="br.com.codigosfontes.dao.imp.ApfDAO">
    	<property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
    
</beans>

Meu bean factory

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BeanFactory {

	private static ClassPathXmlApplicationContext ctx;

    static {
        ctx = new ClassPathXmlApplicationContext("br/com/codigosfontes/config/spring.xml");
    }

    private BeanFactory() {
    }

    public static Object getBean(String beanName) {
        return ctx.getBean(beanName);
    }
 
	public static Object getBean(String beanName, Class classe) {
        return ctx.getBean(beanName, classe);
    }
	
}

@ManagedBean
@RequestScoped
public class IndexMbean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ApfBO apfbo;
	private List<Apf> listarDados;

	private PieChartModel graficoPizza;
	private CartesianChartModel graficoBarra;

	// construtor
	public IndexMbean() {
		apfbo = new ApfBO();
		listar();
	}

	public void gerarGraficoBarra() {
		graficoBarra = new CartesianChartModel();

		for (Apf apf : listarDados) {
			ChartSeries dados = new ChartSeries();
			dados.setLabel(apf.getData());
			dados.set("APF", apf.getTransx());
			dados.set("APF", apf.getTransy());
			graficoBarra.addSeries(dados);
		}
	}

	@SuppressWarnings("unused")
	private void gerarGraficoPizza() {
		graficoPizza = new PieChartModel();

		for (Apf apf : listarDados) {
			graficoPizza.set(apf.getData(), apf.getTransx());
			graficoPizza.set(apf.getData(), apf.getTransy());
		}
	}

	public void listar() {

		try {

			// recuperar todos os candidatos do banco
			listarDados = apfbo.buscaTodos();

		} catch (Exception x) {
			x.printStackTrace();
		}
	}

	public List<Apf> getListarDados() {
		return listarDados;
	}

	public void setListarDados(List<Apf> listarDados) {
		this.listarDados = listarDados;
	}

	public PieChartModel getGraficoPizza() {
		return graficoPizza;
	}

	public CartesianChartModel getGraficoBarra() {
		return graficoBarra;
	}

	public void setGraficoPizza(PieChartModel graficoPizza) {
		this.graficoPizza = graficoPizza;
	}

	public void setGraficoBarra(CartesianChartModel graficoBarra) {
		this.graficoBarra = graficoBarra;
	}

}

Se alguém já passou por esse erro. Desde já agradeço a ajuda.

Acredito que o problema esteja no parâmetro Hibernate.transaction.factory_class, comente ele e teste novamente.

falta configurar o bean txManager para hibernate.

Adicione isto na sua configuração do Spring:

<bean id="txManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
		<property name="dataSource" ref="dataSource" />
</bean>

E também isto para o Spring encontrar métodos transacionais automaticamente:

<tx:annotation-driven />

Nos métodos que você precisar de transação, anote-os com @Transactional.

É isso.

JTATransactionFactory só funciona em AS. Pode ser que ele esteja usando Tomcat, que não dá suporte para JTA.
Deve ser isso.