Support
Help Save Reptile!
Navigation

Essentials

Installation

Developers

P2P (content distribution)

Search Infrastructure

Services

Proposals

Resources

JXTA integration

Reptile provides integration with the JXTA network in order to run SearchProvider queries and transfer content between peers. JXTA is integrated within Reptile so that we can also support additional P2P technologies as well as JXTA. There is no requirement that Reptile has to always run JXTA.


Integration

Reptile integrates JXTA in the org.openprivacy.reptile.jxta package. This includes all initialization code, Xalan extensions, services, singletons, etc. SearchProviders are added to the org.openprivacy.reptile.search package. Reptile JXTA services are in the org.openprivacy.reptile.jxta.services package.

Because JXTA is just another (hopefully one of many) P2P frameworks that Reptile supports. Its presence in a running Reptile instance is optional. If the reptile.system.jxta.disabled property is 'true' JXTA will not be started and the UI will be adjusted so that providers are not present.


JXTA Platform boot

JXTA is started by the JXTAInitializer class.


Reptile JXTA services.

JXTARemoteSearchProvider

This is a RemoteServiceProvider that makes a request to a remote JXTA peer running the JXTARemoteServiceProviderService and receives results from the local JXTASearchResultsCallbackService.


JXTARemoteServiceProviderService

Reptile uses a JXTA as a 'bridge' to execute searches against other nodes. This is done with a 'remote service provider'. The JXTARemoteServiceProviderService provides a JXTA native service that acts as a remote endpoint for local remote searches against a specific peer.


JXTASearchResultsCallbackService

Provides a mechanism for remote peers that we have executed a request against to run a callback against us so that we can add the results into the local provider stub.


JXTAAdvertisementSearchProvider

Used with the JXTA DiscoveryService to find other peer advertisements within the Reptile peer group. This is the main search provider you would use to find other peers with similar interestes, browse their weblog, etc.



Exchanging cached content between JXTA nodes.

Reptile needs the ability to exchange local content between each JXTA node. The HTCache should provide the content and JXTA should provide the PIPE for giving this cache to a remote peer.


RemoteServiceProviders

Currently Reptile has no concept of a RemoteServiceProvider. We need to design a specification for one.


Search XML management

Search requests are invoked by creating an AdvancedSearchRequest on the client and then serializing this to XML and passing it to the peer running the JXTARemoteSearchProvider.

We then deserialize the XML on the remote peer into a SearchRequest, pass it to a SearchProvider, run the search() method and then pass the SearchProviders state serialized to the client peer.


Creating bidirectional pipes

JXTA provides a BidirectionalPipeService that provides two way pipes between peers. This service is overly complex and Reptile should not use it as its implementation. Instead we should just use the pattern that the BidirectionalPipeService uses so that we can communicate between the callback and remote search provider.

  1. Alice wants to run a request on Bob
  2. Alice creates a Pipe advertisement
  3. Alice binds an input pipe using this advertisement
  4. Alice runs a search request on Bob so that he can answer this request. This request contacts bob via his service advertisement and passes her search request and here pipe advertisement.
  5. Bob runs the request and gets the results in a local search provider.
  6. Bob use Alice's pipe advertisement to create an output pipe to Alice
  7. Bob serializes his SearchProvider and X results and provides these to Alice. Alice then has a handle on the SearchProvider on the remote host.


TODO

  • Need to support the ability to ask everyone in the peergroup questions and then aggregate the results. Such as "what are your subscriptions" so that I can find the top subscriptions.
  • This aggregation should probably be done in in the JXTARemoteSearchProvider


  • Copyright © 2001-2003, OpenPrivacy.org