在OSGi container中运行bundle时无法获取derby的数据库连接

来源:互联网 发布:专业网络推广 编辑:程序博客网 时间:2024/05/16 08:31

公司的客户使用OSGi分解自己的产品为N多Bundle,在这个过程中遇到很多问题,以后有时间会慢慢将这些问题及解决方法总结,今天仅列出无法获取derby数据库连接的问题。

 

问题描述:

[AWT-EventQueue-0] ERROR com.kv.db.dao.JDBCConnection - Sql exception:

java.sql.SQLException: No suitable driver found for jdbc:derby:DatabaseName;create=true

at java.sql.DriverManager.getConnection(DriverManager.java:602)

at java.sql.DriverManager.getConnection(DriverManager.java:207)

at com.kv.db.dao.JDBCConnection.getConnection(JDBCConnection.java:71)

解决办法:
在数据库连接所在的bundle中,import一个package: javax.sql,即可解决该问题。
META-INF/MANIFEST.MF内容:

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: db_connection

Bundle-SymbolicName: db_conneciton

Bundle-Version: 1.0.0

Bundle-RequiredExecutionEnvironment: J2SE-1.5

Bundle-Activator: com.kv.firstmodle.osgi.OSGiActivator

Bundle-Vendor: KV

Import-Package: javax.jws,

 javax.management,

 javax.management.modelmbean,

 javax.security.auth.callback,

 javax.sql,

 javax.swing,

 javax.swing.event,

 javax.xml.datatype,

 javax.xml.namespace,

 javax.xml.parsers,

 javax.xml.transform,

 javax.xml.transform.dom

Export-Package: 

 com.kv.firstmodle.util

 

OSGi在国内应用还是比较少,希望在这方面有经验的朋友,能发表一些自己的见解或经验总结.