[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Hi Scott.
I finally got the whole communication work. Here are a couple of
questions that I have: for me to get things to work, I had to
orchestrate the timing carefully; it seems that at the time that I am
creating the adapter (for remote service) on the client side, it checks
for the services that are exposed and not when it is trying to get the
reference to the remote services. In other words, I need to make sure
that the "server" has published the service for that client before
creating the adapter on the client side. This restriction on timing is
not very ideal since given the use case that I have, both client and
server can come on line and go off line and again come back on line.
Another question I have is related to exposing services on the server
side. With the XMPP Provider, I need to have the client's id's when I
want to register my service on the server side. What if at the time that
my server is doing that, some clients are not there yet and later on
they show up, or even new clients get added? I can have a presence
listener to catch any new client that joins in but is it okay if I have
the registration
adapter.registerRemoteService(new String[]{Myservice.class.getName()},
this, props);
in my listener where the properties props has the ID of the new client
that just showed up? In other words, is it ok to invoke the above line
of code multiple times, once per each client, inside my presence
listener. What is a better way to do that?
Finally, for adding an option to enable the auto-reconnect using Smack
3.1 library, I have opened this issue:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=313028
Many thanks
ali.
On 5/15/2010 11:33 AM, Scott Lewis wrote:
Hi Ali,
Ali Naddaf wrote:
Thank you Scott. I have made some progress there and hopefully soon
will have a complete working example that I can share in case you
would be interested in posting that. I am sure I will have some
questions on the way but one that I ran into is the following: if I
make a connection (using container.connect(...)), and if I lose
connectivity (due to network) and gain internet connectivity again, I
will not be reconnected automatically. If I were to use the smack
libraries directly to connect to a jabber server, it would reconnect
automatically so is there an option there that I can enable this
feature?
I don't think so, but since it's been quite a few months since I've
examined the Smack autoreconnect API I'm not completely certain. For
your reference, most of the Smack connection setup/handling code in
the ECF provider (in bundle: org.eclipse.ecf.provider.xmpp) is in this
class:
org.eclipse.ecf.internal.provider.xmpp.smack.ECFConnection
If not, what is the correct approach: should I register a listener
and manually reconnect?
Yes, you can/could register a listener and reconnect. You will want
to make sure that you do not reconnect in the same thread that calls
the listener.
Another option would be to add a reconnect option to the XMPP provider
(e.g. upon container creation) and then use the underlying Smack 3.1
autoreconnect (ECF moved to Smack 3.1 last fall). If you decide to do
this (modify/enhance the provider: org.eclipse.ecf.provider.xmpp),
please open an enhancement request to that effect. It's likely too
late to get such a change into the provider for Helios, but it could
be in (e.g.) a future release of ECF.
Thanks,
Scott
Thanks
Ali.
On 5/14/2010 10:16 PM, Scott Lewis wrote:
Hi Ali,
Ali Naddaf wrote:
Hello everyone.
I like to use the XMPP container of ECF to do the following: I have
two separate instances of OSGi framework running on separate
networks. I want to remotely call services of each framework from
the other one using, say, Google's jabber server (gtalk). To that
effect, I will create two gtalk accounts, one for each framework.
Right.
In the above scenario, do I still need to employ any discovery
mechanism?
No, you don't.
If each framework knows about the other framework's jabber id,
would that be adequate?
Yes.
Is there a sample code (example) or a test case for this? I see
some xmpp examples in the ecf source repository but they are
mostly (as far as I can see) concerned with sending a message not
calling a remote service.
There is test code for the xmpp usage of remote services. It's for
testing the ECF remote services API usage...rather than the OSGi remote
services (which is built upon ECF remote services), but it does give
some idea of how to do remote services using XMPP. We currently don't
run these tests automatically, because we need to setup/run an xmpp
server consistently to be able to do so. Hopefully we will be able to
do this soon (run an xmpp server consistently).
The test class is:
org.eclipse.ecf.tests.provider.xmpp.remoteservice.RemoteServiceTest
This is in this test plugin: org.eclipse.ecf.tests.provider.xmpp
This plugin is in <ecf home>/tests/bundles in ECF CVS area.
Hope this helps. Please keep informed about how this is going, and I
will provide as much support as possible.
Scott
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ecf-dev