- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在带有 PostgreSQL 数据库的 java OSGI bundle (Felix) 中工作。我在 pom 中有这种依赖:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1207</version>
</dependency>
并且这个类在 PostgreSQL 包中。
`公共(public)类 PostgreSQLDBDAOFactory 扩展 DAOFactory {
Connection conn = null;
private static final Logger LOG = Logger.getLogger(PostgreSQLDBDAOFactory.class.getName());
public PostgreSQLDBDAOFactory() throws ClassNotFoundException {
try {
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/CarsAPJ";
String user = "petr";
String password = "pass";
conn = DriverManager.getConnection(url, user, password);
...}
...
}
...
}`
构建 OSGI bundle 是可以的,但是在 Felix 中启动应用程序后,我有这个错误。我在模块和 felix 配置脚本中有这个包。
Jan 18, 2016 1:13:02 AM org.lib.postgresqldb.PostgreSQLDBDAOFactory <init>
SEVERE: java.lang.ClassNotFoundException: org.postgresql.Driver not found by org.lib.postgresqlDB [4]
请问有认识的人怎么解决吗?
最佳答案
当您在包中加载 DriverManager 类时,它会被委托(delegate)给系统包(felix 框架)的类加载器。所以 DriverManager 只会看到系统包可见的包。数据库驱动程序当然在那里不可见。
简而言之。您不应依赖 DriverManager 来建立数据库连接。而是使用数据源。
获得数据库连接的最好方法是使用pax-jdbc .它提供了一种创建数据源并将其发布为 OSGi 服务的方法。
因此您可以只引用您的包中的服务并从中创建一个连接。这确保您的包不依赖于特定的数据库,并允许管理员轻松更改数据源配置。
我也有一些tutorials for Apache Karaf展示了如何在 OSGi 之上干净地构建基于数据库的应用程序。
关于java - 费利克斯与 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845515/
我开发了一个小型 EMF 项目作为 OSGi Bundle。现在我想在带有 Apache Felix 的 Android 上使用它。 EMF 使用一些标准的 Java 库。像 java.xml.xxx
我是一名优秀的程序员,十分优秀!