Hibernate - Erro em abrir Sessão

Bom dia!
Estou estudando o Hibernate pelo tutorial do GUJ e estou tendo problemas em abrir uma sessã, isso já há dois dias, procurei algum tópico a respeito e não encontrei.

A exception!

15/04/2008 11:31:35 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
	at hibernate.HibernateUtility.getSession(HibernateUtility.java:23)
	at grupo.DaoGrupo.cadastrarGrupo(DaoGrupo.java:15)
	at org.apache.jsp.teste_jsp._jspService(teste_jsp.java:67)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

HibernateUtility

package hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtility {
	
	private static SessionFactory factory;
	
	static {
		
		try {
			factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
			
		} catch (Exception e) {
			e.printStackTrace();			
		}
	}
	
	public static Session getSession() {
		
		return factory.openSession();
		
	}
}

Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="hibernate.connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost/bd_utfpr_pesquisa
		</property>
		<property name="hibernate.connection.username">
			root
		</property>
		<property name="hibernate.connection.password">
			admin
		</property>	
		
		<!-- Condiguração do c3p0 -->
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">2</property>
		<property name="hibernate.c3p0.timeout">5000</property>
		<property name="hibernate.c3p0.max_statements">10</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>		
		<property name="hibernate.c3p0.acquire_increment">2</property>
		
		<!-- Configurações de debug -->
		<property name="show_sql">true</property>
		<property name="hibernate.generate_statistics">true</property>
		<property name="hibernate.use_sql_comments">true</property>	
		
		<mapping resource="hibernate/grupos.hbm.xml" />
	</session-factory>
</hibernate-configuration>

grupos.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="grupo.BeanGrupo" table="tb_grupos">
		<!-- Definição da chave primaria -->
		<id name="codigo" column="cod_grupo" type="integer" >
			<generator class="increment"></generator>
		</id>
		<!-- Atributos -->
		<property name="titulo" column="titulo" type="string" />
		<property name="subTitulo" column="subtitulo" type="string" />
		<property name="tema" column="tema" type="string" />
		<property name="descricao" column="descricao" type="string" />			
	</class>
</hibernate-mapping> 

Os xml grupos.hbm.xml, hibernate.cfg.xml e a classe HibernateFactory estão todos na package Hibernate.
Fico grato por qualquer ajuda!

A exception esta deixando bem claro o problema:

NullPointerException

at hibernate.HibernateUtility.getSession(HibernateUtility.java:23)

Isso indica que a factory, que deveria ter sido corretamente aberta, nao foi, e a variavel ficou com null.

Deve ter uma outra stack trace impressa no seu console deixando bem claro qual eh o erro que fez com que a session factory nao fosse aberta!

Sim Paulo, percebi a exception de NullPointerException e é exatamente isso que quero entender, o por que não está conseguindo abrir a sessão para então atribuí-la para variável factory. Todas as linhas do console está no primeiro quadro. Tenho a impressão que seja algo em relação do hibernate.cfg.xml.

O que poderia dar errado aqui?

factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();

Desse modo também não dá certo

factory = new Configuration().configure().buildSessionFactory();

Voce precisa ler a mensagem de erro pra ver o que esta errado. Ela deve estar aparecendo ACIMA dessa outra stacktrace que voce copiou e colou, verifique o log com atencao! É exatamente quando voce faz e.printStackTrace dentro do try catch do seu bloco estatico (por isso eh bom sempre usar log do que fazer apenas e.printStackTRace, e nesse caso seria bom lancar um StaticInitializaionError().)

O problema provavelmente é que, ou ele nao encontra o cfg.xml, ou ele nao gostou de alguma configuracao dentro do xml.