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