Welcome to the new Gigaspaces XAP forum. To recover your account, please follow these instructions.

Ask Your Question

Architecture question

Looking at the original Jini service model, you usually have this setup for a network service:

Client API -> Client-side proxy -> Internal proxy/service API -> Service implementation

Where the client API is all the compile-time knowledge, and the proxy plys the internal API (plus network stuff) is deployed on the server, gets registered with the registrar, and lands on the client after a succesful service lookup.

This is a model we're looking at for GigaSpaces as well - it's nice to fully encapsulate a service in a single API and be flexible in what lives in the proxy the client receives (like, for GigaSpaces, the map/reduce control code for operations that have to span partitions). We're already roughly encapsulating our services this way and from an architecture perspective, it looks very nice and simple - all the client is concerned with is the API, no knowledge of the actual service implementation needs to be present.

However, this triggers the question of reloading. GS7 has support for reloading on the PU side, but after a reload, the old - and possibly invalid - proxy code still lives on the client. Before we dive into classloading ugly tricks, has anyone implemented a model like this and got some framework/library code that's reusable? Or are we simply on the wrong track with this setup?

{quote}This thread was imported from the previous forum. For your reference, the original is [available here|http://forum.openspaces.org/thread.jspa?threadID=3309]{quote}

asked 2009-11-11 04:18:37 -0500

cdegroot gravatar image

updated 2013-08-08 09:52:00 -0500

jaissefsfex gravatar image
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

I guess the aim of this post is not to get into a discussion the Jini technology validity. GigaSpaces using it extensively internally. Still, we have came up with few enhancements to the concept that we believe makes it much more user friendly.

Very simple approach to have a business logic that will be collocated with the space and be dynamic in nature would be to use Task/ DistributedTask executors. To remove a Task executor class from the space classloader you should simply call the IJSpace.dropClass() method. You can in fact call it from a DistributedTask executor implementation on each running partition.

Is this something you might find useful?


answered 2009-11-12 00:09:15 -0500

shay hassidim gravatar image
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2009-11-11 04:18:37 -0500

Seen: 37 times

Last updated: Nov 12 '09