2011-02-10 7 views
1

누구나 입니다. 스프링 JDBC와 함께 Firebird 2.1을 사용하고 있습니까?스프링 JDBC 및 파이어 버드 데이터베이스

테스트 목적으로 MySQL, Postgres 및 Firebird에서 설정 한 세 개의 간단한 테이블 데이터베이스가 있습니다.

MySQL 또는 Postgres에서 데이터를 연결하고 가져 오는 데 문제가 없습니다.

하지만 파이어 버드를 사용할 수 없습니다.

jdbc.properties 및 pom.xml 종속성을 올바른 .jar 파일로 변경해야합니다. 그것은 쉽습니다.

최소한의 Java 명령어 프로그램에서 확인한 바에 따라, 나의 연결 매개 변수 이 Firebird 데이터베이스에 대해으로 정확하다는 것을 알고 있습니다. 이 방법으로 데이터를 연결하고 읽었습니다.

나는 파이어 버드이 스택 트레이스를 얻을 :

org.springframework.jdbc.CannotGetJdbcConnectionException : JDBC 연결을 가져올 수 없습니다; 중첩 예외는 org.apache.commons.dbcp.SQLNestedException : JDBC 드라이버 클래스 'org.firebirdsql.jdbc.FBDriver'를로드 할 수 없습니다. 원인 : javax/resource/ResourceException, 원인 : javax/resource/ResourceException org.springframework.jdbc. datasource.DataSourceUtils.getConnection (DataSourceUtils.java:80) org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:572)

매우 이상한 것 같아요 갈등의 일종 ...

파이어 버드를 아주 간단한 데이터베이스처럼 사용하고 싶습니다.하지만 이것을 해결하지 않으면 포스트그레스가 될 것입니다.

올바른 방향으로 어떤 도움이나 조언이라도 대단히 감사하겠습니다.

답변

0

Stacktrace는 javax.resource.ResourceException 클래스가 누락 된 것 같습니다. 아마도 해당 드라이버는 클래스 경로에 J2EE Connector Architecture 클래스를 필요로합니다.

+0

감사합니다 어떤 도움, 정말 고맙게 생각합니다. 아래에 자세한 내용을 추가했습니다 ... – Lyndon

4

확인, 그 방법은 다음과 같습니다

당신의 pom.xml 파일에 다음을 추가합니다 (당신이 모두 필요) :

<bean id="dataSource" 
    class="org.firebirdsql.pool.FBWrappingDataSource" 
    p:database="${jdbc.database}" 
    p:userName="${jdbc.username}" 
    p:password="${jdbc.password}" 
    p:type="${jdbc.connection.type}" 
    p:maxPoolSize="5" 
    p:minPoolSize="1" 
    p:pooling="true" /> 
:

<dependency> 
     <groupId>org.firebirdsql.jdbc</groupId> 
     <artifactId>jaybird</artifactId> 
     <version>2.1.6</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.resource</groupId> 
     <artifactId>connector-api</artifactId> 
     <version>1.5</version> 
    </dependency> 

는에 ApplicationContext의 파일에 데이터 소스를 설정

다른 데이터베이스처럼 org.apache.commons.dbcp.BasicDataSource가 아닌 Firebird 전용 풀을 사용합니다.

비표준 매개 변수 이름에 유의하십시오. 나는 아직 자동 커밋을 설정하는 방법을 모르는

jdbc.driverClassName=org.firebirdsql.jdbc.FBDriver 
jdbc.dialect=org.hibernate.dialect.FirebirdDialect 
jdbc.database=/path/to/database.fdb 
jdbc.username=admin 
jdbc.password=***** 
jdbc.defaultAutoCommit=false 
jdbc.connection.type=TYPE4 

:

여기 내 jdbc.properties 파일입니다. 죄송합니다. 찾으려고합니다.

파이어 버드가 왜 다른 데이터베이스와 마찬가지로 이것을 표준으로 설정하지 않습니까? 더 많은 사람들이이 위대한 작은 데이터베이스를 사용할 수 있습니다 ...하나는 여기에 관심이 그냥 경우

1

후속이다 : 당신은 ... 열심히하고 오랫동안 싸울 수 나는 결국 위의 설치를 포기

문제는 org.firebirdsql.pool.FBWrappingDataSource입니다.

결국 나는 Proxool 연결 풀을 작동시켜 사용했습니다.

<bean id="dataSource" 
    class="org.logicalcobwebs.proxool.ProxoolDataSource" 
    p:alias="${jdbc.alias}" 
    p:driver="${jdbc.driverClassName}" 
    p:driverUrl="${jdbc.databaseurl}" 
    p:user="${jdbc.username}" 
    p:password="${jdbc.password}" /> 

당신은 또한이 같은 뭔가를해야 할 것이다 :

<dependency> 
     <groupId>proxool</groupId> 
     <artifactId>proxool</artifactId> 
     <version>0.9.1</version> 
    </dependency> 
    <dependency> 
     <groupId>proxool</groupId> 
     <artifactId>cglib</artifactId> 
     <version>1.0.0</version> 
    </dependency> 

을 그냥 문의하시기 바랍니다, 봄과 파이어 2를 사용하여 어떤 도움을 원한다면 ...

0

을 나는 그것이 생각 이미 아무도 실제로는 아니지만, 봄을 사용하여 파이어 버드와 연결해야했습니다. 그것은 다니엘 파스의 대답은 매우 유사하지만, 경우에 다른 사람이 그것을 필요로 ...

상황 :

<bean id="FirebirdDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="org.firebirdsql.pool.FBWrappingDataSource" 
      p:url="jdbc:firebirdsql://1.1.1.1/your_database_name.fdb" 
      p:username="user" 
      p:password="secret" /> 

(I가 Gradle을 사용) 빌드 프레임 워크에 추가 제공을위한

compile group: 'org.firebirdsql.jdbc', name: 'jaybird', version: '2.2.5' 
관련 문제