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+