Ошибка при коннекте к Interbase
От: Nicht Россия  
Дата: 28.10.03 10:12
Оценка:
Здравствуйте!

Может кто сталкивался с этим?
Пытаюсь коннектится к Interbase через jdbc Все вроде делаю как у них в мануале написано. Да тяжело в 3 сторчках ошибиться.

А он мне выдает следующую ошибку.

java.lang.VerifyError: (class: interbase/interclient/ErrorKey, method: _$372 signature: (Ljava/lang/String;Ljava/lang/String;I)V) Expecting to find unitialized object on stack
at interbase.interclient.JDBCNet._$125439(JDBCNet.java:92)
at interbase.interclient.JDBCNet.<init>(JDBCNet.java:74)
at interbase.interclient.Connection._$45044(Connection.java:317)
at interbase.interclient.Connection.<init>(Connection.java:285)
at interbase.interclient.Driver.connect(Driver.java:204)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at ConnTest.main(ConnTest.java:18)

И главное, что с этими знаками подчеркивания баксами и прочими циферками распечатка малоинформативна.
Я даже не знаю в какую сторону капать...

Может кто что подскажет?

Заранее спасибо.
Re: Ошибка при коннекте к Interbase
От: Disa Россия  
Дата: 28.10.03 11:24
Оценка:
Здравствуйте, Nicht, Вы писали:


а тебе обязательно через одбс присоединяться

если нет возьми другие драйвера на чистом джаве написаные
они лежат где то здесь
Re: Ошибка при коннекте к Interbase
От: SmaLL75 Россия http://smallweb.narod.ru
Дата: 28.10.03 11:34
Оценка:
Здравствуйте, Nicht, Вы писали:

N>Здравствуйте!


N>Может кто сталкивался с этим?

N>Пытаюсь коннектится к Interbase через jdbc Все вроде делаю как у них в мануале написано. Да тяжело в 3 сторчках ошибиться.

N>А он мне выдает следующую ошибку.


N>java.lang.VerifyError: (class: interbase/interclient/ErrorKey, method: _$372 signature: (Ljava/lang/String;Ljava/lang/String;I)V) Expecting to find unitialized object on stack

N> at interbase.interclient.JDBCNet._$125439(JDBCNet.java:92)
N> at interbase.interclient.JDBCNet.<init>(JDBCNet.java:74)
N> at interbase.interclient.Connection._$45044(Connection.java:317)
N> at interbase.interclient.Connection.<init>(Connection.java:285)
N> at interbase.interclient.Driver.connect(Driver.java:204)
N> at java.sql.DriverManager.getConnection(DriverManager.java:512)
N> at java.sql.DriverManager.getConnection(DriverManager.java:140)
N> at ConnTest.main(ConnTest.java:18)

N>И главное, что с этими знаками подчеркивания баксами и прочими циферками распечатка малоинформативна.

N> Я даже не знаю в какую сторону капать...

N>Может кто что подскажет?


N>Заранее спасибо.


А какой у тебя jdbc-драйвер?
Что ни делается, всЁ к лучшему
Re[2]: Ошибка при коннекте к Interbase
От: Nicht Россия  
Дата: 28.10.03 11:43
Оценка:
Здравствуйте, SmaLL75, Вы писали:


SLL>А какой у тебя jdbc-драйвер?


С этой ошибкой вроде разобрался.
Просто у мебя был драйвер Interclient под старую жавамашину.
Поставил новее.

теперь выдает исключение при попытке коннекта.
interbase.interclient.CommunicationException: [interclient] ?????? ?????: ?????? ?????? ??? ??????? ????????? ?????????? ????? ????? ? ???????? 192.45.0.12.
????????? SocketException: "Connection refused: connect".
???????? ?????????? interbase.interclient ??. ? ??????????? ?? API.CommunicationException
at interbase.interclient.JDBCNet.establishSocketStreams(Unknown Source)
at interbase.interclient.JDBCNet.<init>(Unknown Source)
at interbase.interclient.Connection.connect(Unknown Source)
at interbase.interclient.Connection.<init>(Unknown Source)
at interbase.interclient.Driver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at ConnTest.main(ConnTest.java:18)

Уже лучше, но тоже странно.

Знаки вопроса не я ставил Это они сами!

Залез в описание по этому исключению. там пишут, что проверте порт на сервере. Должен быть 3060. Он и есть. Там еще написано, что типа он скорее всего не может открыть TCP соединение. А почему я понять не могу.
Сервер то работает. Другие тулы к нему коннектятся.
Re[3]: Ошибка при коннекте к Interbase
От: SmaLL75 Россия http://smallweb.narod.ru
Дата: 28.10.03 11:58
Оценка:
Здравствуйте, Nicht, Вы писали:

N>Здравствуйте, SmaLL75, Вы писали:



SLL>>А какой у тебя jdbc-драйвер?


N>С этой ошибкой вроде разобрался.

N>Просто у мебя был драйвер Interclient под старую жавамашину.
N>Поставил новее.

N>теперь выдает исключение при попытке коннекта.

...........

Забей на интерклиента, поставь jdbc-драйвер с http://www.ibase.ru, как рекомендовал Disa
Что ни делается, всЁ к лучшему
Re[4]: Ошибка при коннекте к Interbase
От: Nicht Россия  
Дата: 28.10.03 12:26
Оценка:
SLL>Забей на интерклиента, поставь jdbc-драйвер с http://www.ibase.ru, как рекомендовал Disa

Так уже!
Re[5]: Ошибка при коннекте к Interbase
От: iAlexander Россия  
Дата: 18.04.05 06:03
Оценка:
Привет всем!

Проблема не решена, как я понял А у меня то же самое: нужно подконнектиться к interbase.
У меня InterBase Server 5.5.0.742, JavaTM 2 SDK, Standard Edition Version 1.5.0.
Как коннектиться, читал сперва на www.ibphoenix.com, а затем еще в других местах.

interclient.jar брал сразу пропатченный (поддержка русских символов включена)
А касательно 'jdbc2_0-stdext.jar' следующее: на сайте Sun есть ссылка на javax.sql package is also called the JDBC 2.0 Optional Package API (formerly known as the JDBC 2.0 Standard Extension API). Я скачал его и добавил в CLASSPATH, но в моем пакете src.zip уже была какая-то реализация javax.sql.
То есть я дополнительно предоставил Java'е и interclient.jar, и jdbc2_0-stdext.jar.

И вот, при попытке коннекта:
        try {
            Class.forName("interbase.interclient.Driver");
            String username = "SYSDBA";
            String passwd = "masterkey";
            String url = "jdbc:interbase://localhost/database/dbarch_net.gdb";

            logger.info("Try to get Connection");
            // The following line actually starts up the database connection:
            Connection con = DriverManager.getConnection(url, username, passwd);
            logger.info("Connection has gotten successfully");
        catch (SQLException se) {
            logger.fatal("Exception executing the database connection: ", se);
            return;
        }

В консоле имею:
2005-04-18 09:42:53,691: INFO  [main] IBTest - Try to get Connection
2005-04-18 09:42:54,816: FATAL [main] IBTest - Exception executing the database connection: 
interbase.interclient.CommunicationException: [interclient] Ошибка связи: ошибка сокета при попытке установки соединения через сокет с сервером localhost.
Сообщение SocketException: "Connection refused: connect".
Описание исключения interbase.interclient см. в справочнике по API.CommunicationException
    at interbase.interclient.JDBCNet.establishSocketStreams(JDBCNet.java:92)
    at interbase.interclient.JDBCNet.<init>(JDBCNet.java:74)
    at interbase.interclient.Connection.connect(Connection.java:317)
    at interbase.interclient.Connection.<init>(Connection.java:285)
    at interbase.interclient.Driver.connect(Driver.java:204)
    at java.sql.DriverManager.getConnection(DriverManager.java:523)
    at java.sql.DriverManager.getConnection(DriverManager.java:171)
    at IBTest.main(IBTest.java:49)


И то же самое при

            // Set the standard properties
            DataSource dataSource = new interbase.interclient.DataSource();
            /* set the network protocol */
            dataSource.setNetworkProtocol("jdbc:interbase:");
            /* the hostname or IP address of the server */
            dataSource.setServerName("localhost");
            /* the full path to your database file */
            dataSource.setDatabaseName("dbarch_net.gdb");
            /* a descriptive name */
            dataSource.setDataSourceName("IBArch");
            /* a descriptive comment */
            dataSource.setDescription("SomeDescription");
            /* the TCP port Interclient listens on by default */
            dataSource.setPortNumber(3060);
            /* set the InterBase role to use */
            dataSource.setRoleName("MyRole");
            /* set the login timeout to 10 seconds */
            dataSource.setLoginTimeout(10);

            // Set the non-standard properties
            /* Perform a sweep when connecting */
            dataSource.setSweepOnConnect(false);
            logger.info("Try to get Connection");
            // The following line actually starts up the database connection:
            DataBase = dataSource.getConnection(username, passwd);
            logger.info("Connection has gotten successfully");


Документации для interclient.jar я не нашел (да и его-то сам только с левого сайта скачал) — может, кто-нибудь обладает?
Borland просто так не раздает. Так что про API.CommunicationException я прочитать не могу
Как лечить такое отсутствие коннекта? Я что-то делаю не так?
Re[6]: Ошибка при коннекте к Interbase
От: iAlexander Россия  
Дата: 18.04.05 16:46
Оценка:
Посмотрел, что буржуи пишут, и вообще по нету...
На java.sun.com таких вопросов куча, только ответов нет...
У одного нашего Interbase server не запущен был здесь, в другом месте буржуи то же самое говорят. Я уже испугался, не помрачение ли нашло: но нет, ibserver работает, да чего там, ведь IB Expert нормально коннектится к базе...
Есть ли у кого соображения? (извиняюсь, что сам поднимаю тему)
Re[7]: Ошибка при коннекте к Interbase
От: iAlexander Россия  
Дата: 19.04.05 07:49
Оценка:
Итак, отвечаю сам на свои вопросы и надеюсь, что это кому-нибудь поможет в будущем.

Установление соединения с InterBase сервером на Java
Для этого нам необходимо:
1) запущенный InterBase сервер (очевидно )
2) Сервер коммуникации между java и Interbase — InterClient. Взять можно с sourceforge.net, interclient_201_Win32.zip. Установка его не совсем тривиальна, после запуска Setup.exe нужно дополнительно будет выполнить действия из файла Readme.txt. Именно с этим сервером через 3060 порт происходит общение вашей программы на java.
NOTE! If you try to use InterClient to connect to InterBase, you will get errors if InterBase and InterServer are not both running.
То есть, мы при запуске своей программы мы должны держать запущенными оба сервера. (Можно зарегистрировать их как сервисы)
3) Пакет interclient.jar. Он входит в Interclient, его путь нужно добавить в CLASSPATH. Можно использовать пропатченный interclient.jar
Он должен корректно работать с русскими символами, в отличие от оригинального.

После этого код
            Class.forName("interbase.interclient.Driver");
            String username = "SYSDBA";
            String passwd = "masterkey";
            String url = "jdbc:interbase://localhost:3060/E:/InterBas/Database/db_net.gdb";

            System.out.println("Try to get Connection");
            // The following line actually starts up the database connection:
            Connection con = DriverManager.getConnection(url, username, passwd);
            System.out.println("Connection has gotten successfully");

должен успешно соединить вас с БД.

А вообще отличная вещь — форум. Гуру изо всех сил помогают новичкам. Глядя на это, даже сам как-то становишься...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.