My apology for the length of this post.
In running the remote services Restlet example all of the
bundles are active as expected but the consumer fails silently,
leading me to believe that I am missing a bundle or have the
wrong set of bundles or am mixing versions inappropriately (the
OSGi console short status for the host and consumer are at the
bottom of this post).
The specific problem is that while the
start(IApplicationContext) is called on the consumer's
HelloConsumerApplication, the
addingService(ServiceReference<IHelloResource>) is not
called. No exceptions are thrown. It simply fails silently.
I believe that the host is working as expected. The
IHelloResource appears to be available (see bundle report at
the bottom of the post), and Restlet is listening on port
8080:
$ nc -z localhost 8080
Connection to localhost 8080 port [tcp/http-alt]
succeeded!
The setup that I am using follows.
Eclipse IDE:
Version: Juno Release
Build id: 20120614-1722
Target Definition for both consumer and
host:
${eclipse_home}
I am using the Restlet 2.2 SNAPSHOT, which
includes Bryan Hunt's osgi extension, because the
RestletClientContainer in the ecf provider has a dependency
on org.restlet.engine.resource.AnnotationUtils.getInstance() that
is not satisfied by Restlet 2.1.
/org.eclipse.ecf.provider.restlet
/org.eclipse.ecf.remoteservice.tm.restlet
I have two Eclipse IDE instances, one running the consumer
and the other running the host. On the host side I have
imported these example projects:
/org.eclipse.ecf.examples.remoteservice.restlet.hello
/org.eclipse.ecf.examples.remoteservice.restlet.hello.host
On the consumer side I have imported these example
projects;
/org.eclipse.ecf.examples.remoteservice.restlet.hello
/org.eclipse.ecf.examples.remoteservice.restlet.hello.consumer
The host launcher, "Restlet RSA Server.launch", is setup a
bit different than my own with regard to what it assumes is in
the "target_bundles" versus what are "workspace_bundles".
That said, I believe that I reconciled what bundles are
expected overall with the exception of a jetty
"target_bundle", org.mortbay.jetty.util@default:default. It
was not clear to me where this might have come from since
versions 7 and 8 of Jetty are packaged as "org.eclipse"
bundles. Nevertheless, the absence of this bundle did not
keep the other bundles from becoming active.
The consumer launcher, "Restlet Hello Consumer.launch",
went through the same reconciliation process for the bundles
that are expected. I also validated the plug-ins in the run
configuration.
The short status (ss) from the OSGi console follows for the
host:
id State Bundle
0 ACTIVE
org.eclipse.osgi_3.8.0.v20120529-1548
45 ACTIVE
org.apache.commons.httpclient_3.1.0.v201012070820
46 ACTIVE
org.eclipse.jetty.servlet_8.1.3.v20120522
47 ACTIVE
org.eclipse.ecf.discovery_4.0.0.v20120610-1946
49 ACTIVE
org.eclipse.ecf.remoteservice.tm.restlet_1.0.0.qualifier
50 ACTIVE
org.eclipse.equinox.console_1.0.0.v20120522-1841
51 ACTIVE
org.eclipse.equinox.http.servlet_1.1.300.v20120522-1841
52 ACTIVE
org.eclipse.ecf_3.1.300.v20120610-1946
Fragments=60
54 ACTIVE
org.apache.felix.gogo.shell_0.8.0.v201110170705
55 ACTIVE
org.eclipse.jetty.http_8.1.3.v20120522
56 ACTIVE
javax.servlet_3.0.0.v201112011016
57 RESOLVED
org.eclipse.core.runtime.compatibility.registry_3.5.100.v20120521-2346
Master=78
58 ACTIVE
org.apache.ant_1.8.3.v20120321-1730
59 ACTIVE
org.eclipse.jetty.util_8.1.3.v20120522
60 RESOLVED
org.eclipse.ecf.ssl_1.0.100.v20120610-1946
Master=52
61 ACTIVE
org.eclipse.ecf.osgi.services.remoteserviceadmin_2.1.0.v20120610-1946
62 ACTIVE
org.eclipse.ecf.identity_3.1.200.v20120610-1946
63 ACTIVE
org.eclipse.equinox.common_3.6.100.v20120522-1841
64 ACTIVE
org.eclipse.jetty.continuation_8.1.3.v20120522
65 ACTIVE
javax.servlet.jsp_2.2.0.v201112011158
66 ACTIVE
org.eclipse.jetty.server_8.1.3.v20120522
67 ACTIVE
org.eclipse.osgi.services_3.3.100.v20120522-1822
68 ACTIVE
org.apache.felix.gogo.runtime_0.8.0.v201108120515
69 ACTIVE
org.eclipse.equinox.ds_1.4.0.v20120522-1841
70 ACTIVE
org.apache.commons.logging_1.0.4.v201101211617
72 ACTIVE
javax.el_2.2.0.v201108011116
73 ACTIVE
org.eclipse.ecf.remoteservice_6.0.200.v20120610-1946
74 ACTIVE
org.eclipse.equinox.util_1.0.400.v20120522-2049
75 ACTIVE
org.eclipse.ecf.remoteservice.rest_2.2.200.v20120610-1946
76 ACTIVE
org.apache.felix.gogo.command_0.8.0.v201108120515
77 ACTIVE
org.eclipse.core.jobs_3.5.200.v20120521-2346
78 ACTIVE
org.eclipse.equinox.registry_3.5.200.v20120522-1841
Fragments=57
79 ACTIVE
org.eclipse.jetty.io_8.1.3.v20120522
80 ACTIVE
org.eclipse.jetty.security_8.1.3.v20120522
81 ACTIVE
org.eclipse.ecf.provider.restlet_1.0.0.qualifier
82 ACTIVE
org.eclipse.ecf.examples.remoteservice.restlet.hello.host_1.0.0.qualifier
83 ACTIVE
org.eclipse.equinox.http.jetty_3.0.0.v20120522-1841
84 ACTIVE
org.eclipse.equinox.concurrent_1.0.300.v20120522-2049
85 ACTIVE
org.eclipse.ecf.examples.remoteservice.restlet.hello_1.0.0.qualifier
86 ACTIVE
org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy_1.0.0.v20120610-1946
87 ACTIVE
org.apache.commons.codec_1.3.0.v201101211617
88 ACTIVE
org.eclipse.osgi.services.remoteserviceadmin_1.5.0.v20120610-1946
89 ACTIVE
org.restlet.ext.wadl_2.2.0.snapshot-v20120804-1400
90 ACTIVE
org.restlet.ext.osgi_2.2.0.snapshot-v20120804-1400
91 ACTIVE
org.restlet.ext.xml_2.2.0.snapshot-v20120804-1400
92 ACTIVE
org.restlet.ext.slf4j_2.2.0.snapshot-v20120804-1400
93 ACTIVE
org.restlet_2.2.0.snapshot-v20120804-1400
94 ACTIVE
org.restlet.ext.servlet_2.2.0.snapshot-v20120804-1400
95 ACTIVE
org.restlet.ext.simple_2.2.0.snapshot-v20120804-1400
96 ACTIVE
org.eclipse.ecf.provider.jmdns_4.1.0.v20120610-1946
97 ACTIVE
org.json_1.0.0.v201011060100
98 ACTIVE
org.eclipse.osgi.util_3.2.300.v20120522-1822
99 ACTIVE
javax.xml_1.3.4.v201005080400
osgi>
The short status (ss) from the OSGi console follows for the
consumer:
id State Bundle
0 ACTIVE
org.eclipse.osgi_3.8.0.v20120529-1548
1 ACTIVE
org.apache.commons.httpclient_3.1.0.v201012070820
2 ACTIVE
org.eclipse.equinox.p2.repository_2.2.0.v20120524-1945
3 ACTIVE
org.eclipse.equinox.console_1.0.0.v20120522-1841
4 ACTIVE
org.eclipse.osgi.services_3.3.100.v20120522-1822
5 ACTIVE
org.apache.commons.codec_1.3.0.v201101211617
6 ACTIVE
org.eclipse.equinox.preferences_3.5.0.v20120522-1841
7 ACTIVE
org.eclipse.equinox.p2.metadata_2.1.0.v20120430-2001
8 ACTIVE
org.apache.felix.gogo.shell_0.8.0.v201110170705
9 ACTIVE
org.restlet_2.2.0.snapshot-v20120804-1400
10 ACTIVE
org.eclipse.equinox.concurrent_1.0.300.v20120522-2049
11 ACTIVE
org.json_1.0.0.v201011060100
12 ACTIVE
org.eclipse.equinox.security_1.1.100.v20120522-1841
Fragments=41
13 ACTIVE
org.eclipse.equinox.common_3.6.100.v20120522-1841
14 ACTIVE
org.eclipse.ecf.examples.remoteservice.restlet.hello_1.0.0.qualifier
15 ACTIVE
org.eclipse.core.contenttype_3.4.200.v20120523-2004
16 ACTIVE
org.apache.commons.logging_1.0.4.v201101211617
17 RESOLVED
org.eclipse.core.runtime.compatibility.registry_3.5.100.v20120521-2346
Master=20
18 ACTIVE
org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657
19 ACTIVE
org.apache.felix.gogo.runtime_0.8.0.v201108120515
20 ACTIVE
org.eclipse.equinox.registry_3.5.200.v20120522-1841
Fragments=17
21 ACTIVE
javax.servlet_3.0.0.v201112011016
22 ACTIVE
org.eclipse.ant.core_3.2.400.v20120523-1752
23 ACTIVE
org.hamcrest.core_1.1.0.v20090501071000
24 ACTIVE
org.eclipse.core.jobs_3.5.200.v20120521-2346
25 ACTIVE
org.eclipse.equinox.p2.core_2.2.0.v20120430-0525
26 ACTIVE
org.eclipse.ecf.examples.remoteservice.restlet.hello.consumer_1.0.0.qualifier
27 ACTIVE
org.apache.felix.gogo.command_0.8.0.v201108120515
28 ACTIVE
org.apache.ant_1.8.3.v20120321-1730
29 ACTIVE
org.eclipse.core.runtime_3.8.0.v20120521-2346
30 ACTIVE
org.eclipse.core.runtime.compatibility.auth_3.2.300.v20120523-2004
31 ACTIVE
org.eclipse.core.variables_3.2.600.v20120521-2012
32 ACTIVE
org.eclipse.equinox.app_1.3.100.v20120522-1841
33 ACTIVE
org.restlet.ext.servlet_2.2.0.snapshot-v20120804-1400
34 ACTIVE
org.restlet.ext.osgi_2.2.0.snapshot-v20120804-1400
35 ACTIVE
org.eclipse.ecf.osgi.services.remoteserviceadmin.proxy_1.0.0.v20120610-1946
36 RESOLVED
org.eclipse.ecf.ssl_1.0.100.v20120610-1946
Master=46
37 ACTIVE
org.eclipse.ecf.remoteservice.tm.restlet_1.0.0.qualifier
38 ACTIVE
org.eclipse.ecf.identity_3.1.200.v20120610-1946
39 ACTIVE
org.eclipse.ecf.discovery_4.0.0.v20120610-1946
40 ACTIVE
org.eclipse.ecf.provider.restlet_1.0.0.qualifier
41 RESOLVED
org.eclipse.equinox.security.macosx_1.100.200.v20120522-2049
Master=12
42 ACTIVE
org.eclipse.osgi.services.remoteserviceadmin_1.5.0.v20120610-1946
43 ACTIVE
org.eclipse.ecf.osgi.services.remoteserviceadmin_2.1.0.v20120610-1946
44 ACTIVE
org.eclipse.ecf.remoteservice_6.0.200.v20120610-1946
45 ACTIVE
org.eclipse.ecf.remoteservice.rest_2.2.200.v20120610-1946
46 ACTIVE
org.eclipse.ecf_3.1.300.v20120610-1946
Fragments=36
47 ACTIVE
org.restlet.ext.xml_2.2.0.snapshot-v20120804-1400
48 ACTIVE
org.restlet.ext.wadl_2.2.0.snapshot-v20120804-1400
49 ACTIVE
org.restlet.ext.simple_2.2.0.snapshot-v20120804-1400
50 ACTIVE
org.eclipse.ecf.provider.jmdns_4.1.0.v20120610-1946
51 ACTIVE
org.eclipse.osgi.util_3.2.300.v20120522-1822
52 ACTIVE
javax.xml_1.3.4.v201005080400
osgi>
hello.host bundle and services:
osgi> bundle 82
org.eclipse.ecf.examples.remoteservice.restlet.hello.host_1.0.0.qualifier
[82]
Id=82, Status=ACTIVE Data
Root=/Users/mas/dev/tmp.server/.metadata/.plugins/org.eclipse.pde.core/Restlet
RSA Server/org.eclipse.osgi/bundles/82/data
"Registered Services"
{org.restlet.ext.osgi.IResourceProvider}={component.name=org.eclipse.ecf.examples.remoteservice.restlet.hello,
restlet.service.exported.interfaces=[org.eclipse.ecf.examples.remoteservice.restlet.hello.IHelloResource],
component.id=3, paths=[/hello], service.id=67}
{org.restlet.ext.osgi.IRouterProvider}={component.name=org.eclipse.ecf.examples.remoteservice.restlet.app.router,
component.id=4, service.id=68}
{org.restlet.ext.osgi.IApplicationProvider}={alias=/,
component.name=org.eclipse.ecf.examples.remoteservice.restlet.app,
component.id=2, service.id=69}
Services in use:
{org.restlet.ext.osgi.IRouterProvider}={component.name=org.eclipse.ecf.examples.remoteservice.restlet.app.router,
component.id=4, service.id=68}
{org.restlet.ext.osgi.IResourceProvider}={component.name=org.eclipse.ecf.examples.remoteservice.restlet.hello,
restlet.service.exported.interfaces=[org.eclipse.ecf.examples.remoteservice.restlet.hello.IHelloResource],
component.id=3, paths=[/hello], service.id=67}
Exported packages
org.eclipse.ecf.examples.internal.remoteservice.restlet.hello.host;
version="0.0.0"[exported]
Imported packages
org.eclipse.ecf.examples.remoteservice.restlet.hello;
version="0.0.0"<org.eclipse.ecf.examples.remoteservice.restlet.hello_1.0.0.qualifier
[85]>
org.restlet.ext.osgi;
version="0.0.0"<org.restlet.ext.osgi_2.2.0.snapshot-v20120804-1400
[90]>
org.restlet;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.data;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.adapter;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.application;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.component;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.connector;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.converter;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.header;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.internal;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.io;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.local;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.log;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.resource;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.security;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.engine.util;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.representation;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.resource;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.routing;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.security;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.service;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
org.restlet.util;
version="0.0.0"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
No fragment bundles
Named class space
org.eclipse.ecf.examples.remoteservice.restlet.hello.host;
bundle-version="1.0.0.qualifier"[provided]
Required bundles
org.restlet;
bundle-version="2.2.0.snapshot-v20120804-1400"<org.restlet_2.2.0.snapshot-v20120804-1400
[93]>
Thank you in advance for taking a look.
Kind regards,
-Alan Strait