2015-09-09 2 views
0

У меня есть стандартный плагин bndtools для установки eclipse, а также выполняется время выполнения apache felix osgi. Я пытаюсь узнать о компонентах декларативных услуг (DS). По-видимому, перед аннотациями (для которых приведен пример в учебнике для bndtools), компоненты были написаны с использованием данных xml. Это то, что я пытаюсь сделать.не может запустить компонент Declarative Services (DS) с помощью bndtools

Вот простой класс (который будет опубликован в качестве компонента DS): «HelloComponent.java»

package org.osgi.book.ds.minimal; 

public class HelloComponent { 
    public HelloComponent(){ 
     System.out.println("HelloComponent created."); 
    } 
} 

Вот XML-файл, который делает компонент заявление: «minimal.xml»

<?xml version="1.0" encoding="UTF-8"?> 
<!-- minimal.xml --> 

<scr:component xmlns:scr="http://www.osgi.org/xlmns/scr/v1.1.0" immediate="true"> 
    <implementation class="org.osgi.book.ds.minimal.HelloComponent"/> 
</scr:component> 

А вот файл .bnd, который должен быть использован в bndtools для создания банка файлов, которые в конечном итоге будут опубликованы в OSGi времени выполнения: «minimal_ds.bnd»

Private-Package: org.osgi.book.ds.minimal 

Include-Resource: minimal.xml 
Service-Component: minimal.xml 

Обратите внимание, что у меня есть следующие связки и работает в принимающем во время выполнения OSGi контейнера:

ID|State  |Level|Name 
    0|Active  | 0|System Bundle (4.4.1) 
    2|Active  | 1|Apache Felix Gogo Command (0.14.0) 
    3|Active  | 1|Apache Felix Gogo Runtime (0.12.1) 
    4|Active  | 1|Apache Felix Gogo Shell (0.10.0) 
    5|Active  | 1|BookReaderOSGiInPractice.minimal_ds (0.0.0.201509091856) 
    15|Active  | 1|Apache Felix Configuration Admin Service (1.8.0) 
    16|Active  | 1|Apache Felix Declarative Services (1.8.2) 
    17|Active  | 1|osgi.enterprise (4.2.0.201003190513) 
    18|Active  | 1|osgi.residential (4.3.0.201111022239) 

Несмотря на все время активно работает, я не могу понять, почему компонент DS не инициализируется (для который я должен увидеть консольный вывод: «HelloComponent created.»). Любая помощь приветствуется.

Наконец, здесь структура проекта:

BookReaderInPractice 
| 
|- src 
| |- org.osgi.book.ds.minimal 
|   |_ HelloComponent.java 
| 
|- minimal_ds.bnd 
| 
|- minimal.xml 

ответ

1

Update (Edited):

обновляется в соответствии с предложением Нейла Бартлетта: Оказывается, ответ был еще проще: как написано в моем comment, в пространстве имен xml файла DS xml была опечатка: «xlm» вместо «xml».

Оригинальный ответ:

Я предполагаю, что есть две вещи, которые собираются здесь не так:

  1. файл minimal.xml не копируется в генерируемый расслоении банку (находится в «генерироваться» папка)
  2. рамки не знает о minimal.xml

Чтобы исправить т его, поместите следующие строки в minimal_ds.bnd:

Include-Resource: minimal.xml 
Service-Component: minimal.xml 

Кроме того, вместо того, чтобы использовать конструктор HelloComponent, создать метод, как это, который будет вызываться при активации компонента:

public void activate() {...} 
+0

линий вы уже были включены в minimum_ds.bnd. Кроме того, когда я просматриваю сгенерированную банку, также включается файл minimum.xml вместе с пакетом java src. Использование метода активации также не выводило никаких консольных сообщений. Спасибо за попытку, хотя ... –

+0

К сожалению ... полностью пропустили это, извините. Но теперь я заметил опечатку в вашем пространстве имен xml.xml: попробуйте «http://www.osgi.org/xmlns/scr/v1.1.0 "и он будет работать;) – evandor

+0

работает как магия .. :) Большое спасибо evandor. –

Смежные вопросы