如何在另一个项目中使用Eclipse OSGi Java插件?
这对我来说是全新的,有点复杂。我在Eclipse中使用标准OSGi框架创建了一个插件项目。目的是使用此捆绑连接到H2 DB。这是激活剂。爪哇: 包数据服务
import java.sql.Connection;
import java.sql.DriverManager;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
private static BundleContext context;
private Connection conn=null;
static BundleContext getContext() {
return context;
}
public void start(BundleContext bundleContext) throws Exception {
Activator.context = bundleContext;
Class.forName("org.h2.Driver");
conn = DriverManager.getConnection("jdbc:h2:~/test","sa","123456");
System.out.print("Connection opened...");
}
public void stop(BundleContext bundleContext) throws Exception {
Activator.context = null;
conn.close();
System.out.print("Connection closed...");
}
}
我在OSGi框架内运行这个项目。它在那里工作。但我的问题是,如何在另一个项目中使用此捆绑包
# 1 楼答案
问题是您真正想要向其他捆绑包提供什么。 如果您想提供一种访问数据库的通用方法,那么您可以提供一个数据源。在这种情况下,我建议使用pax-jdbc-config,因为它可以帮你完成所有的繁重工作
另一个选项是Aries transactioncontrol,它甚至更易于使用,但使您的用户代码依赖于事务控制API
如果你想提供更高层次的服务,那么服务是最好的选择。为您的服务创建一个接口,并在包中实现该接口。然后简单地将对象导出为OSGi服务。然后,其他捆绑包可以接受该服务。我建议使用声明性服务来提供和使用服务。见this example