karaf zeigt keinen Fehler an, während das Komponenten-Factory-Beispiel

Ich habe versucht Komponente Factory Beispiel aus diesemVerknüpfun. Schnittstelle

package com.java.examplefactoryservice;

public interface ExampleFactoryService {
    public void start();

    public void stop();
}

factory Anbieter:

package com.java.examplecomponentfactoryserviceprovider;

import java.util.Map;

import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;

import com.java.examplefactoryservice.ExampleFactoryService;

@Component(name = "ExampleComponentFactoryServiceProvider", factory = "example.factory.provider")
public class ExampleComponentFactoryServiceProvider implements ExampleFactoryService {

    @Activate
    public void activate(Map<String, Object> properties) {
        System.out.println("Actiavted!!!");
    }

    @Override
    public void start() {
        System.out.println("Started !!!!");
    }

    @Override
    public void stop() {
        System.out.println("Stopped!!!");
    }

}

factory manager:

package com.java.examplecomponentfatorymanager;

import java.util.Map;

import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.osgi.service.component.ComponentFactory;
import org.osgi.service.component.ComponentInstance;

import com.java.examplefactoryservice.ExampleFactoryService;

@Component(name = "ExampleComponentFactoryManager", enabled = true, immediate = true)
public class ExampleComponentFactoryManager {

    @Reference(target = "(component.factory=example.factory.provider)", bind = "setFactory", unbind = "unsetFactory")
    private ComponentFactory factory;

    private ComponentInstance instance;

    private ExampleFactoryService service;

    @Activate
    public void activate(Map<String, Object> properties) {
        System.out.println("activate in manager !!!!");
        instance = factory.newInstance(null);
        service = (ExampleFactoryService) instance.getInstance();
        System.out.println("service  = " + service.toString());
    }

    public void setFactory(final ComponentFactory factory) {
        this.factory = factory;
        System.out.println("setfactory called");
    }

    public void unsetFactory(ComponentFactory factory) {
        this.factory = null;
        System.out.println("Unset factory called");
    }

}

Alles fein kompiliert und in Karaf 2.3.10 installiert. Die Fabrik wurde erfolgreich registriert. Es wurde aber nichts angezeigt.

karaf Ausgabe:

[  71] [Active     ] [            ] [   80] osgi.cmpn (4.3.1.201210102024)
[  79] [Active     ] [            ] [   80] testI (0.0.1.SNAPSHOT)
[  80] [Active     ] [            ] [   80] testImpl (0.0.3.SNAPSHOT)
[ 110] [Active     ] [            ] [   80] Apache Felix Declarative Services (1.6.0)
[ 140] [Active     ] [            ] [   80] ExampleFactoryService (0.0.1.SNAPSHOT)
[ 152] [Active     ] [            ] [   80] ExampleComponentFactoryServiceProvider (0.0.1.SNAPSHOT)
[ 158] [Active     ] [            ] [   80] ExampleComponentFatoryManager (0.0.1.SNAPSHOT)

scr: Liste Ausgabe

[9   ] [FACTORY         ] ExampleComponentFactoryServiceProvider

scr: details

scr:deactivate    scr:details
karaf@root> scr:details ExampleComponentFactoryServiceProvider
Component Details
  Name                : ExampleComponentFactoryServiceProvider
  State               : FACTORY
  Properties          :
    service.vendor=The Apache Software Foundation
    component.factory=example.factory.provider
    component.name=ExampleComponentFactoryServiceProvider
References

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ExampleComponentFatoryManager</groupId>
    <artifactId>ExampleComponentFatoryManager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <version>2.3.5</version>
                <configuration>
                    <instructions>
                        <Import-Package>
                            *,
                            javax.servlet*;version="[2.5,4)"
                        </Import-Package>
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
                <version>1.14.0</version>
                <executions>
                    <execution>
                        <id>generate-scr-scrdescriptor</id>
                        <goals>
                            <goal>scr</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.scr.annotations</artifactId>
            <version>1.9.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.3.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>ExampleFactoryService</groupId>
            <artifactId>ExampleFactoryService</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

Initial habe ich in der Karaf-Befehlszeile versucht, ein Bundle zu installieren, anstelle von name wird der absolute Pfad des Bundles angezeigt. Nach einiger Zeit habe ich versucht, das Bundle in Deploy zu setzen. Es zeigt den genauen Namen des Bundles. Ich habe das Verhalten von karaf nicht verstanden, weshalb der Bundle-Name bei der ordnungsgemäßen Installation über die Befehlszeile nicht angezeigt wird. Und es zeigt überhaupt keine Fehler [Abhängigkeit / Kompilierung / Wiredexecption]. Kann mir bitte jemand sagen, was im Bundle nicht stimmt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage