Problemas com JBoss e JNDI!

23 respostas
V

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

23 Respostas

A

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+

V

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>
web.xml
<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>
jboss-web.xml >> está como na estrutura que voce disse java:/pg_saturnoDS
<?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>
persistence.xml
<?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>
A

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+

V

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

ac = new AnnotationConfiguration();
			
			/* Configuração do DATASOURCE*/
			ac.setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/pg_saturno" );
A

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+

V

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

A

sim, blz

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

t+

V

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…

A

precisa postar seus jar todos nao…rsrs
mas deixa

resolveu seu problema?

t+

V

nao, ainda to tendando resolver o

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

A

so remover essa configuração

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

t+

V

retirando isso voltou a ocorrer o primeiro problema

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

:?

A

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+

V

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

A

posta ai,

como vc criar o entitymanager.

t+

V

o entity ta assim

@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
A

entao cara,

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

t+

V

como eu havia dito, fiz programaticamente
na num bloco static

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();
A

cara,

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

t+

V

sim, esta no META-INF e esta exatamente como postei anteriormente… =/
e continuo com esse erro

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

o context.xml esta assim

<Resource name="jdbc/pg_saturno" auth="Container" type="javax.sql.DataSource" username="postgres" password="spartacus" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost/saturno" maxActive="8" maxIdle="4"/> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" connectionName="postgres" connectionPassword="spartacus" connectionURL="jdbc:postgresql://localhost/saturno" debug="0" driverName="org.postgresql.Driver"/> <ResourceLink global="jdbc/pg_saturno" name="jdbc/pg_saturno" type="javax.sql.DataSource"/>

ta tenso a coisa aqui…

A

cara,

e esse arquivo context.xml, para que vc ta usando isso?

t+

V

nao precisa?
preciso dele no tomcat, imaginei que precisasse aqui! oO

A

precisa nao

Criado 30 de outubro de 2011
Ultima resposta 30 de out. de 2011
Respostas 23
Participantes 2