如何使用OSGI设置MySQL数据库连接?

时间:2013-08-22 20:49:34

标签: mysql connection osgi

我尝试连接到我的MySQL数据库,但是由于OSGI的类加载器Hirachie,使用Class.forname()的常规方法不起作用。我不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

看看Pax JDBC:https://ops4j1.jira.com/wiki/display/PAXJDBC/MySQL+Driver+Adapter

这将为MySQL数据库注册一个DataSourceFactory,然后您可以使用它来创建DataSource。见http://www.osgi.org/javadoc/r4v42/org/osgi/service/jdbc/DataSourceFactory.html

我认为Pax JDBC MySql驱动程序有一些限制,它没有完全实现规范,所以请仔细阅读说明。

答案 1 :(得分:0)

在OSGi中,bundle的类加载器只能看到它的清单中由该bundle显式导入的包。因此,Class.forname不适用于未导入的包。

直接的解决方案是在com.mysql.jdbc包的清单中添加Import-Package标头。如果您尝试加载(例如)com.mysql.jdbc.Driver,它将起作用。

为JDBC驱动程序添加显式Import-Packages将导致无法在不更改import-package标头的情况下切换驱动程序。为此,您可以考虑使用DynamicImport-Package:*。这将允许bundle在bundle连接后找到类。请注意,在大多数情况下,永远不应该使用它,因为现在您又回到了运行时类加载OSGi通常会阻止的异常的可能性。对于JDBC,它可以是正确的解决方案。