Проблема с разрешением пакетов (импорт-экспорт) в сгенерированных maven2 пакетах osgi, работающих в ServiceMix - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть один пакет, использующий следующую конфигурацию в pom.xml:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <version>2.1.0</version>
  <extensions>true</extensions>
  <configuration>
  <osgiManifest>
      <bundleName>SAMBA Common</bundleName>
      <bundleDescription>The Common shared resources</bundleDescription>
      <bundleActivator>de.samba.common.Activator</bundleActivator>
      <importPackage>
            org.osgi.framework,
            org.dcm4che.*;version=2.0.22;-split-package:=merge-first 
        </importPackage>
        <exportPackage>
        de.samba.common.*
            </exportPackage>
      <bundleVendor>SAMBA Framework</bundleVendor>
      </osgiManifest>
    <instructions>
      <Bundle-Activator>de.samba.common.Activator</Bundle-Activator>
      <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
      <Bundle-Name>${project.artifactId}</Bundle-Name>
        <Bundle-Version>1.0.0</Bundle-Version>
      <Import-Package>
        org.osgi.framework,
        org.dcm4che.*;version=2.0.22;-split-package:=merge-first
      </Import-Package>
      <Export-Package>
        de.samba.common.*
      </Export-Package>
      <Private-Package>
      </Private-Package>
      <Require-Bundle>org.apache.cxf.bundle
      </Require-Bundle>

      <DynamicImport-Package>*</DynamicImport-Package>

    </instructions>
  </configuration>
</plugin>

Это работает и активируется при развертывании его в ServiceMix (мой контейнер OSGi).В другом моем пакете OSGi я пытаюсь использовать классы, определенные в верхнем пакете.Конфигурация выглядит так:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <version>2.1.0</version>
  <extensions>true</extensions>
  <configuration>
    <osgiManifest>
      <bundleName>SAMBA Message</bundleName>
      <bundleDescription>The Message WebService</bundleDescription>
      <bundleActivator>de.samba.message.Activator</bundleActivator>
      <bundleVendor>SAMBA</bundleVendor>
      <importPackage>de.samba.common.*</importPackage>
      </osgiManifest>
    <instructions>
      <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
      <Import-Package>
        javax.jws,
        javax.wsdl,
        javax.xml.bind,
        javax.xml.bind.annotation,
        javax.xml.namespace,
        javax.xml.ws,
        META-INF.cxf,
        META-INF.cxf.osgi,
        org.apache.cxf.bus,
        org.apache.cxf.bus.spring,
        org.apache.cxf.bus.resource,
        org.apache.cxf.configuration.spring,
        org.apache.cxf.resource,
        org.apache.cxf.jaxws,
        org.apache.cxf.transport.http_osgi,
        org.springframework.beans.factory.config,
        org.osgi.framework,
        de.samba.common.*
      </Import-Package>
      <Private-Package>
      </Private-Package>
      <Require-Bundle>
      </Require-Bundle>

      <!-- DynamicImport-Package>*</DynamicImport-Package-->

    </instructions>
  </configuration>
</plugin>

Когда я пытаюсь активировать этот второй пакет, я получаю следующую ошибку на консоли Karaf из ServiceMix:

Error executing command: Unresolved constraint in bundle message [233]: package;(package=de.samba.common.message.model)

Я также пытался использовать.samba.common как импорт и экспорт, а также каждое объявление пакета.Что я не получил здесь?Как я могу заставить 2-й комплект видеть классы из первого комплекта?

Ответы [ 2 ]

1 голос
/ 11 октября 2010

Посмотрите (или вставьте) сгенерированные файлы МАНИФЕСТА (вы можете использовать для этого 'headers: [id]' в ServiceMix).Действительно ли пакет 'de.samba.common.message.model' экспортирован вашим первым пакетом?

0 голосов
/ 26 июля 2012

Если у вас есть родительский файл pom.xml, попробуйте собрать его. Построение только дочерних poms, по-видимому, не разрешает зависимости, даже если правильно указаны объявления импорта-экспорта.

...