Встроенная конфигурация Firebird и Log4j

Я пытаюсь настроить и использовать встроенный Firebird с log4j. По сути, я хочу записывать свои записи в таблицу БД (Firebird). Я не могу сделать это из-за ошибки «Отказ в соединении», полный стек вызовов, вставленный ниже.

Была одна возможность для этой ошибки, которая заключалась в несоответствии 32-битных и 64-битных библиотек, используемых/вызываемых, но если я напишу простую java-программу и использую Jaybird-full-2.2.9.jar, я смогу подключиться и получить данные. Кажется, это проблема при использовании файла свойств log4j.

Любая помощь в этом приветствуется.

    log4j:ERROR Failed to excute sql
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host "localhost".
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:120)
    at org.firebirdsql.jdbc.AbstractDriver.connect(AbstractDriver.java:138)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at org.apache.log4j.jdbc.JDBCAppender.getConnection(JDBCAppender.java:251)
    at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:215)
    at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:289)
    at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:186)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
    at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
    at org.apache.log4j.Category.callAppenders(Category.java:206)
    at org.apache.log4j.Category.forcedLog(Category.java:391)
    at org.apache.log4j.Category.info(Category.java:666)
    at com.xip.engines.Log4jAuditLoggerImpl.insert_AuitdLog(Log4jAuditLoggerImpl.java:20)
    at com.xip.engines.Log4jAuditLoggerImpl.main(Log4jAuditLoggerImpl.java:40)
Caused by: org.firebirdsql.gds.GDSException: Unable to complete network request to host "localhost".
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.connect(AbstractJavaGDSImpl.java:1876)
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.internalAttachDatabase(AbstractJavaGDSImpl.java:431)
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscAttachDatabase(AbstractJavaGDSImpl.java:411)
    at org.firebirdsql.jca.FBManagedConnection.<init>(FBManagedConnection.java:105)
    at org.firebirdsql.jca.FBManagedConnectionFactory.createManagedConnection(FBManagedConnectionFactory.java:509)
    at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:65)
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:118)
    ... 14 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.openSocket(AbstractJavaGDSImpl.java:1969)
    at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.connect(AbstractJavaGDSImpl.java:1852)
    ... 20 more

Вот файл свойств log4j, который я использую.

# Define the root logger with file appender
log4j.rootLogger = ALL, DB
#log4j.category.org.firebirdsql=ALL, stdout
# Define the file appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DB.URL=jdbc\:firebirdsql\://localhost\:3050/C\:\\xxxx\\xxxxx.FDB
log4j.appender.DB.URL=jdbc\:firebirdsql\://embedded\:C\:\\C\:\\xxxx\\xxxxx.FDB
#log4j.appender.DB.URL=jdbc\:firebirdsql\://local\:C\:\\C\:\\xxxx\\xxxxx.FDB
# Set Database Driver
log4j.appender.DB.driver=org.firebirdsql.jdbc.FBDriver
# Set database user name and password
log4j.appender.DB.user=SYSDBA
#log4j.appender.DB.password=masterkey
log4j.appender.DB.password=
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO AUDITLOG VALUES (null,'%d{yyyy-MM-dd HH:mm:ss}', '%m', '%X{Type}', '%X{UserName}')
# Define the xml layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

person Maruthi    schedule 13.04.2016    source источник
comment
Ошибка указывает на то, что вы используете не встроенный протокол Firebird, а обычный (java) протокол для подключения к серверу Firebird. Покажите URL-адрес JDBC, который вы используете для подключения (и остальную часть конфигурации приложения log4j JDBC). См. также Формат URL-адреса JDBC, встроенный сервер в примечаниях к выпуску Jaybird.   -  person Mark Rotteveel    schedule 13.04.2016
comment
Привет Марк, Спасибо за ваш ответ. Я обновил свой вопрос, указав содержимое файла свойств Log4j.   -  person Maruthi    schedule 14.04.2016


Ответы (1)


Вы используете неверный URL-адрес, URL формат для встроенного:

jdbc:firebirdsql:embedded:<database>

URL-адрес, показанный в вашей конфигурации (после удаления экранов двоеточия):

jdbc:firebirdsql://embedded:C:\\C\:\\xxxx\\xxxxx.FDB

Удаление // должно исправить это (то же самое относится к URL-адресу jdbc:firebirdsql:local, показанному закомментированным).

URL-адреса с jdbc:firebirdsql://.... обрабатываются чистой реализацией сетевого протокола Java. Учитывая конфигурацию, я ожидал другой ошибки (поскольку синтаксический анализ URL-адреса не удался), но я предполагаю, что это может быть результатом попытки использовать разные конфигурации.

person Mark Rotteveel    schedule 14.04.2016
comment
Идеально ! это решило мою проблему. на самом деле это был сайт. Большое спасибо - person Maruthi; 14.04.2016