[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] Run Eclipse Remote Service Admin on Apache Karaf

org.eclipse.core.runtime has a dependency on the org.eclipse.equinox.common;bundle-version="[3.6.100,4.0.0) which now has a dependency on org.eclipse.osgi;bundle-version="[3.7.0,4.0.0)"

So the core runtime can no longer run on Felix. This didn't used to be the case, and is a change outside of the ECF codebase, but the dependency to org.eclipse.core.runtime prevents its use on Felix.

Secondly, you shouldn't assume that just because Karaf can use Equinox that it is an unqualified 'yes'. I believe that Karaf runs with a more restrictive (read: OSGi default) behaviour for the OSGi parent classloader, whereas Eclipse runs with a slightly more loose definition.

http://svn.apache.org/repos/asf/karaf/tags/karaf-2.0.0/assembly/src/main/filtered-resources/etc/config.properties

#
# equinox boot classloader configuration
#
osgi.parentClassloader = fwk
This sets up the parent classloader to be more strictly defined (as per the OSGi spec) but Eclipse runs with 'boot' by default if this is not given. Boot gives access to packages available from the JDK which therefore may fail if running in a more restrictive framework launcher. 

The moral of this story is: don't assume, test. Speaking as someone who failed to get ECF running under Felix due to incompatible classes required by the runtime, and due to the ECF package needing the  common runtime, it was not possible to use it. I have also seen failures in Eclipse-based OSGi bundles when running in Karaf due to the different in parent classloader, even when using the Equinox implementation.

Alex

On 27 Nov 2012, at 17:59, Scott Lewis wrote:

Hi All,

I'm going to back up a little bit, so I can address Petia's original request most effectively...i.e. running ECF remote services on Apache Karaf.

1) Although I haven't yet done it myself, according to docs [1], Karaf can be used with both Apache Felix and with Equinox.  Given this, ECF remote services can certainly run on the Equinox instance of Karaf...since we run on Equinox all the time (i.e. in Eclipse, test code, server instances of Equinox + ECF, etc).

If Petria (and/or others) uses the Equinox-based instance of Karaf, then the answer to the initial question of will ECF remote services run on Karaf is an unqualified 'yes'.   We haven't (as yet) created a distribution of ECF remote services specifically for Karaf/Equinox, but this is certainly something that we could do...given sufficient resource availability.   If there is interest in us doing this, please open an enhancement to that effect [2].

In the mean time, there are some example product configurations that contain information about the full extent of dependencies for ECF Remote Services/Remote Service Admin...on simple servers.  For example, see the product configurations here [3].   I understand that this isn't ideal, but it is what we have at the moment (see the <plugins> section).

I've also created a new documentation bug [4]...for specifically documenting the ECF RS/RSA dependency structure, so that consumers of different parts of ECF remote services (e.g. different discovery and/or distribution providers), can easily determine what other dependencies are required...on which framework.  Please add yourself to this bug if you are either interested in receiving this documentation and/or willing to participate in it's creation (help wanted).

2) About ECF and Felix.   Months ago, Markus created a configuration and ran the ECF remote services/RSA examples on a previous version of Apache Felix.  To do this, he not only installed the ECF RS/RSA bundles, he also installed on Felix the necessary Equinox-specific bundles (e.g. org.eclipse.equinox.concurrent, org.eclipse.equinox.common...which contains org.eclipse.core.runtime, Equinox event, etc).  

At that time, and with the necessary parts, Felix was running ECF remote services just fine.   I don't expect that to be any different now (i.e. I don't expect that Felix has introduced any incompatibilities, ECF hasn't done so, and I don't think that Equinox has introduced any incompatibilities in the required bundles/packages/classes)...but I don't know for sure, as I haven't run ECF RS/RSA on Felix recently.

At that time, I believe that Markus also created a maven repo that contained ECF remote services...and the necessary dependencies for running RS/RSA on Felix.   All of the build scripts for doing this are located here [5].  The maven repo is here [5a].

Also...Markus created a script for running ECF on Felix using pax runner.  These scripts are located here [6].

So...although it's possible that ECF RS/RSA won't run on recent version of Felix (because of some incompatibility introduced by Equinox, us, or Felix)...I don't expect that to be the case (i.e. I expect ECF RS/RSA to work on Felix)...and so I also expect that ECF RS/RSA on Karaf/Felix would also work fine.   If it doesn't for some reason (that's under our/ECF's control) we can/could certainly address it.

That's my (Scott) understanding of things.  I wasn't aware of Karaf until recently, but I would like to move toward creating a distribution of ECF remote services specifically for Karaf...in order to make it easy for Karaf users (of either Felix or Equinox stripe) to use ECF remote services (of whatever provider configuration).  If others are able/willing to contribute to this then let's get it started.

Thanks,

Scott

[1] http://karaf.apache.org/
[2] https://bugs.eclipse.org/bugs/enter_bug.cgi?product=ECF
[3] http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/examples/bundles/org.eclipse.ecf.examples.remoteservices.hello.host/products
[4] https://bugs.eclipse.org/bugs/show_bug.cgi?id=395189
[5] https://github.com/ECF/Build
[5a] http://download.ecf-project.org/maven
[6] https://github.com/ECF/ECF4Felix



On 11/26/2012 12:39 PM, Scott Lewis wrote:

Hi Alex,

I'm not sure this is correct.  ECF does use (e.g.) the equinox event impl, but I would expect that those bundles could be run on/with Karaf...especially since 1) Karaf can apparently use either equinox or Felix and 2) ECF rs/rsa runs just fine on Felix (w equinox bundles).

I'm traveling today so cannot detail right now, but Alex if you have specifics wrt Karaf please detail.

Scott


Alex Blewitt <alex.blewitt@xxxxxxxxx> wrote:

On 26 Nov 2012, at 10:45, Petia Sotirova wrote:

I'm trying to integrate Eclipse Communication Framework (OSGi Remote Service Admin implementation) on Apache Karaf.
I use Apache Karaf version 2.3.0, and build of ECF 3.5.6 - http://www.eclipse.org/downloads/download.php?file=/rt/ecf/3.5.6/org.eclipse.ecf.sdk_3.5.6.v20120610-1946.zip
I install :
org.eclipse.osgi.services.remoteserviceadmin_1.5.0.v20120610-1946.jar
org.eclipse.ecf.osgi.services.remoteserviceadmin_2.1.0.v20120610-1946.jar, org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy_1.0.0.v20120610-1946.jar
I'm trying to install its dependencies, but org.eclipse.ecf.osgi.services.remoteserviceadmin_2.1.0.v20120610-1946.jar requires org.eclipse.osgi.framework.eventmgr package. I found just org.eclipse.osgi.jar bundle to export that package, but it is core osgi platform bundle and conflicts with Apache Karaf basic set of bundles (At least Web console could not start)

Could you please tell me the basic set of bundles I needed to run OSGi Remote Service Admin on Apache Karaf. 

No, it's currently not possible at the moment as the ECF package has some (transitive) dependencies which are only provided as part of the Equinox OSGi runtime. 

Alex


_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev

_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev