【问题标题】:How do I use my Eclipse OSGi Java plug-in in another project?如何在另一个项目中使用我的 Eclipse OSGi Java 插件?
【发布时间】:2018-02-20 22:33:11
【问题描述】:

这对我来说太新鲜了,而且有点复杂。我在 Eclipse 中使用标准 OSGi 框架创建了一个插件项目。目的是使用此捆绑包连接到 H2 DB。这是 Activator.java: 打包数据库服务;

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 框架中运行这个项目。它在那里工作。但我的问题是,如何在另一个项目中使用这个捆绑包?

【问题讨论】:

    标签: java eclipse osgi


    【解决方案1】:

    问题是您真正想为其他捆绑包提供什么。 如果您想提供一种通用的方式来访问数据库,那么您可以提供一个 DataSource。在这种情况下,我建议使用 pax-jdbc-config,因为它会为您完成所有繁重的工作。

    另一个选项是Aries transactioncontrol,它更易于使用,但使您的用户代码依赖于事务控制 API。

    如果您想提供更高级别的服务,那么服务是最佳选择。为您的服务创建一个接口并在您的包中实现该接口。然后简单地将对象导出为 OSGi 服务。然后其他捆绑包可以获取该服务。我建议使用声明式服务来提供和使用服务。见this example

    【讨论】:

    • 我没有使用 Maven,我现在只有 Eclipse。坦率地说,我几乎不知道你刚才的建议。我设法将我的 OSGi 项目作为插件导出,它生成了 jar 文件和必要的文件。但我不知道如何将它们集成到我的主要项目中。
    • 我强烈建议使用构建系统。 Eclipse 本身并不是一个好的构建环境。花一些时间研究这些示例。
    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多