Erro acessando base ODBC pelo tomcat. urgente!

4 respostas
W

Olá pessoal!

Desenvolvi um web service q realiza uma busca numa base de dados e retorna um array da classe.
Desenvolvi dois métodos:

public musicasDTO[] consultaTeste()

  e 

  public musicasDTO[] consultaMusicas()

no caso do primeiro método, eu preencho na mão o array da classe musicasDTO, justamente para teste, e está funcionando numa boa tanto localmente, como remotamente (sendo q esse remotamente, na verdade é a minha própria máquina - tomcat).
no segundo método, faço uma consulta numa base access odbc q está no meu c:. Quando testo localmente, funciona direito, no entanto, quando testo remotamente, ele tá dando erro. e como é através do WS, nem está aparecendo qual o erro!

alguém pode me ajudar? mesmo estando local, preciso de alguma configuração especial para o odbc, quando está no tomcat?

gente, disponibilizo os fontes se necessário e tudo mais. estou desesperado pq tenho q entregar isso na sexa-feira (é a implementação da minha monografia).

minha linah de conexão com o banco:

conn = DriverManager.getConnection("jdbc:odbc:musicas");

conto com a colaboração de todos!!
obrigado!

4 Respostas

R

Fala Wilder,

Eu já passei por algo parecido uma vez, e o meu erro foi que eu tinha configurado o ODBC na aba “user DNS / fontes de dados do usuário”, e o Tomcat só enxergava se eu tivesse configurado na aba “system DNS / fontes de dados do sistema”.

Espero que seja isso…

Abraços!

W

valeu!!

muito obrigado!!

abraços.

W

fala amigo.
continua sem funcionar, mesmo criando o DNS de sistema.
fiz em mysql e funcionou direito. só teve um porém: só consegui configurar via código direto, ou seja, colocando explicitamente minha string de conexão.
criei um arquivo xml q leio a string e suas configurações. na minha máquina cliente, funciona direito, mas no servidor não. acho q ele não está encontrando o caminho do xml.

na minha máquina, está no mesmo diretório do meu pacote musicas, e o chamo da seguinte forma:

document = builder.parse(new InputSource(new  FileInputStream("musicas/config.xml")));

quando faço o deploy e copio o .jar pro lib do axis, copio junto o config.xml, só q dá erro. onde eu deveria colocar o xml?
:slight_smile:

obigado.

R

Fala cara!

Eu não imagino o que pode estar havendo, mas posso falar o que sei sobre caminhos de diretório que derepente te ajuda.

O lance é que em sistemas Windows/Unix, quando uma aplicação java é iniciada, o diretório corrente é o diretório raiz do projeto que contém a classe main. Ou seja, supondo que eu tenha o seguinte projeto:

c:\Projeto
|
|--------\source
| |
| |---------\pacote1
| | |---------projeto1.class
| | |---------projeto2.class
| |
| |---------\pacote2
| |---------executar.class
|
|--------config.xml

Supondo que o método main esteja na classe executar, para recuperar o config.xml vc pode fazer o seguinte “new FileInputStream(“config.xml”);” ou seja, o diretório corrente é “c:\Projeto”.

Ou então se o config.xml estiver dentro de um dos pacotes, digamos, se vc no Eclipse o arrastou para dentro de uma das pastas de código-fonte.

c:\Projeto
|
|--------\source
| |
| |---------\pacote1
| | |---------projeto1.class
| | |---------projeto2.class
| |
| |---------\pacote2
| |---------config.xml
| |---------executar.class

Desta forma, vc teria que mudar o comando para “new FileInputStream(“source/pacote2/config.xml”);”

Agora, quando vc empacota sua aplicação num arquivo.jar, e joga no axis, quem irá executá-la é o próprio container do tomcat. E aí temos um problema, o diretório corrente não vai ser aonde está o seu .jar e o seu xml. Se vc quiser, pode descobrir qual o diretório que está sendo usado naquele momento, e adaptar a chamada new FileInputStream.

Para isto basta rodar a seguinte linha:

System.out.println(“Meu diretorio é: “+new File(””).getAbsolutePath());

Dependendo do diretório que estiver sendo usado, vc pode fazer o caminho relativo até o arquivo xml.

Não sei se é isso, mas é uma idéia…

Abraços!!

Criado 15 de junho de 2005
Ultima resposta 16 de jun. de 2005
Respostas 4
Participantes 2