Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ice-dev] AbstractExecutor not found by ECF

Hi Jay Jay,

When I try to open this link in browser it says: 'this video is private'.

Scott

On 11/20/2016 6:24 PM, Jay Jay Billings wrote:
Scott,

Here's the link to the video. Hopefully it will be finished uploading by the time you get this.


I would be very interested to hear what you encounter after you see the video or if you think that what I am doing isn't actually running the core service as a remote OSGi service. I don't get any logging output, but I do see things show up on the right ports.

Jay

On Sun, Nov 20, 2016 at 5:17 PM, Scott Lewis <slewis@xxxxxxxxxxxxx> wrote:
On 11/20/2016 1:33 PM, Jay Jay Billings wrote:
Scott,

Yes, I forgot to tell you to move to the 2.2.1 branch to test this out. The changes are not in master. I'm sorry! Either the 2.2.1 or next branches will work.

You did have me on the 2.2.1 branch...and I am on it.  Maybe I'm just not finding the appropriate locations in the code.



I just finished a video that I will upload in an hour or so to show what everything looks like on my machine and provide instructions on how to get it working. It includes some footage of the Remote Services perspective showing the Core service export in the menu.

Ok, thanks much.   I'll watch/read when available.



I knew that you guys provided some JAX-RS support. It would probably be a good idea for us to switch to it and remove the dependency on Jersey (Server, not Client). I've looked at [2] a few times and I'm interested in trying it out.

One thing:   The work using Jersey is using a relatively old version of Jersey...the one from the Orbit project.  I would make sense to move up to more recent version, but that has not yet happened.  In any event, it can happen, but will just take a little effort (and hopefully a more recent version of Jersey in Orbit as wel).

Scott



Jay

On Sun, Nov 20, 2016 at 3:37 PM, Scott Lewis <slewis@xxxxxxxxxxxxx> wrote:
On 11/20/2016 9:06 AM, Jay Jay Billings wrote:
Scott,

Thanks! Ram and I will try out the EDEF file.

Thanks also for being willing to try out ICE and engage on development. I think the problem that you are experiencing is due to missing Tycho connectors. If that is the problem, then you should be able to mouse-over the error and "Discover new connectors."

Ok, this fixed all the build problems...thanks.

When I start things with Core OSGi.launch, however, I don't see any sign of the rosgi bundles...or the export of any services.  Is that just because it's under testing?   In any event, I'm willing to help with the Remote Services piece of things.

BTW, I saw that you seem to also be using Jersey Jax-RS.   Not sure whether this was known to you, but ECF does have a Jax-RS/Jersey-based remote services provider [1], and a small tutorial [2].

Thanks,

Scott

[1] https://github.com/ECF/JaxRSProviders
[2] http://wiki.eclipse.org/Tutorial:_Exposing_a_Jax_REST_service_as_an_OSGi_Remote_Service






We don't normally experience this bug because we use ICE to develop ICE. In our case, we use ICE's Developer->Clone ICE menu to clone ICE and configure the projects. Alex McCaskey set it up so that the connectors problem gets automatically fixed in that process.

Jay

On Sat, Nov 19, 2016 at 11:12 PM, Scott Lewis <slewis@xxxxxxxxxxxxx> wrote:
On 11/19/2016 6:16 PM, Jay Jay Billings wrote:
Scott,

I got the AbstractExecutor error to go away by creating a new workspace. That's not ideal, but it is simple enough with ICE's dev menu.

Ok I've resolved the bug [1].


I was able to get the perspective running. Screenshot attached. It looks like it is showing the local instance of ICE exporting the remote service.

I would like to try to connect to another instance of ice using the endpoint description you mentioned. Do you have the format for the file documented somewhere?

Yes, the EDEF format (endpoint description extender format) is defined by the Remote Service Admin specification...chap 122 in the enterprise spec.

We also have ECF documentation on using EDEF to do consumer-side discovery of remote services [2].  ECF's implementation also provides EndpointDescriptionReader and EndpointDescriptionWriter classes that implement reading/writing the EDEF  format.

For context: there are multiple ways for consumers to discover and import remote services.   It's possible (via spec) to read and automatically import remote services by embedding edef files in a bundle [2]).   It's possible to manually read in an edef xml file, modify necessary properties, and explicitly import the resulting EDEF, and it's also possible to use one of several network discovery providers (zookeeper, etcd, zeroconf, slp, dnssd, others) to publish and discover remote services via the network.  I mention these because the use cases for remote service discovery are pretty varied.

And as I mentioned in a previous note, the new Eclipse Remote Service perspective also has an EndpointDescription view that allows EDEF files to be interactively read from the file system and imported.  This is mostly intended to aid the testing and debugging of remote services.

In any event, EDEF is probably what you want to start, and ECF's impl fully supports the spec and provides support for reading/writing.  If you want other/more information please let me know and I'll be happy to provide it.

BTW, I loaded the neon.target for ICE on the given branc and am getting a large number of error messages about the maven build as per below.   Any idea what's going wrong there?  I would like to try out ICE, and I may be able to help with the remote services development, testing and debugging.

Thanks,

Scott

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=507717
[2] http://wiki.eclipse.org/EIG:File-based_Discovery_with_the_Endpoint_Description_Extender_Format

Errors in ICE workspace (sample):

Description    Resource    Path    Location    Type
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-clean-plugin:2.5:clean (execution: default-clean-1, phase: initialize)    pom.xml    /org.eclipse.ice.product    line 15    Maven Project Build Lifecycle Mapping Problem
Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-clean-plugin:2.5:clean (execution: default-clean-1, phase: initialize)    pom.xml    /org.eclipse.ice.repository    line 15    Maven Project Build Lifecycle Mapping Problem
Plugin execution not covered by lifecycle configuration: org.eclipse.tycho:tycho-compiler-plugin:0.24.0:compile (execution: default-compile, phase: compile)    pom.xml    /org.eclipse.ice.caebat.batml    line 15    Maven Project Build Lifecycle Mapping Problem
Plugin execution not covered by lifecycle configuration: org.eclipse.tycho:tycho-compiler-plugin:0.24.0:compile (execution: default-compile, phase: compile)    pom.xml    /org.eclipse.ice.caebat.batml.test    line 14    Maven Project Build Lifecycle Mapping Problem
Plugin execution not covered by lifecycle configuration: org.eclipse.tycho:tycho-compiler-plugin:0.24.0:compile (execution: default-compile, phase: compile)    pom.xml    /org.eclipse.ice.client    line 14    Maven Project Build Lifecycle Mapping Problem





Jay

On Sat, Nov 19, 2016 at 11:49 AM, Scott Lewis <slewis@xxxxxxxxxxxxx> wrote:
On 11/18/2016 3:49 PM, Jay Jay Billings wrote:
Scott,

I got by most of those errors and I seem to have everything running.

Any idea why the AbstractExecutor classload problem went away? Should I resolve the bug then?

I couldn't get verbose logging running in Eclipse (we use Equinox, not Karaf), so I noticed a warning about the R-Osgi port when I ran the service twice.

Yes, rosgi has the default behavior that it will open ports sequentially if it doesn't find the default port open (9278).  For your reference, there are port config and other rosgi properties listed here:

http://wiki.eclipse.org/R-OSGi_Properties

<stuff deleted>


So my next step is to build and test a sample service consumer. Do you have any tips on how to get verbose output from the logs?

The best place to start with logging in ECF RS/RSA is to have the remote service host report when the service gets exported and print out the endpoint description.   This is done by registering a RemoteServiceAdminListener service:

import org.osgi.service.remoteserviceadmin.RemoteServiceAdminListener;
import org.eclipse.ecf.osgi.services.remoteserviceadmin.DebugRemoteServiceAdminListener;

bundleContext.registerService(RemoteServiceAdminListener.class,new DebugRemoteServiceAdminListener(), null);

You may register this listener in any way that you want...e.g. with bundleContext, DS, etc., but to be able to report debug output it has to be registered *before* the remote service is actually exported.

Once registered, upon remote service export it will produce output to System.out...somewhat like the example xml output given below. This output should appear when the remote service is registered.

BTW, we have been working on some Eclipse-based tooling for using ECF RSA.   This UI is available if you install (into Eclipse) the 'ECF SDK for Eclipse'.   There will be a 'Remote Services' perspective, and within that perspective several views to show (e.g.) exported and imported services, endpoint discovery, ability to load endpoint descriptions from files (for remote service consumers), etc.

Thanks,

Scott

08:32:00.934;EXPORT_REGISTRATION;exportedSR={org.eclipse.ecf.mgmt.framework.IServiceManager}={component.name=org.eclipse.ecf.mgmt.kura.host.KuraServiceManager, component.id=5, service.id=83, service.bundleid=39, service.scope=bundle};cID=StringID[ecftcp://localhost:3282/server];rsId=2
--Endpoint Description---
<endpoint-descriptions xmlns="http://www.osgi.org/xmlns/rsa/v1.0.0">
  <endpoint-description>
    <property name="ecf.endpoint.id" value-type="String" value="ecftcp://localhost:3282/server"/>
    <property name="ecf.endpoint.id.ns" value-type="String" value="org.eclipse.ecf.core.identity.StringID"/>
    <property name="ecf.endpoint.ts" value-type="Long" value="1479573120930"/>
    <property name="ecf.exported.async.interfaces" value-type="String" value="*"/>
    <property name="ecf.rsvc.id" value-type="Long" value="2"/>
    <property name="endpoint.framework.uuid" value-type="String" value="e076bfaa-75ae-0016-150a-d7991d342252"/>
    <property name="endpoint.id" value-type="String" value="ecf02b48-6c4c-4b8d-8048-1e4d835c1642"/>
    <property name="endpoint.package.version.org.eclipse.ecf.mgmt.framework" value-type="String" value="1.0.0"/>
    <property name="endpoint.service.id" value-type="Long" value="83"/>
    <property name="objectClass" value-type="String">
      <array>
<value>org.eclipse.ecf.mgmt.framework.IServiceManager</value>
      </array>
    </property>
    <property name="remote.configs.supported" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
    <property name="remote.intents.supported" value-type="String">
      <array>
        <value>passByValue</value>
        <value>exactlyOnce</value>
        <value>ordered</value>
      </array>
    </property>
    <property name="service.imported" value-type="String" value="true"/>
    <property name="service.imported.configs" value-type="String">
      <array>
        <value>ecf.generic.server</value>
      </array>
    </property>
  </endpoint-description>
</endpoint-descriptions>
---End Endpoint Description





--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings





--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings





--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings





--
Jay Jay Billings
Oak Ridge National Laboratory
Twitter Handle: @jayjaybillings



Back to the top