Data source no JBoss 4.2.2 GA [RESOLVIDO]

Ola pessoal, estou criando uma aplicação web e na minha classe ConnectionFactory faço a conexao via data source…

o problema eh q no trecho de codigo que cria um objeto DataSource esta retornando null…

segue abaixo as devidas configurações pra q vcs possam analisar e se possivel me ajudar…

jboss-4.2.2.GA\server\projeto\deploy\db2-ds.xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <jndi-name>jdbc/NOME</jndi-name>
    <use-java-context>true</use-java-context>
    <connection-url>jdbc:db2:MEUDB</connection-url>
    <driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class>
    <transaction-isolation>TRANSACTION_READ_UNCOMMITTED</transaction-isolation>
    <user-name>db2inst1</user-name>
    <password>cmsoftware</password>
    <min-pool-size>0</min-pool-size>
    <!-- sql to call when connection is created -->
    <new-connection-sql>select count(*) from mensagem</new-connection-sql>

    <!-- sql to call on an existing pooled connection when it is obtained from pool -->
    <check-valid-connection-sql>select count(*) from mensagem</check-valid-connection-sql>

      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
    <metadata>
        <type-mapping>DB2</type-mapping>
    </metadata>
  </local-tx-datasource>  
</datasources>

jboss-4.2.2.GA\server\projeto\deploy\MEUProjetoEAR.ear\MEUProjetoWeb.war\WEB-INF\web.xml

[code]

<?xml version="1.0" encoding="UTF-8"?> action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml debug 3 detail 3 0 action *.do jdbc/NOME javax.sql.DataSource Container index.jsp

[/code]

jboss-4.2.2.GA\server\projeto\deploy\MeuProjetoEAR.ear\MeuProjetoWeb.war\WEB-INF\jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
 <resource-ref>
   <res-ref-name>jdbc/NOME</res-ref-name>
   <jndi-name>java:/jdbc/NOME</jndi-name>
 </resource-ref>
</jboss-web>

ConnectionFactory.java

public class ConnectionFactory {

	// Log
	private static final Logger log = Logger.getLogger(ConnectionFactory.class);
	
	// JNDI
	public static final String JNDI_NOME = "java:comp/env/jdbc/NOME";
	
	public static Connection getDB2Connection() throws ConnectionFactoryException {
		return getDB2Connection(JNDI_NOME);
	}


	/**
	 * Fornece uma conexão obtida através de um Datasource
	 * @param jndiName
	 * @return Conexão com a base de dados
	 * @throws ConnectionFactoryException
	 */
	public static Connection getDB2Connection(String jndiName)
		throws ConnectionFactoryException {

		Context ctx;
		DataSource ds;
	
		try {
			 ctx = new InitialContext();
			 ds = (DataSource) ctx.lookup(jndiName);    // AQUI ESTA ME RETORNANDO NULL
		} catch (Exception e) {
			log.error(null, e);
			throw new ConnectionFactoryException(e.getMessage());
		}

		Connection conn;

		try {
			conn = ds.getConnection();
		} catch (SQLException e) {
			log.error(null, e);
			throw new ConnectionFactoryException("Erro de conexão com o Banco de Dados");
		}

		try {
			DatabaseMetaData dma = conn.getMetaData();
			log.debug("Conectado a " + dma.getURL() + " usando " + conn.hashCode());
		} catch (Exception e) {}

		return conn;

	}
}

adicionei o arquivo db2java.jar na pasta
\jboss-4.2.2.GA\server\projeto\lib

galera nao sei mais o que tentar…

agradeço a atençao…

kra… tenta formatar a maquina !javascript:emoticon(’:lol:’);
javascript:emoticon(’:lol:’);

[quote=wendellgr]kra… tenta formatar a maquina !javascript:emoticon(’:lol:’);
javascript:emoticon(’:lol:’);[/quote]

ow analista de BBB vc esta sem nada pra fazer??? eh isso???
ahuahuahua…

kra tah foda…

Seguinte,

Faz isso primeiro:

DataSource ds = (DataSource) ic.lookup(“java:jdbc/NOME”);
O Lookup está ok retorna algo ???

Senão der certo tenta o seguinte:

Troca no seu arquivo de configuração do ds troca o true pelo false
false

Isso faz com que vc abra o DS pra acesso remoto, e pelo Jndi também conseguirá fazer lookup sem o prefixo java:/
ic.lookup(“jdbc/NOME”);

[quote=balax]Seguinte,

Faz isso primeiro:

DataSource ds = (DataSource) ic.lookup(“java:jdbc/NOME”);
O Lookup está ok retorna algo ???

Senão der certo tenta o seguinte:

Troca no seu arquivo de configuração do ds troca o true pelo false
false

Isso faz com que vc abra o DS pra acesso remoto, e pelo Jndi também conseguirá fazer lookup sem o prefixo java:/
ic.lookup(“jdbc/NOME”);[/quote]

Ola balax… valew pela atençao…

kra testei a primeira alteraçao q vc falou e continuou retornando null…
quanto a segunda… de setar para false…
apresenta o seguinte erro…

javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: jdbc not bound]

pra tirar o peso da consciência eu criei uma alternativa pra q quando do ds estiver null
usar um metodo que conecta via jdbc puro… e esta rodando blz… o problema esta nesta configuraçao
do ds… creio eu…
segue o metodo…

[code]
try {
if(ds == null)
{
conn = getConnection(); // chama metodo alternativo para testar conexao
}else {
conn = ds.getConnection();
}
} catch (SQLException e) {
log.error(null, e);
throw new ConnectionFactoryException(“Erro de conexão com o Banco de Dados”);
}

//Se não conseguir criar uma conexao via data source executa aqui…
public static Connection getConnection() throws ConnectionFactoryException,
SQLException { //jdbc:db2://<host_name>:/
try {
Class.forName(“COM.ibm.db2.jdbc.app.DB2Driver”);

		log.debug("Conectando ao Banco...");

		return DriverManager.getConnection("jdbc:db2:MEUBD", "usuario", "senha");
	} catch (ClassNotFoundException e) {
		log.error(null, e);
		throw new SQLException(e.getMessage());
	}
}[/code]

criei esta alternativa pra dar sequencia nos meus trabalhos aqui… porem quando o sistema tiver q ih pra produçao vou ter q usar via data source mesmo…
se alguem mais tiver alguma sugestao pra q eu possa testar aqui…

abraço… valew…

Opa… vamos lá entao…
coloca no ds isso aqui dinovo:
false
e manda o lookup com tudo (java:comp/env/jdbc/NOME")

[quote=balax]Opa… vamos lá entao…
coloca no ds isso aqui dinovo:
false
e manda o lookup com tudo (java:comp/env/jdbc/NOME")[/quote]

pois eh balax… eu pensei nisso tbm…
testei das duas formas… e nao fununcio… :frowning:
apresenta o mesmo erro acima…

:frowning:

alguem ai pra ajudar???
pode ser 5 centavos 10 centavos… o que nao lhe fizer falta…

[quote=balax]Opa… vamos lá entao…
coloca no ds isso aqui dinovo:
false
e manda o lookup com tudo (java:comp/env/jdbc/NOME")[/quote]

ola balax…
meu velho consegui aqui…
setei a tag q vc citou como false e mandei o lookup soh com o nome jndi…

// JNDI
public static final String JNDI_NOME = “jdbc/NOME”;
… e funcionou de boa…

daquela forma q eu estava tentando fazer eu consultei de um outro projeto aqui da empresa…
soh q no caso eh usado ejb no projeto… e eu nao estou usando ejb…
vc saberia me explicar o motivo dessa alteração???

valews…