2016-01-11 3 views
0

Я только начинаю с DOSGi в Karaff используя Zookeeper. У меня есть услуга, предлагаемая в случае с Karaf и потребителем в другом. Сфера обслуживания работает хорошо. После публикации я вижу его с помощью команды log: display в консоли Karaf, где установлен Zookeeper, и я также могу получить доступ к wsdl браузером. Проблема в потребительской стороне. Он должен написать сообщение (ref code ниже), когда служба будет работать, но это никогда не произойдет. Потребительский код:Распределенный OSGI в Karaf -Consumer не запущен

package org.osgi.proyecto.dev.internal.consumer; 


import org.osgi.proyecto.dev.consumer.IConsumer; 
import org.osgi.proyecto.dev.sensor.ISensor; 

public class Consumer implements IConsumer { 

public void sensorActivo(ISensor sensor){  
    System.out.println("El sensor esta activo"); 
} 
} 

И component.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"  immediate="true" enabled="true" name="OSGI_Bundle-Consumer"> 
<implementation class="org.osgi.proyecto.dev.internal.consumer.Consumer"/> 
<reference bind="sensorActivo" cardinality="1..1" interface="org.osgi.proyecto.dev.sensor.ISensor" name="ISensor" policy="dynamic"/>> 
</scr:component> 

Manifest:

Manifest-Version: 1.0 
    Bundle-ManifestVersion: 2 
    Bundle-Name: OSGI_Bundle-Consumer 
    Bundle-SymbolicName: OSGI_Bundle-Consumer2 
    Bundle-Version: 1.0.0.qualifier 
    Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
    Service-Component: OSGI-INF/component.xml 
    Import-Package: org.osgi.framework;version="1.8.0", 
    org.osgi.proyecto.dev.sensor 

Я пытался заставить потребителя узелок (начало расслоение), и это дает мне эту ошибку:

Error starting bundle 137: Unable to resolve OSGI_Bundle-Consumer [137](R 137.1): missing requirement [OSGI_Bundle-Consumer [137](R 137.1)] osgi.wiring.package; (osgi.wiring.package=org.osgi.proyecto.dev.sensor) Unresolved requirements: [[OSGI_Bundle-Consumer [137](R 137.1)] osgi.wiring.package; (osgi.wiring.package=org.osgi.proyecto.dev.sensor)]

Кажется, что есть ошибка зависимости. Это решает установку пакета датчиков (установленное состояние) в экземпляре потребителя. Как я могу избежать установки одного и того же пакета датчиков в обоих экземплярах Karaf?

ответ

0

Вы должны поместить служебный интерфейс в отдельный комплект. Затем вы можете установить потребитель и пакет интерфейса на стороне потребителя, а также службу и пакет интерфейса на стороне сервера.

+0

Спасибо, Кристиан, теперь проблема решена. Также поздравляем ваши учебные пособия. –

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