Acessar Firebird numa maquina linux a partir do XP

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 :smiley:

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.