데이터베이스 드라이버로드 중 OSGi ClassNotFoundException

Sandeep PP

나는 이것이 일반적인 문제라는 것을 알고 있지만 이미 문서에서 설명한 옵션 중 일부를 시도한 후에도 나처럼 멈춘 경우를 대비하여 새 스레드를 만듭니다.

데이터 레이어 액세스와 관련된 모든 코드가 포함 된 osgi 번들 (Say Bundle B)을 배포했습니다. 기본적으로이 번들의 서비스 메소드에 액세스하면 드라이버를로드하여 처음으로 만 JDBC 연결을 작성합니다. 드라이버는 sqljdbc 4.0의 다른 래핑 된 번들로 배포됩니다. (Say Bundle C)

이제 Bundle B에서 위에서 언급 한 서비스 메서드의 인스턴스를 생성하는 Bundle TestApp (Say Bundle A)가 있습니다. 따라서 여기 흐름은 Bundle A 코드가 Bundle C의 Driver 클래스에 차례로 액세스하는 Bundle B의 내 보낸 서비스 인스턴스를 생성합니다.

Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver not found by DataServices [417]
        at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
        at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
        at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)

개별 클래스 로더가 여기서 probelm을 만들고 있지만 극복하는 방법은 여기에있는 상황입니다. 여기 expained으로 조각 번들 만드는 시도, A, B 번들로 DynamicImport-패키지를 추가하는 시도 https://gist.github.com/rotty3000/1291842 하지만 여전히 같은 예외를. 계속합니다.

누군가가 그러한 문제를 발견했다면이 문제를 제거하기 위해 단계별 접근 방식을 제공 할 수 있다면 큰 도움이 될 것입니다.

미리 감사 드리며 모두의 새해 복 많이 받으세요.

크리스찬 슈나이더

드라이버 접근 방식은 OSGi에서 제대로 작동하지 않습니다. 대신 DataSource를 사용하십시오. msdn의 예를 참조하십시오 . new를 사용하여 데이터 소스를 간단히 만들 수 있습니다. 이렇게하면 클래스 로딩 문제를 방지 할 수 있습니다.

실제 DB 공급자와 분리하려면 DB 공급자가 DataSource를 생성 할 수있는 DataSourceFactory를 노출해야 함을 정의하는 OSGi jdbc 사양을 사용할 수 있습니다.

Pax-jdbc는 광범위한 db 공급자에 대해이 사양을 지원합니다. 설정 만 사용하여 데이터 소스를 OSGi 서비스로 만들 수 있는 pax-jdbc-config 모듈이 있습니다. 따라서 코드에서 서비스를 주입하면 완료됩니다. 또한 pax-jdbc-config는 풀링을 처리하고 DataSource XA를 인식하도록 할 수 있습니다. 따라서 완전히 생산 가능한 DataSource를 생성합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

통합 테스트 중 데이터베이스에 json로드

분류에서Dev

데이터베이스의 중복

분류에서Dev

데이터베이스의 중복

분류에서Dev

다중 데이터베이스 관리

분류에서Dev

Laravel 5.3 다중 데이터베이스

분류에서Dev

oracle rman 중복 데이터베이스

분류에서Dev

중포 기지 실시간 데이터베이스 업데이트 데이터 - 안드로이드 자바

분류에서Dev

다중 이미지 업로드 및 데이터베이스 경로 저장

분류에서Dev

java.lang.ClassNotFoundException가 : 서블릿에서 드라이버 오라클 데이터베이스를 연결하는 동안

분류에서Dev

Cloudinary 다중 이미지 업로드 데이터베이스에 저장

분류에서Dev

로드 밸런싱하고 동일한 데이터베이스를 가리키는 이중 웹 서버

분류에서Dev

Laravel 8의 중첩 된 데이터베이스 시드

분류에서Dev

데이터베이스 생성시 다중 레코드 삽입

분류에서Dev

데이터베이스 생성시 다중 레코드 삽입

분류에서Dev

다중 노드, 검색 Firebase 데이터베이스

분류에서Dev

Google 클라우드 메시징 : 데이터베이스의 중복 토큰

분류에서Dev

이클립스은 OSGi 선언적 서비스, 다중 서비스 인터페이스 및 스레드 안전

분류에서Dev

qt 안드로이드 ClassNotFoundException

분류에서Dev

Verilog 다중 드라이버

분류에서Dev

데이터베이스 addValueEventListener 업데이트 중

분류에서Dev

라 라벨 중첩 교차 데이터베이스 관계

분류에서Dev

C # 다중 스레드 데이터베이스 채우기 테이블

분류에서Dev

Django-다중 데이터베이스-데이터 마이그레이션

분류에서Dev

데이터베이스의 이중 데이터 정렬이 가능합니까?

분류에서Dev

데이터베이스에서 데이터 중복을 중지하는 방법

분류에서Dev

단일 Google 드라이브를 중앙 데이터 서버로 사용

분류에서Dev

중첩 된 SQL 문을위한 데이터베이스 버퍼

분류에서Dev

데이터베이스 : 다중 서버에서 삽입

분류에서Dev

파일 업로드 작업 중 yii2의 데이터베이스에 데이터 저장

Related 관련 기사

  1. 1

    통합 테스트 중 데이터베이스에 json로드

  2. 2

    데이터베이스의 중복

  3. 3

    데이터베이스의 중복

  4. 4

    다중 데이터베이스 관리

  5. 5

    Laravel 5.3 다중 데이터베이스

  6. 6

    oracle rman 중복 데이터베이스

  7. 7

    중포 기지 실시간 데이터베이스 업데이트 데이터 - 안드로이드 자바

  8. 8

    다중 이미지 업로드 및 데이터베이스 경로 저장

  9. 9

    java.lang.ClassNotFoundException가 : 서블릿에서 드라이버 오라클 데이터베이스를 연결하는 동안

  10. 10

    Cloudinary 다중 이미지 업로드 데이터베이스에 저장

  11. 11

    로드 밸런싱하고 동일한 데이터베이스를 가리키는 이중 웹 서버

  12. 12

    Laravel 8의 중첩 된 데이터베이스 시드

  13. 13

    데이터베이스 생성시 다중 레코드 삽입

  14. 14

    데이터베이스 생성시 다중 레코드 삽입

  15. 15

    다중 노드, 검색 Firebase 데이터베이스

  16. 16

    Google 클라우드 메시징 : 데이터베이스의 중복 토큰

  17. 17

    이클립스은 OSGi 선언적 서비스, 다중 서비스 인터페이스 및 스레드 안전

  18. 18

    qt 안드로이드 ClassNotFoundException

  19. 19

    Verilog 다중 드라이버

  20. 20

    데이터베이스 addValueEventListener 업데이트 중

  21. 21

    라 라벨 중첩 교차 데이터베이스 관계

  22. 22

    C # 다중 스레드 데이터베이스 채우기 테이블

  23. 23

    Django-다중 데이터베이스-데이터 마이그레이션

  24. 24

    데이터베이스의 이중 데이터 정렬이 가능합니까?

  25. 25

    데이터베이스에서 데이터 중복을 중지하는 방법

  26. 26

    단일 Google 드라이브를 중앙 데이터 서버로 사용

  27. 27

    중첩 된 SQL 문을위한 데이터베이스 버퍼

  28. 28

    데이터베이스 : 다중 서버에서 삽입

  29. 29

    파일 업로드 작업 중 yii2의 데이터베이스에 데이터 저장

뜨겁다태그

보관