HIBERNATE: Problemas com DataSource no TOMCAT

0 respostas
T

Ola á pessoal
Estou tentanto usar o Hibernate em uma pequena aplicação rodando no TOMCAT.
Ela rodou legal em uma aplicação desktop, mas quando tento usar o tomcat fornecendo um DataSource…aí que as coisas complicam.

Eu estou recebendo uma mensagem que diz que nao consegui fazer o BIND do SessionFactory com o JNDI.

Alguem tem alguma observação, dica ou sugestao???

Obrigado.

Seguem os codigos:

context.xml:

<!-- The contents of this file will be loaded for each web application -->
<Context path="/Usuarios" reloadable="true" docBase="Usuarios" debug="5"
crossContext="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <Resource name="jdbc/Usuarios"
              scope="Shareable"
              type="javax.sql.DataSource"
              auth="Celso"
              username="BLABLA"
              password="*****"
              driverClassName="oracle.jdbc.driver.OracleDriver"
              url="jdbc:oracle:thin:@192.168.1.150:1521:BLABLA"
              maxActive="8"
              maxIdle="8"
              maxWait="5000"/>
</Context>

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
 version="2.4">

	<listener>
        <listener-class>listener.HibernateListener</listener-class>
    </listener>

	<display-name>Sistema Controle Usuario</display-name>
	<description>
		Descritor do contexto de desenvolvimento.
	</description>


	<servlet>
		<servlet-name>usuarios-invoker</servlet-name>
		<servlet-class>
			org.apache.catalina.servlets.InvokerServlet
		</servlet-class>
		<init-param>
			<param-name>debug</param-name>
			<param-value>0</param-value>
		</init-param>

	</servlet>


	<servlet-mapping>
		<servlet-name>usuarios-invoker</servlet-name>
		<url-pattern>/servlet/*</url-pattern>
	</servlet-mapping>


   <resource-ref>
                 <description>Tentativa de criar um Pool de Conexões usando as implementações do Próprio TOMCAT</description>
                 <res-ref-name>jdbc/Usuarios</res-ref-name>
                 <res-type>javax.sql.DataSource</res-type>
                 <res-auth>Celso</res-auth>
   </resource-ref>

</web-app>

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>
         <!--DIALETO DO BANCO(ORACLE)-->
         <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
         <!--DIALETO DO BANCO(ORACLE)-->

         <!-- CONFIGURACOES DE DEBUG-->
         <property name="hibernate.show_sql">true</property>
         <property name="hibernate.generate_statistics">true</property>
         <property name="hibernate.use_sql_comments">true</property>
         <property name="hibernate.format_sql">true</property>
         <!-- CONFIGURACOES DE DEBUG-->

         <!--BUSCANDO O DATASOURCE(DBCP) DO TOMCAT-->
         <property name="hibernate.connection.datasource">java:comp/env/jdbc/Usuarios</property>
         <!--BUSCANDO O DATASOURCE(DBCP) DO TOMCAT-->

         <!--DESABILITAR CACHE DE SEGUNDO NIVEL-->
         <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
         <!--DESABILITAR CACHE DE SEGUNDO NIVEL-->

         <!-- Bind the getCurrentSession() method to the thread. -->
         <property name="current_session_context_class">thread</property>
         <!-- Bind the getCurrentSession() method to the thread. -->

         <!--FONTE DE MAPEAMENTO-->
         <mapping resource="usuario/entidade/C01_ADM__GE__USUARIO.hbm.xml"/>
         <!--FONTE DE MAPEAMENTO-->
     </session-factory>
</hibernate-configuration>

C01_ADM__GE__USUARIO.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
   <class name="usuario.entidade.C01_ADM__GE__USUARIO" table="C01_ADM__GE__USUARIO">
          <id name="C01_ADM_GE_USUA_CODIGO" type="string" column="C01_ADM_GE_USUA_CODIGO">
              <generator class="assigned"/>
          </id>
          <property name="C01_ADM_GE_USUA_SETOR"        type="string"    column="C01_ADM_GE_USUA_SETOR"/>
          <property name="C01_ADM_GE_USUA_NOME"         type="string"    column="C01_ADM_GE_USUA_NOME"/>
          <property name="C01_ADM_GE_USUA_SENHA"        type="string"    column="C01_ADM_GE_USUA_SENHA"/>
          <property name="C01_ADM_GE_USUA_CARGO"        type="string"    column="C01_ADM_GE_USUA_CARGO"/>
          <property name="C01_ADM_GE_USUA_ATENDE"       type="string"    column="C01_ADM_GE_USUA_ATENDE"/>
          <property name="C01_ADM_GE_USUA_SITUACAO"     type="integer"   column="C01_ADM_GE_USUA_SITUACAO"/>
          <property name="C01_ADM_GE_USUA_DATA"         type="timestamp" column="C01_ADM_GE_USUA_DATA"/>
          <property name="C01_ADM_GE_USUA_MATRICULA"    type="integer"   column="C01_ADM_GE_USUA_MATRICULA"/>
          <property name="C01_ADM_GE_USUA_ALTSENHA"     type="string"    column="C01_ADM_GE_USUA_ALTSENHA"/>
          <property name="C01_ADM_GE_USUA_HABILITADO"   type="string"    column="C01_ADM_GE_USUA_HABILITADO"/>
          <property name="C01_ADM_GE_USUA_CNH_REGISTRO" type="integer"   column="C01_ADM_GE_USUA_CNH_REGISTRO"/>
          <property name="C01_ADM_GE_USUA_CNH_CATEG"    type="string"    column="C01_ADM_GE_USUA_CNH_CATEG"/>
          <property name="C01_ADM_GE_USUA_STATUS_ATEND" type="string"    column="C01_ADM_GE_USUA_STATUS_ATEND"/>
          <property name="C01_ADM_GE_USUA_OPCAO"        type="string"    column="C01_ADM_GE_USUA_OPCAO"/>
          <property name="C01_ADM_GE_USUA_EMAIL"        type="string"    column="C01_ADM_GE_USUA_EMAIL"/>
          <property name="C01_ADM_GE_USUA_RAMAL"        type="string"    column="C01_ADM_GE_USUA_RAMAL"/>
          <property name="C01_ADM_GE_USUA_DTNASC"       type="timestamp" column="C01_ADM_GE_USUA_DTNASC"/>
   </class>

</hibernate-mapping>

HibernateListener.java(classe executada na inicialização do TOMCAT)

package listener;

import javax.servlet.*;
import util.HibernateUtility;

public class HibernateListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        HibernateUtility.getSessionFactory(); // Just call the static initializer of that class
    }

    public void contextDestroyed(ServletContextEvent event) {
        HibernateUtility.getSessionFactory().close(); // Free all resources
    }
}

HibernateUtility.java:

package util;

import org.hibernate.*;
import org.hibernate.cfg.*;
import org.apache.commons.logging.*;
import javax.naming.*;



public class HibernateUtility
{
    private static Log log = LogFactory.getLog(HibernateUtility.class);
    private static final SessionFactory factory;
    public static final ThreadLocal session = new ThreadLocal();

    static
    {
        try
        {
            //Cria a Fabrica de sessao a partir do hibernate.cfg.xml
            factory = new Configuration().configure().buildSessionFactory();
        }
        catch(Throwable e)
        {
            log.error("ERRO AO CRIAR A FABRICA DE SESSAO INICIAL.");
            e.printStackTrace();
            throw new ExceptionInInitializerError(e);
        }
    }

    public static Session currentSession() throws HibernateException
    {
        Session s = (Session) session.get();
        if (s==null)
        {
            s = factory.openSession();
            session.set(s);
        }
        return s;
    }

    public static void closeSession() throws HibernateException
    {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null)
        {
            s.close();
        }
    }

    public static SessionFactory getSessionFactory()
    {
        return factory;
    }


}

Mensagem no LOG:

14:58:20,758  INFO Environment:525 - using CGLIB reflection optimizer
14:58:20,768  INFO Environment:555 - using JDK 1.4 java.sql.Timestamp handling
14:58:21,429  INFO Configuration:1308 - configuring from resource: /hibernate.cfg.xml
14:58:21,429  INFO Configuration:1285 - Configuration resource: /hibernate.cfg.xml
14:58:23,743  INFO Configuration:469 - Reading mappings from resource: usuario/entidade/C01_ADM__GE__USUARIO.hbm.xml
14:58:24,694  INFO HbmBinder:309 - Mapping class: usuario.entidade.C01_ADM__GE__USUARIO -> C01_ADM__GE__USUARIO
14:58:25,065  INFO Configuration:1419 - Configured SessionFactory: null
14:58:25,746  INFO NamingHelper:26 - JNDI InitialContext properties:{}
14:58:25,776  INFO DatasourceConnectionProvider:61 - Using datasource: java:comp/env/jdbc/Usuarios
14:58:38,053  INFO SettingsFactory:77 - RDBMS: Oracle, version: Oracle8i Release 8.1.6.0.0 - Production
JServer Release 8.1.6.0.0 - Production
14:58:38,063  INFO SettingsFactory:78 - JDBC driver: Oracle JDBC driver, version: 10.1.0.2.0
14:58:38,274  INFO Dialect:103 - Using dialect: org.hibernate.dialect.OracleDialect
14:58:38,354  INFO TransactionFactoryFactory:34 - Transaction strategy: org.hibernate.transaction.JTATransactionFactory
14:58:38,374  INFO NamingHelper:26 - JNDI InitialContext properties:{}
14:58:38,384  INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
14:58:38,384  INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
14:58:38,394  INFO SettingsFactory:125 - Automatic flush during beforeCompletion(): disabled
14:58:38,394  INFO SettingsFactory:129 - Automatic session close at end of transaction: disabled
14:58:38,414  INFO SettingsFactory:136 - JDBC batch size: 15
14:58:38,414  INFO SettingsFactory:139 - JDBC batch updates for versioned data: disabled
14:58:38,434  INFO SettingsFactory:144 - Scrollable result sets: enabled
14:58:38,434  INFO SettingsFactory:152 - JDBC3 getGeneratedKeys(): disabled
14:58:38,434  INFO SettingsFactory:160 - Connection release mode: auto
14:58:38,444  INFO SettingsFactory:187 - Default batch fetch size: 1
14:58:38,454  INFO SettingsFactory:191 - Generate SQL with comments: enabled
14:58:38,464  INFO SettingsFactory:195 - Order SQL updates by primary key: disabled
14:58:38,474  INFO SettingsFactory:338 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
14:58:38,494  INFO ASTQueryTranslatorFactory:24 - Using ASTQueryTranslatorFactory
14:58:38,494  INFO SettingsFactory:203 - Query language substitutions: {}
14:58:38,504  INFO SettingsFactory:209 - Second-level cache: enabled
14:58:38,504  INFO SettingsFactory:213 - Query cache: disabled
14:58:38,504  INFO SettingsFactory:325 - Cache provider: org.hibernate.cache.NoCacheProvider
14:58:38,534  INFO SettingsFactory:228 - Optimize cache for minimal puts: disabled
14:58:38,564  INFO SettingsFactory:237 - Structured second-level cache entries: disabled
14:58:38,634  INFO SettingsFactory:257 - Echoing all SQL to stdout
14:58:38,634  INFO SettingsFactory:264 - Statistics: enabled
14:58:38,634  INFO SettingsFactory:268 - Deleted entity synthetic identifier rollback: disabled
14:58:38,644  INFO SettingsFactory:283 - Default entity-mode: pojo
14:58:38,965  INFO SessionFactoryImpl:154 - building session factory
14:58:42,450  INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
Criado 21 de agosto de 2006
Respostas 0
Participantes 1