Отсутствует зависимость для приложения контроллера OpenDaylight (Sodium SR1) - PullRequest
1 голос
/ 10 января 2020

Я следую приведенным здесь инструкциям, чтобы написать простой привет мир RP C: https://docs.opendaylight.org/en/stable-sodium/developer-guide/developing-apps-on-the-opendaylight-controller.html

В примере класса HelloProvider конструктор имеет вид:

 public HelloProvider(final DataBroker dataBroker, final RpcProviderService rpcProviderService) {
     this.dataBroker = dataBroker;
     this.rpcProviderService = rpcProviderService;
 }

, для которого требуется RpcProviderService, поэтому компиляция не удалась. Поэтому я добавил в impl / src / main / resources / OSGI-INF / blueprint / impl-blueprint. xml:

      <reference id="rpcProviderService"
         interface="org.opendaylight.mdsal.binding.api.RpcProviderService"/>
         odl:type="default" />

Это приводит к компиляции проекта, но не проходит на этапе тестирования:

Missing dependencies: 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMDataBroker) 
(objectClass=org.opendaylight.controller.md.sal.dom.spi.DOMNotificationSubscriptionListenerRegistry) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMMountPointService) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMRpcService) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMNotificationService) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMDataBroker) 
(objectClass=org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService) 

Пакет org.opendaylight.controller уже загружен, поэтому, возможно, я что-то упускаю. Любой совет?

1 Ответ

0 голосов
/ 27 марта 2020

Я тоже столкнулся с той же проблемой. Я изменил impl-blueprint. xml следующим образом:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
   xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
   odl:use-default-for-reference-types="true">

<reference id="dataBroker"
  interface="org.opendaylight.mdsal.binding.api.DataBroker"
  odl:type="default" />

<reference id="rpcProviderService"
         interface="org.opendaylight.mdsal.binding.api.RpcProviderService"
         odl:type="default" />

<bean id="provider"
  class="org.opendaylight.hello.impl.HelloProvider"
  init-method="init" destroy-method="close">
  <argument ref="dataBroker" />
  <argument ref="rpcProviderService" />
</bean>

После этого я столкнулся с другой проблемой при доступе к REST API через HTTP-метод. Я получаю ошибку 401 - неавторизован. Для этого я установил odl-mdsal-apidocs, и он начал работать.

<dependency>
  <groupId>org.opendaylight.netconf</groupId>
  <artifactId>odl-mdsal-apidocs</artifactId>
  <version>1.10.2</version>
  <type>xml</type>
  <classifier>features</classifier>
</dependency>
...