Povo !!!
Fiz um sistema de teste em Java com banco de dados Firebird. Usando no servidor da propria maquina windows funciona legal.
Entao instalei o FB SuperServer no linux. Ali criei o database, criei tabelas , acessei o meu sistema legal também (adoro essa coisa de multi plataforma).
Agora quero usar o sistema numa maquina windows apontando pro servidor do FB na maquina linux. Setei a URL para a seguinte : ip:porta:\pasta\nomebanco.fdb e o teste me retorna “failed” com a seguinte mensagem:
"Attempting to connect to:
10.122.160.95:3050:\teste\bonissauro.fdb
Connecting… Failed!
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Unable to complete network request to host “3050”.
Failed to establish a connection.
Invalid argument.
Attempting to connect to services manager… Failed!
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Unable to complete network request to host “3050”.
Failed to establish a connection.
Invalid argument.
Disconnecting from database… Passed!
"
Pelo menos a desconexão deu “Passed” ;-p
O usuário é nosso conhecido SYSDBA e a senha é “masterkey”.
Fui na maquina linux e dei um “NMAP localhost”, onde não me apareceu a porta 3050 aberta, como no MySQL que tem porta 3306. Seria esse o problema? Não faltou, será, um comando pra abrir essa porta? Ou talvez seja a minha URL que esteja errada? O servico INET está ativo me parece ok. Uso o conectiva 10 e a maquina windows é XP sem firewall.
SOCORRO, POR FAVOR…
Abraco a todos
Bonissauro
tenta usar a URL assim:
servidor/porta:caminhodobanco
ex:
10.122.160.95/3050:/teste/bonissauro.fdb
obs:
Lembre-se que linux é sensível a letras maiúsculas e minúsculas, assim 10.122.160.95/3050:/teste/bonissauro.fdb é diferente de 10.122.160.95/3050:/teste/BONISSAURO.FDB e os separadores de diretório é (/) e não a barra ()
qualquer coisa, posta aí.
Janio
[quote=bonissauro]"Attempting to connect to:
10.122.160.95:3050:\teste\bonissauro.fdb[/quote]
[quote=Janio.Barros]tenta usar a URL assim:
servidor/porta:caminhodobanco
ex:
10.122.160.95/3050:/teste/bonissauro.fdb[/quote]
A sintaxe padrão para qualquer URL (descontando parâmetros, etc, etc, etc) é
protocolo://host:porta/recurso
De modo que uma URL completa para acesso ao Firebird seria
jdbc:firebirsql://10.122.160.95:3050/bonissauro.fdb
Notem que o bonissauro escreveu um “:” após a porta, e o Janio.Barros uma “/” antes da porta. Ambas as URLs incorretas.
Eu tinha colocado apenas um resumo: segue aí a sintaxe completa:
jdbc:firebirdsql:host[/port]:/path/to/db.fdb
public class DriverExample
{
// Make a connection to an employee.gdb on your local machine,
// and demonstrate basic JDBC features.
// Notice that main() uses its own local variables rather than
// static class variables, so it need not be synchronized.
public static void main (String args[]) throws Exception
{
// Modify the following hardwired settings for your environment.
// Note: localhost is a TCP/IP keyword which resolves to your local machine's IP address.
// If localhost is not recognized, try using your local machine's name or
// the loopback IP address 127.0.0.1 in place of localhost.
String databaseURL = "jdbc:firebirdsql:localhost/3050:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:native:localhost/3050:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:local:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:embedded:c:/database/employee.gdb";
String user = "sysdba";
String password = "masterkey";
String driverName = "org.firebirdsql.jdbc.FBDriver";
// As an exercise to the reader, add some code which extracts databaseURL,
// user, and password from the program args[] to main().
// As a further exercise, allow the driver name to be passed as well,
// and modify the code below to use driverName rather than the hardwired
// string "org.firebirdsql.jdbc.FBDriver" so that this code becomes
// driver independent. However, the code will still rely on the
// predefined table structure of employee.gdb.
}
Falow
Janio
[quote=Janio.Barros]
String databaseURL = "jdbc:firebirdsql:localhost/3050:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:native:localhost/3050:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:local:c:/database/employee.gdb";
//String databaseURL = "jdbc:firebirdsql:embedded:c:/database/employee.gdb";
[/quote]
Isso funciona mesmo com uma “/” antes do número da porta? Se funciona, mesmo fora do padrão de uma URL, desculpe ter dito que estava incorreto.
[quote=bonissauro]
Fui na maquina linux e dei um “NMAP localhost”, onde não me apareceu a porta 3050 aberta, como no MySQL que tem porta 3306. Seria esse o problema? Não faltou, será, um comando pra abrir essa porta? Ou talvez seja a minha URL que esteja errada? O servico INET está ativo me parece ok. Uso o conectiva 10 e a maquina windows é XP sem firewall.
SOCORRO, POR FAVOR…
Abraco a todos
Bonissauro[/quote]
ta ai o te problema, se ele não estava ouvindo nesta porta, quer dizer que o servidor do banco não esta rodando …
é só startar o servidor e era isto 
ta ai o te problema, se ele não estava ouvindo nesta porta, quer dizer que o servidor do banco não esta rodando … é só startar o servidor e era isto.
Acho que está rodando, mas com certeza não está com a tal porta aberta, porque quando dou o SERVICE FIREBIRD STATUS, me responde que o servidor está rodando…
Meu nmap localhost dá isso, como podem ver, nada se refere ao firebird :
[root@gr1936 beulk]# nmap localhost
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2006-05-02 08:51 BRT
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1649 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
744/tcp open flexlm
779/tcp open unknown
2049/tcp open nfs
3306/tcp open mysql
6000/tcp open X11
32770/tcp open sometimes-rpc3
Nmap run completed – 1 IP address (1 host up) scanned in 1.113 seconds
O nmap não mostra porta de serviços desconhecidos.
Para ter certeza que uma porta está aberta, digite:
nmap -p3050 localhost
Resultado:
PORT STATE SERVICE
3050/tcp open [color=red]unknown[/color]
Ou use:
fuser -n tcp 3050
para encontrar o PID de quem está abrindo essa porta.
Abraços.