JBoss + HAR + JNDI

0 respostas
K

Coe galera.. to quebrando a cabeça p fazer uma consulta no BD.. vamos as configurações:

meuprograma-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<datasources>  
	<local-tx-datasource>  
		<jndi-name>PostgresDS</jndi-name> 
		<use-java-context>true</use-java-context> 
		<connection-url>jdbc:postgresql://localhost/Teste</connection-url>  
		<driver-class>org.postgresql.Driver</driver-class>
		<user-name>postgres</user-name>  
		<password>3c257903b92d97bf</password>
		<min-pool-size>5</min-pool-size>
		<max-pool-size>100</max-pool-size>
    <metadata>
        <type-mapping>PostgreSQL 8.0</type-mapping>
    </metadata>		
	</local-tx-datasource>  
</datasources>
meuprogramaDB.har META-INF\hibernate-service.xml
<server>
    <mbean code="org.jboss.hibernate.jmx.Hibernate" name="jboss.har:service=Hibernate"> 
        <attribute name="DatasourceName">java:/PostgresDS</attribute> 
        <attribute name="Dialect">org.hibernate.dialect.PostgreSQLDialect</attribute> 
        <attribute name="SessionFactoryName">java:/hibernate/MeuSessionFactory</attribute>
        <attribute name="CacheProviderClass">org.hibernate.cache.HashtableCacheProvider</attribute>
        <attribute name="ShowSqlEnabled">true</attribute>
    </mbean>
</server>

Até aki tudo ocorre na boa! ele cria o JNDI tudo certinho o problema da na configuração da aplicação. Vamos a ela..

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 name="java:/hibernate/MeuSessionFactory">
	<property name="hibernate.c3p0.max_size">500</property>  
	<property name="hibernate.c3p0.min_size">2</property>  
	<property name="hibernate.c3p0.timeout">100</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> 
    </session-factory>

</hibernate-configuration>

Minha classe de conexao:
HibernateSessionFactory.java

package spc.dao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.jboss.hibernate.session.HibernateContext;
public class HibernateSessionFactory {
	private static Logger LOGGER = Logger.getLogger(HibernateSessionFactory.class);
	private static final Configuration cfg = new Configuration();

	private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
	private static SessionFactory sessionFactory;

	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

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

	public static Session currentSession() throws HibernateException {
		Session session = (Session) threadLocal.get();
		if (session == null) {
			if (sessionFactory == null) {
				try {
					cfg.configure(CONFIG_FILE_LOCATION);
					sessionFactory = cfg.buildSessionFactory();
				}
				catch (Exception e) {
					System.err.println("%%%% Error Creating SessionFactory %%%%");
					e.printStackTrace();
				}
			}
			session = sessionFactory.openSession();
			threadLocal.set(session);
		}
		return session;
	}
	private HibernateSessionFactory() {
	}
}

Minha conexao para está OK porque o objeto sessionFactory não está nulo e o método currentSession() retorna um endereço de sessão.

quando Executo o seguinte método:
public List getElements(Class classe) throws DAOException {
		List listaValores = null;
		Criteria consulta = null;
		try {
			consulta = conexao.createCriteria(classe);
			listaValores = consulta.list();
		} catch (HibernateException e) {
			e.printStackTrace();
			throw new DAOException(e.getMessage());
		}
		return listaValores;
	}
Ocorre o seguinte erro:
2008-07-18 14:59:54,953 ERROR [STDERR] org.hibernate.MappingException: Unknown entity: spc.dto.UsuarioDTO
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:68)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
	at spc.dao.HibernateDAO.getElementById(HibernateDAO.java:201)
	at spc.bo.UsuarioBO.getElementByPassWord(UsuarioBO.java:118)
	at spc.view.UsuarioAction.login(UsuarioAction.java:317)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)

Parece que não está enxergando minhas classe que estão no HAR.
como resolver? EJB? :?

Outra dúvida eu setei p exibir as SQL porém no log não mostrou nada, e está no modo DEBUG meu log4j.properties

VLW!

Criado 18 de julho de 2008
Respostas 0
Participantes 1