Thanks a lot Tommy for the detailed suggestion. It helps in a lot for me to
understand few things. As I am new to OSGi world so little bit confuse now..

Let us talk about this example now by which if I am able to solve the
problem then I would be able to solve my other problems too.. Below is my
code in which I am able to start the OSGi framework and then I am trying to
install GoldenlseyeStorageService bundle. And as soon as I try to install
the bundle, I always get the exception as I told you in my previous email .

*Unresolved constraint in bundle GoldenlseyeStorageService [1]: Unable to
resolve 1.0: missing requirement [1.0] osgi.wiring.package;
(&(osgi.wiring.package=com.host.kernel.logger)(version>=1.19.0)(!(version>=2.0.0)))
*
*
*
Below is the code:-
*
*
 public class TestOSGi {

     public static void main(String[] args) {

     try {
     FileUtils.deleteDirectory(new File("felix-cache"));
     FrameworkFactory frameworkFactory =
ServiceLoader.load(FrameworkFactory.class).iterator().next();

     Framework framework = frameworkFactory.newFramework(new
HashMap<String, String>());
     framework.start();

     final BundleContext bundleContext = framework.getBundleContext();
     final List<Bundle> installedBundles = new LinkedList<Bundle>();

     BundleActivator b = new org.ops4j.pax.url.mvn.internal.Activator();
     b.start(bundleContext);

     String localFilename =
"file:C:\\Storage\\GoldenlseyeStorageService-1.0.0.jar";

     installedBundles.add(bundleContext.installBundle(localFilename));

     for (Bundle bundle : installedBundles) {
     bundle.start(); // this line throws me an exception
     }

     } catch (IOException e) {
     e.printStackTrace();
     } catch (BundleException e) {
     e.printStackTrace();
     } catch (Exception e) {
     e.printStackTrace();
     }
         }
    }


Now as you mention that the error mean is - the package the bundle wants to
import is not being exported by *any other bundle (which bundle are we
talking about here?)*, and thus cannot be imported. So here what I am
supposed to do? What should I do here to fix the problem?

Bcoz, I am installing only one bundle here which is bringing other
dependencies and I am not sure what I should do here to fix this problem.
As I am supposed to use lot of our company specific dependencies in my
pom.xml file..

The bundle (*GoldenlseyeStorageService *) that I am trying to install
depends on this maven dependency in its pom.xml file

                <dependency>
<groupId>com.host.soa</groupId>
 <artifactId>soaMerged</artifactId>
<scope>compile</scope>
 <exclusions>
<exclusion>
 <artifactId>axis2</artifactId>
<groupId>org.apache</groupId>
 </exclusion>
</exclusions>
 </dependency>

And the above maven dependency is bringing in kernelMerged dependency in
which this package is there- *com.host.kernel.logger. *
*
*
And I am supposed to use this package in my code..

Now I believe the suggestions you gave me is-

1) I should install kernelMerged jar as a Bundle before installing *
GoldenlseyeStorageService* , to solve this problem? Right?

Below is my full pom.xml file for *GoldenlseyeStorageService *bundle which
is what I am trying to install..


    <?xml version="1.0" encoding="UTF-8"?>
    <project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd";
    xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance";>

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.host.personalize.goldeneye</groupId>
    <artifactId>GoldeneyeStorageService</artifactId>
    <version>1.0.0</version>

    <packaging>bundle</packaging>
    <name>GoldeneyeStorageService</name>

    <properties>
    <singlePom>true</singlePom>
    </properties>
    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>com.host.soa</groupId>
    <artifactId>soaMerged</artifactId>
    <scope>compile</scope>
    <exclusions>
    <exclusion>
    <artifactId>axis2</artifactId>
    <groupId>org.apache</groupId>
    </exclusion>
    </exclusions>
    </dependency>
    </dependencies>
    <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <outputDirectory>build/classes</outputDirectory>
    <testOutputDirectory>build/classes</testOutputDirectory>
    <resources>
    <resource>
    <directory>gen-meta-src</directory>
    </resource>
    <resource>
    <directory>meta-src</directory>
    </resource>
    <resource>
    <directory>src</directory>
    <excludes>
    <exclude>**/*.java</exclude>
    </excludes>
    </resource>
    <resource>
    <filtering>true</filtering>
    <directory>src/main/filtered-resources</directory>
    </resource>
    </resources>
    <testResources>
    <testResource>
    <directory>test</directory>
    <excludes>
    <exclude>**/*.java</exclude>
    </excludes>
    </testResource>
    </testResources>
    <plugins>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.7</version>
    <executions>
    <execution>
    <id>add-source</id>
    <phase>generate-sources</phase>
    <goals>
    <goal>add-source</goal>
    </goals>
    <configuration>
    <sources>
    <source>src</source>
    <source>gen-src/client</source>
    </sources>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <configuration>
    <manifestLocation>src/main/resources/META-INF</manifestLocation>
    <instructions>
    <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
    <Bundle-Name>${pom.artifactId}</Bundle-Name>
    <Export-Package>{local-packages}</Export-Package>
    <Import-Package>*</Import-Package>

<Include-Resource>{maven-resources},build/classes/buildinfo.properties</Include-Resource>
    <X-Raptor-Pipeline-Handler></X-Raptor-Pipeline-Handler>
    </instructions>
    <executions>
    <execution>
    <id>default-bundle</id>
    <phase>compile</phase>
    <goals>
    <goal>bundle</goal>
    </goals>
    </execution>
    </executions>
    </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

If you can guide me step by step then it will be great for me to fix this
problem.. Thanks for your time and help.






*Raihan Jamal*


On Sun, Aug 25, 2013 at 8:36 AM, Tommy Svensson <[email protected]> wrote:

> Hello Jamal,
>
> Both your mails seems to be the same thing.
>
> The following import:
>
>         Import-Package: com.host.kernel.logger;version="[1.19,2)",...
>
> means that this package is not available in the bundle being started and
> needs to be imported from another bundle exporting this package.
>
> The following error message:
>
>         Unresolved constraint in bundle GoldenlseyeStorageService [1]:
> Unable
>         to resolve 1.0: missing requirement [1.0] osgi.wiring.package;
>
> (&(osgi.wiring.package=com.host.kernel.logger)(version>=1.19.0)(!(version>=2.0.0)))
>
> says the the package the bundle wants to import is not being exported by
> any other bundle, and thus cannot be imported.
>
> There are 2 ways to solve this:
>
> 1) Another bundle exporting this package needs to be deployed.
>
> 2) A jar containing this package needs to be included/embeded within the
> bundle instead of being imported from other bundle.
>
> Also note that a mismatch in version number of imported package and
> exported package will not resolve!
>
> From the pom in your other mail I see you have several dependencies. Only
> one of them have a scope specified (compile), but if I remember correctly
> no scope specification is the same as "compile". I'm also unsure what the
> defaults are for the "maven-bundle-plugin", you only specify the following
> instructions:
>
>
> <Bundle-SymbolicName>GoldeneyeModellingFramework</Bundle-SymbolicName>
>
> <Bundle-Activator>com.host.personalize.goldeneye.framework.activator.Activator</Bundle-Activator>
>
> I always specify:
>
>         <Embed-Dependency>*;scope=compile</Embed-Dependency>
>
> which will embed all jars with compile scope. Those I don't want embedded
> but import instead I specify with
>
>         <scope>provided</scope>
>
> Again, I don't know the default behavior if your dependencies gets sucked
> into your bundle or not. In my experience when you have dependencies on
> frameworks the framework jars can contain dependencies to things you don't
> use and don't need, but an "Import" will be generated by the
> maven-bundle-plugin. I have found no good way to handle those cases other
> than not use the maven-bundle-plugin more than once and then edit an manage
> the MANIFEST.MF manually.
>
> Also note that if your dependencies are included in your bundle, you also
> need to specify them in the "Bundle-Classpath". Example:
>
>         …
>         <archive>
>                 <manifestEntries>
>
> <Bundle-ClassPath>.,lib/GoldeneyeStorageService-1.0.0.jar,...</Bundle-ClassPath>
>                 </manifestEntries>
>         </archive>
>         …
>
> The maven-bundle-plugin (or underlaying BND) will try to import any
> referenced package not part of the bundle internal classpath. I see no
> Bundle-ClassPath specifications in your examples.
>
> In either case **you have dependencies that the server (felix) does not
> know about.**, or possible have not been deployed yet, i.e things are
> deployed in the wrong order. I have not used Felix directly, I use it
> through glassfish. Glassfish does a reasonable good resolve of startup
> order and redeploy later on failure. If that is a feature of Glassfish or
> Felix I don't know.
>
> Regards,
> Tommy Svensson
>
>
> 24 aug 2013 kl. 10:52 skrev Raihan Jamal <[email protected]>:
>
> > I have successfullly started an OSGi framework (Apache Felix). Now I was
> > trying to start and install and OSGi bundle. But as soon as I try
> starting
> > the OSGI bundle, I always get this below exception-
> >
> > *    Unresolved constraint in bundle GoldenlseyeStorageService [1]:
> Unable
> > to resolve 1.0: missing requirement [1.0] osgi.wiring.package;
> >
> (&(osgi.wiring.package=com.host.kernel.logger)(version>=1.19.0)(!(version>=2.0.0)))
> > *
> >
> > The company that I am working for they have made there own logger code
> > which is extending Apache Log4j. And this package
> `com.host.kernel.logger`
> > is coming from there jar file. Meaning my bundle is depending on this jar
> > maven dependency somehow. And I am not sure how can I fix the above
> > exception as it might be possible, I might need to depend on some other
> > maven dependency of our company specific that is stored in our own
> > repository.
> > Below is my simple code which is starting the OSGi framewok and then
> > trying to install/start the bundle-
> >
> >    import java.io.File;
> >
> >    import org.apache.tomcat.util.http.fileupload.FileUtils;
> >    import org.osgi.framework.Bundle;
> >    import org.osgi.framework.BundleActivator;
> >    import org.osgi.framework.BundleContext;
> >    import org.osgi.framework.BundleException;
> >    import org.osgi.framework.launch.Framework;
> >    import org.osgi.framework.launch.FrameworkFactory;
> >
> >    public class TestOSGi {
> >
> >    public static void main(String[] args) {
> >
> >    try {
> >    FileUtils.deleteDirectory(new File("felix-cache"));
> >    FrameworkFactory frameworkFactory =
> > ServiceLoader.load(FrameworkFactory.class).iterator().next();
> >
> >    Framework framework = frameworkFactory.newFramework(new
> HashMap<String,
> > String>());
> >    framework.start();
> >
> >    final BundleContext bundleContext = framework.getBundleContext();
> >    final List<Bundle> installedBundles = new LinkedList<Bundle>();
> >
> >    BundleActivator b = new org.ops4j.pax.url.mvn.internal.Activator();
> >    b.start(bundleContext);
> >
> >    String localFilename =
> > "file:C:\\Storage\\GoldenlseyeStorageService-1.0.0.jar";
> >
> >    installedBundles.add(bundleContext.installBundle(localFilename));
> >
> >    for (Bundle bundle : installedBundles) {
> >    bundle.start();
> >    }
> >
> >    } catch (IOException e) {
> >    e.printStackTrace();
> >    } catch (BundleException e) {
> >    e.printStackTrace();
> >    } catch (Exception e) {
> >    e.printStackTrace();
> >    }
> >
> >    }
> >    }
> > Below is the manifest file for my `GoldenlseyeStorageService` bundle
> that I
> > am trying to install-
> >
> >    Manifest-Version: 1.0
> >    Bnd-LastModified: 1377333824248
> >    Build-Jdk: 1.6.0_26
> >    Built-By: rjamal
> >    Bundle-Description: Managed dependencies and plugins across all
> Raptor a
> >     pplications.
> >    Bundle-ManifestVersion: 2
> >    Bundle-Name: GoldenlseyeStorageService
> >    Bundle-SymbolicName: GoldenlseyeStorageService
> >    Bundle-Version: 1.0.0
> >    Created-By: Apache Maven Bundle Plugin
> >    Export-Package: com.host.domain.sharedpersonalize.storageservice;use
> >
> s:="com.host.soaframework.common.exceptions,com.host.marketplace.servic
> >     es.storageservice,com.host.personalize.services.storage.consumer.ge
> >     n,com.host.personalize.services.storage.consumer,com.host.soaframew
> >
> ork.sif.service,com.host.marketplace.services,com.host.kernel.logger";v
> >
> ersion="1.0.0",com.host.marketplace.services.storageservice;uses:="java
> >
> x.xml.bind.annotation,com.host.marketplace.services,javax.activation";v
> >     ersion="1.0.0",com.host.personalize.services.storage.consumer;uses:
> >     ="javax.xml.ws
> ,com.host.marketplace.services.storageservice";version="1
> >     .0.0",com.host.personalize.services.storage.consumer.gen;uses:="com
> >     .host.soaframework.common.exceptions,com.host.personalize.services.
> >
> storage.consumer,com.host.soaframework.sif.impl.internal.service,com.eb
> >     ay.soaframework.sif.service,javax.xml.ws
> ,com.host.marketplace.services.
> >
> storageservice,com.host.soaframework.common.types,com.host.soaframework
> >
> .common.impl.internal.schema,javax.xml.namespace,com.host.soaframework.
> >     common.registration";version="1.0.0"
> >    Import-Package:
> com.host.kernel.logger;version="[1.19,2)",com.host.marke
> >
> tplace.services;version="[1.7,2)",com.host.soaframework.common.exceptio
> >
> ns;version="[1.4,2)",com.host.soaframework.common.impl.internal.schema;
> >
> version="[1.4,2)",com.host.soaframework.common.registration;version="[1
> >     .4,2)",com.host.soaframework.common.types;version="[1.4,2)",
> com.host.so
> >
> aframework.sif.impl.internal.service;version="[1.4,2)",com.host.soafram
> >
> ework.sif.service;version="[1.4,2)",javax.activation,javax.xml.bind.ann
> >     otation,javax.xml.namespace,javax.xml.ws
> >    ServicesURLStrategyVersion: 1.0.0-RELEASE
> >    Tool: Bnd-1.50.0
> >    X-Raptor-Source-Dir:
> > S:\GitViews\GoldenlseyeStream\GoldenlseyeStorageServic
> >
> >
> e/src/main/webapp,S:\GitViews\GoldenlseyeStream\GoldenlseyeStorageService/
> >
> >
> src/main/resources,S:\GitViews\GoldenlseyeStream\GoldenlseyeStorageService
> >
> >
> > Can anyone help me with this?
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to