Problemas com JBoss e JNDI!

galera, to desde as 15 hrs de hoje (ja sao 20:10) tentando entender como (e por que) pode ser tao dificil configurar um simples datasource no JBoss 5.1…

vejam o log e tentem me explicar como isso é possivel.

durante o startup do JBoss o log diz:

INFO  [org.jboss.resource.connectionmanager.ConnectionFactoryBindingService] (main) Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=pg_saturnoDS' to JNDI name 'java:pg_saturnoDS'

entao eu vou na JSP da minha aplicaçao e clico no botao que faz um select simples, e ai o Log me diz:

INFO  [org.hibernate.impl.SessionFactoryObjectFactory] (http-127.0.0.1-8080-1) Not binding factory to JNDI, no JNDI name configured

como ele pode falar quem tem o JNDI configurado e depois falar que nao consegue achar o JNDI??? :evil: :evil: :evil: :evil: :evil: :evil:

a cada vez que a Red Hat lança uma nova versao do JBoss eu fico mais decepcionado ainda com a falta de compromisso dela com o projeto JBoss…
manual de como configurar datasource no JBoss --> escrito em 2004
JBoss 5.1 --> lanácdo em 2009
fazer um DS no JBoss5.1 com um manual de 2004 = ERROR!!!
isso pra mim é falta de responsabildiade, massss muita gente discorda de mim, afinal, quem vai falar mal de uma empresa grande como a Red Hat rrsrs

alguem pode me ajudar? vlw

cara,

seu arquivo ds.xml ta assim

<datasources> 
  <local-tx-datasource> 
 
    <jndi-name>TesteDS</jndi-name> 
    <connection-url>jdbc:mysql://localhost:3306/teste</connection-url> 
    <driver-class>com.mysql.jdbc.Driver</driver-class> 
 
    <user-name>root</user-name> 
    <password>senha</password> 
	
    <!-- Typemapping for JBoss 4.0 --> 
    <metadata> 
      <type-mapping>mySQL</type-mapping> 
    </metadata> 
 
  </local-tx-datasource> 
</datasources>

e vc acessa ele assim

java:/TesteDS

t+

creio estar tudo certo

pg_saturno-ds.xml

<datasources>
	  <local-tx-datasource>
	    <jndi-name>pg_saturnoDS</jndi-name>
		    <connection-url>jdbc:postgresql://localhost:5432/saturno</connection-url>
		    <driver-class>org.postgresql.Driver</driver-class>
		    <user-name>postgres</user-name>
		    <password>spartacus</password>	
		    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
		    <metadata>
		       <type-mapping>PostgreSQL 7.2</type-mapping>
		    </metadata>
	  </local-tx-datasource>
</datasources>[/code]

web.xml
[code]	<resource-ref>
		<res-ref-name>jdbc/pg_saturno</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>[/code]

jboss-web.xml >> está como na estrutura que voce disse   [b]  <jndi-name>java:/pg_saturnoDS</jndi-name>[/b]
[code]<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>    
    <resource-ref>
        <res-ref-name>jdbc/pg_saturno</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/pg_saturnoDS</jndi-name>
    </resource-ref>
</jboss-web> [/code]

persistence.xml
[code]<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
 version="1.0">
 
<persistence-unit name="LaboratorioWeb">
   <jta-data-source>pg_saturno-ds.xml</jta-data-source> 
</persistence-unit>
</persistence>

cara,

nao precisa dessas configurações no web.xml e no jboss-web.xml, basta vc colocar assim no persistence.xml

<jta-data-source>java:/pg_saturnoDS</jta-data-source>

t+

o erro agora pelo menos mudou!
é

[DatasourceConnectionProvider] Could not find datasource: java:comp/env/jdbc/pg_saturno javax.naming.NameNotFoundException: jdbc not bound

deve ser onde configuro o hibernate…
eu configuro programaticamente. atualmente ta assim

[code]ac = new AnnotationConfiguration();

		/* Configuração do DATASOURCE*/
		ac.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/pg_saturno" );[/code]

remove isso ai tbm,

pq vc ja informando ao persitence.xml seu DS.

cara, falai quais os framework que vc ta usando em seu projeto

t+

colega, de framework é so o Hibernate 3.5 …
o resto é lib obrigatoria do JBoss e driver JDBC

sim, blz

quero saber os outros que vc ta usando em seu projeto, tipo, JSF, EJB

t+

nao tem JSF nem EJB…
tem as libs do javassist, jta, slf4-api, slf4-jboss, dom4j, common-logging, c3p0, activivation, entre outras, mas nada de outros frameworks…

precisa postar seus jar todos nao…rsrs
mas deixa

resolveu seu problema?

t+

nao, ainda to tendando resolver o

[DatasourceConnectionProvider] Could not find datasource: java:comp/env/jdbc/pg_saturno javax.naming.NameNotFoundException: jdbc not bound

so remover essa configuração

ac.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/pg_saturno" );  

t+

retirando isso voltou a ocorrer o primeiro problema

INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured

:?

cara,

seu persitence.xml ficou assim

<?xml version="1.0" encoding="UTF-8"?>  
  
<persistence xmlns="http://java.sun.com/xml/ns/persistence"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"  
version="1.0">  
  
<persistence-unit name="LaboratorioWeb">  
   <jta-data-source>java:/pg_saturnoDS</jta-data-source>   
   <properties>			
		<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
	</properties>
</persistence-unit>  
</persistence> 

remova as configurações de banco do web.xml e jboss-web.xml, e se vc tiver setando mas alguma configuração, remova tbm

t+

retirei aquelas anotaçoes do web.xml, retirei o jboss-web.xml e deixei o persistence.xml como voce falou, apenas alterei o dialect para postgre, e continua com

[DatasourceConnectionProvider] Could not find datasource: java:comp/env/jdbc/pg_saturno javax.naming.NameNotFoundException: jdbc not bound

posta ai,

como vc criar o entitymanager.

t+

o entity ta assim

[code]
@Entity
@Table(name = “carro”)
public class VOCarro {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id_carro;

@Column(name = "proprietario")
private String proprietario;

@Column(name = "modelo")
private String modelo;

@Column(name = "comb")
private char comb;

@Column(name = "marca")
private int marca;

public VOCarro(HttpServletRequest request) {
	this.proprietario = request.getParameter("proprietario");
	this.modelo = request.getParameter("modelo");
	this.marca = Integer.parseInt(request.getParameter("marca"));
	this.comb = request.getParameter("combustivel").charAt(0);
}

//get e setters[/code]

entao cara,

quero saber como vc queria o seu entitymanager.
nao as suas entidades

t+

como eu havia dito, fiz programaticamente
na num bloco static

[code] ac = new AnnotationConfiguration();

		/* Configuração do DATASOURCE*/

// ac.setProperty(“hibernate.connection.datasource”, “java:comp/env/jdbc/pg_saturno” );

		ac.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
		ac.setProperty("hibernate.current_session_context_class", "thread");
		ac.setProperty("hibernate.show_sql", "true");
		ac.setProperty("hibernate.format_sql", "true");
		ac.setProperty("hibernate.connection.pool_size", "2");
		
		/* Configurar pool C3P0 */
		ac.setProperty("hibernate.c3p0.acquire_increment", "2");
		ac.setProperty("hibernate.c3p0.idle_test_period", "360");
		ac.setProperty("hibernate.c3p0.max_size", "5");
		ac.setProperty("hibernate.c3p0.max_statements", "5");
		
		ac.addAnnotatedClass(laboratorioWEB.carros.vo.VOCarro.class);
                    ac.configure().buildSessionFactory();[/code]

cara,

seu persistence.xml está na pasta src/META-INF?

t+