Я начал разрабатывать пакет для apache felix и сделал это с плагином ops4j pax.
Я создал структуру проекта с помощью pax-create-project
и сделал обычный pax-create-bundle
. Затем вы получаете первоначальную структуру проекта для создания всего этого с помощью maven. Важная часть здесь заключается в том, что у вашего пакета есть собственный pom (bundlename/pom.xml
) и файл bnd (bundlename/osgi.bnd
), но конфигурация для maven-bundle-plugin
уже предоставлена в poms/compiled/pom.xml
. Метаданные пакета настраиваются под poms/compiled/pom.xml
, но стандартный активатор настраивается под вышеупомянутым файлом osgi.bnd
. Значение по умолчанию в файле bnd — Bundle-Activator: ${bundle.namespace}.internal.ExampleActivator
.
Теперь я хотел начать использовать аннотации из org.apache.felix.scr
, поэтому я включил это в собственный пакет pom в зависимостях:
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr</artifactId>
<version>1.6.0</version>
</dependency>
И я создал свой интерфейс для сервиса:
package namespace;
public interface Sample {
void sayHello();
}
А так же реализация с аннотациями от org.apache.felix.scr
:
package namespace.internal;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import namespace.Sample;
@Component
@Service
public class SampleImpl implements Sample{
@Activate
void start(){
System.out.println("Started SampleImpl.");
}
@Deactivate
void stop(){
System.out.println("Stopped SampleImpl.");
}
@Override
public void sayHello() {
System.out.println("Hello!");
}
}
Что мне нужно поместить в файл osgi.bnd
, чтобы запустить компоненты? Мне пришлось удалить запись по умолчанию, упомянутую выше, потому что я больше не использую BundleActivator.
Теперь вот вопрос: что мне нужно сделать с любым из вышеупомянутых файлов, чтобы позволить mvn clean install pax:provision
запустить среду felix, которая запускает мой пакет и позволяет мне видеть любые распечатки? Я уже просмотрел вывод журнала службы журналов Apache, которую я тоже запускаю, и он просто говорит мне:
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent STARTED
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent RESOLVED
Любые подсказки очень приветствуются. Или ссылки, я искал более часа, чтобы найти полное руководство по использованию плагинов maven для scr и объединения вместе.
Привет, Кьельски