无法在 Apache ServiceMix 中启动 OSGI 包

Posted

技术标签:

【中文标题】无法在 Apache ServiceMix 中启动 OSGI 包【英文标题】:Can't start OSGI bundle in Apache ServiceMix 【发布时间】:2018-04-17 07:12:33 【问题描述】:

我想创建 OSGI 包。我创建了一个简单的类:

public class Activator implements BundleActivator 
public void start(BundleContext bundleContext) throws Exception 
    System.out.println("::::START MAIL BUNDLE::::");


public void stop(BundleContext bundleContext) throws Exception 
    System.out.println("::::STOP MAIL BUNDLE::::");


我的pom.xml

<dependencies>
    <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.core</artifactId>
        <version>6.0.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <executions>
                <execution>
                    <id>osgi-bundle</id>
                    <goals>
                        <goal>bundle</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <instructions>
                            <Bundle-SymbolicName>$project.artifactId</Bundle-SymbolicName>
                            <Bundle-Version>$project.version</Bundle-Version>
                            <Import-Package>
                                *;resolution:=optional
                            </Import-Package>
                        </instructions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我使用Service Mix。我在目标文件夹中添加org.osgi.core-6.0.0.jar 和我的 jar。我的捆绑包处于活动状态,但在 karaf 控制台中启动/停止捆绑包时看不到我的消息。我做错了什么?

【问题讨论】:

【参考方案1】:

您必须在 maven-bundle-config 中设置 &lt;Bundle-Activator&gt;your.package.name.Activator&lt;/Bundle-Activator&gt;。 另请注意不要部署 org.osgi.core 或 org.osgi.componendium。核心包由 OSGi 框架部署,概要由各个规范实现。

【讨论】:

以上是关于无法在 Apache ServiceMix 中启动 OSGI 包的主要内容,如果未能解决你的问题,请参考以下文章

Apache Karaf 与 Servicemix

ServiceMix 中 Apache-Camel 路由的管理和监控

NoClassDefFoundError: OsgiDefaultCamelContext 使用 Apache ServiceMix

在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?

将 Apache ServiceMix 连接到 Websphere MQ

ServiceMix 4 中的集群