내 OSGi 환경에서 추가 사용을 위해 데이터베이스 드라이버를 미리로드하려고합니다. 일반적으로 다음과 같이 수행 할 수 있습니다.OSGi Felix 및 BndTools - 이름으로 클래스로드
Class.forName("com.mysql.jdbc.Driver");
그런 다음 연결을 만들 수 있습니다. 그러나 펠릭스 (Felix)의 OSGi에서이 클래스를 사용하면 클래스를 찾을 수없고 (ClassNotFoundException
) 연결을 만들 수 없다고 그는 말합니다. 나는 그런 일 (try-catch
생략)를 할 때 :
com.mysql.jdbc.Driver d = new com.mysql.jdbcDriver
Class.forName("com.mysql.jdbc.Driver");
그런 모든 것이 잘 작동하고 연결이 만들어집니다. 그러나 드라이버 클래스를 교환 할 수 없기 때문에 이것은 그리 좋지 않습니다.
첫 번째 방법으로 클래스를로드하는 방법이 있습니까? 올바른 클래스 로더를 제공해야한다고 가정합니다. 그러나 나는 그것을 어디에서 얻을 수 있습니까?
MySQL 드라이버는 OSGi 랩퍼 번들로 제공됩니다.
소스에 클래스 이름이있는 경우 Class.forName으로 동적 클래스를로드 할 필요가 없습니다. 동적 클래스 로딩은 런타임 메커니즘을 통해 클래스 이름을 얻는 경우에만 사용해야합니다. –