FAQ

001. What version of java is required by Pax Runner?

Pax Runner is targeting Java 5.0 and beyond but a Java 1.4 compatible version is also available. See details.

002. Are there any examples of how to use Pax Runner options?

Yes, see details.

003. I'm using Pax Construct. How can I make use of Pax Runner?

Pax Construct uses Pax Runner under the hood when using pax-provision (script and maven pax plugin pax:construct goal). By using this bundles from your project are deployed to the target platform. See Pax Construct for details.

004. I'm using Spring DM (Spring OSGi). Is Pax Runner of any use?

Pax Runner will help you first of all to start up your bundles on all supported platforms. In plus Pax Runner has some extra features for Spring DM users. Read about them.

005. I'm using spring-dm profile. What version of Spring DM I get to use?

Pax Runner is using the latest released version of Spring DM at all times. So, as soon as Spring DM releases a new version that version will be automatically downloaded and used.

006. My application has a dependency on a "classic" jar. How can I use it?

To be able to use your jar in osgi, the jar's manifest must have at least some mandatory osgi headers. You can archive this goal in many ways:

  • static transformation: adding the entries by yourself, using bnd, maven-bundle-plugin or Pax Construct. In all of this ways you will be able to transform the "classic" jar into an OSGi bundle. But all of them are doing it at build time.
  • by using the wrap: protocol you will be able to transform the jar into a bundle at runtime. See details
  • using the --autoWrap option. See details

007. I have to set some framework properties. How can I do that?

Let's take for example the case when you want to set the property org.osgi.service.http.port=8080
You can archive this in different ways depending on your case:

  • using File Scanner provisioning
  • using Maven 2 POM Scanner provisioning
  • using a system property as defined by OSGi specs for BundleContext.getProperty:

    If the key is not found in the Framework properties, the system properties are then searched.

008. I want to use the same kind of urls in the targeted framework as used when starting Pax Runner. Is that possible?

Yes, that was always possible. And starting with Pax Runner version 0.8.0 it becomes much simpler as new profiles were added to support this. Now you just have to use the url or url+obr profile, as for example in:

pax-run --profiles=url

009. I'm using Pax Runner on DOS/Windows, I have the right command but I'm getting strange errors

DOS/Windows shell seems to strip the equals (=) from the command line and treats the left and right side of the equals as separate arguments for the batch file. Thus, the arguments to the java executable for an argument like (for example) --profiles=log will be split in two arguments as --profiles and log. To avoid this you will have to enclose the entire argument between quotes (") as in "--profiles=log".

010. How do I set the system classpath? You know, the -cp java option.

First you should ask yourself if you really have to do that (smile). If the answer is "yes, I do", then you should know that you can not use the -cp in the virtual machine options (--vmOptions) and instead use the --classpath (or --cp) to archive the same thing.

010. I'm using -Dorg.osgi.framework.bootdelegation but it does not work on Equinox (and/or I get a warning message)

Setting up boot delegation packages should be done by using --bootDelegation (or --bd). Setting the system property does work on Felix / Knopflerfish or Concierge but not on Equinox. Read why.

012. How can I set JVM options for Pax Runner itself?

To set JVM options for Pax Runner itself (not for the started target framework. For that you have to use --vmOptions) you have to set the environment variable JAVA_OPTS as in this example:

  • Windows:
    set JAVA_OPTS=-Xss512k -Xmx256m
    pax-run ...
    
  • *nix
    export JAVA_OPTS=-Xss512k -Xmx256m
    pax-run ...
    

013. Can I use debugging with Pax Runner?

Yes, but will have to be an remote debuging. This is because Pax Runner wil start the target framework in a separate process. To enable remote debugging you will have to:

  • Add the following option when starting Pax Runner:
    --vmOptions="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    
    For JDK's 1.3.x or earlier:
    ---vmOptions="Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
    
  • In your IDE of debugger start a remote debugging session on:
    • host: localhost (or host/ip of the machine that runs Pax Runner if is Pax Runner and debugger do not run on the same machine)
    • port: 5005 (or any port but then change also the options above)

014. Can JProfiler be used when I use Pax Runner?

Yes, it can. The following will explain how to use JProfiler with Pax Runner to profile the started OSGi framework (note that the examples are for running on on a Mac).

  • set the following environment variable:
    export DYLD_LIBRARY_PATH=/Applications/jprofiler5/bin/macos
    
  • set the following pax runner parameters (or combine them with your own):
    • set the VM options for the started VM instance (the one in which the OSGi framework will run:
      --vmOptions="-Xint -agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/Applications/jprofiler5/bin/agent.jar"
      
    • set the boot delegation to use the boot class path for JProfiler classes (classes from agent.jar above):
      --bootDelegation=com.jprofiler.*
      
  • start pax runner. Pax Runner will have to start and a message that JProfiler is waiting for a connection form JProfiler GUI
  • start a new remote session on host 127.0.0.1 port 8849 (mathes the port set in the vmOptions configuration above)

Note that the values of configuration options above you can figure them out by using the JProfile's Integration wizard for remote sessions.

015. I manually installed Pax Runner Eclipse Plugin and now I want to uninstall it

Go to your Eclipse installation and open the plugins directory. Then locate Pax Runner plugin jar and remove it. You have to restart Eclipse in order that this change to take effect.

016. I manually installed Pax Runner Eclipse Plugin and now I want to install a newer version

First follow the instructions above to uninstall the older version, then follow the manual installation steps for Pax Runner Eclipse Plugin or use the update site.

017. I installed Pax Runner Eclipse Plugin using the update site and now I want to uninstall it

In order to uninstall Pax Runner Eclipse Plugin feature you should follow the instructions from Eclipse help. The features you have to look for are named "Pax Runner Plugin for Eclipse".

018. While using Pax Runner Eclipse Plugin I get a validation error if I press "Validate bundles" or select the checkbox "Validate bundles automatically prior launching"

This can happen but is not mandatory a problem. Read more.

019. I have to use a proxy to access the world. Can I do that with Pax Runner?

Yes, see details.