public class EventDrivenSpaceRemotingProxyFactoryBean extends org.springframework.remoting.support.RemoteAccessor implements org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean, org.aopalliance.intercept.MethodInterceptor, RemotingInvoker, org.springframework.context.ApplicationContextAware
SpaceRemotingServiceExporter which in turn is registered with an event container.
 This proxy builds a representation of the remote invocation using SpaceRemotingEntry and
 waits for a remoting response represented by SpaceRemotingEntry.
 The proxy requires a setGigaSpace(org.openspaces.core.GigaSpace) interface to be set
 in order to write the remote invocation and wait for a response using the space API. It also
 requires a RemoteAccessor.setServiceInterface(Class) which represents the interface that will be
 proxied.
 
Allows for one way invocations (i.e. not waiting for a response). The one way invocation can
 be set globally for all of the service methods by setting setGlobalOneWay(boolean) or
 can be enabled only for methods that return void by setting setVoidOneWay(boolean). Note, if using one way invocation and an exception is raised by the
 remote service, it won't be raised by this proxy.
 
A timeout which controls how long the proxy will wait for the response can be set using setTimeout(long). The timeout value if in milliseconds.
 
The space remote proxy supports a future based invocation. This means that if, on the client
 side, one of the service interface methods returns Future, it can be
 used for async execution. Note, this means that in terms of interfaces there will have to be two
 different service interfaces (under the same package and with the same name). One for the server
 side service that returns the actual value, and one on the client side that for the same method
 simply returns the future. Another option is not having two different interfaces, but having the
 same interface with async methods (returning Future). The async methods should start
 with a specified prefix (defaults to async) and should have no implementation on the
 server side (simply return null).
 
In case of remote invocation over a partitioned space the default partitioned routing index
 will be random (the hashCode of the newly created SpaceRemotingEntry class). The proxy
 allows for a pluggable routing handler implementation by setting setRemoteRoutingHandler(RemoteRoutingHandler).
 
The actual remote invocation can be replaced with an aspect implementing RemoteInvocationAspect which can be set using setRemoteInvocationAspect(RemoteInvocationAspect). It is up the aspect to then call the actual
 remote invocation.
 
Note that it is also possible to configure method level fifo behavior, one way behavior,
 RemoteResultReducer, RemoteRoutingHandler, RemoteInvocationAspect and
 MetaArgumentsHandler using the EventDrivenRemotingMethod annotation.
SpaceRemotingServiceExporter| Modifier and Type | Field and Description | 
|---|---|
| static String | DEFAULT_ASYNC_METHOD_PREFIX | 
| Constructor and Description | 
|---|
| EventDrivenSpaceRemotingProxyFactoryBean() | 
| Modifier and Type | Method and Description | 
|---|---|
| void | afterPropertiesSet() | 
| Object | getObject() | 
| Class<?> | getObjectType() | 
| Object | invoke(org.aopalliance.intercept.MethodInvocation methodInvocation) | 
| Object | invokeRemote(org.aopalliance.intercept.MethodInvocation methodInvocation)This invocation will cause the actual remote invocation. | 
| boolean | isSingleton() | 
| void | setApplicationContext(org.springframework.context.ApplicationContext applicationContext) | 
| void | setAsyncMethodPrefix(String asyncMethodPrefix)Sets the async method prefix. | 
| void | setFifo(boolean fifo)Sets the remote invocation objects written to the Space to work in FIFO. | 
| void | setGigaSpace(GigaSpace gigaSpace)Sets the GigaSpace interface that will be used to work with the space as the transport layer
 for both writing and taking  SpaceRemotingEntry. | 
| void | setGlobalOneWay(boolean globalOneWay)If set to  true(defaults tofalse) all of the service methods will
 be invoked and the proxy will not wait for a return value. | 
| void | setMetaArgumentsHandler(MetaArgumentsHandler metaArgumentsHandler)Allows to set a meta argument handler that will control  SpaceRemotingInvocation.getMetaArguments(). | 
| void | setRemoteInvocationAspect(RemoteInvocationAspect remoteInvocationAspect)The actual remote invocation can be replaced with an aspect implementing  RemoteInvocationAspectwhich can be set usingsetRemoteInvocationAspect(RemoteInvocationAspect). | 
| void | setRemoteRoutingHandler(RemoteRoutingHandler remoteRoutingHandler)In case of remote invocation over a partitioned space the default partitioned routing index
 will be random (the hashCode of the newly created  SpaceRemotingEntryclass). | 
| void | setTimeout(long timeout)Sets the timeout that will be used to wait for the remote invocation response. | 
| void | setVoidOneWay(boolean voidOneWay)If set to  true(defaults tofalse) service methods that return void
 will be invoked and the proxy will not wait for a return value. | 
getServiceInterface, setServiceInterfacepublic static final String DEFAULT_ASYNC_METHOD_PREFIX
public EventDrivenSpaceRemotingProxyFactoryBean()
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
                           throws org.springframework.beans.BeansException
setApplicationContext in interface org.springframework.context.ApplicationContextAwareorg.springframework.beans.BeansExceptionpublic void setGigaSpace(GigaSpace gigaSpace)
SpaceRemotingEntry.public void setTimeout(long timeout)
60000 (60 seconds).public void setRemoteRoutingHandler(RemoteRoutingHandler remoteRoutingHandler)
SpaceRemotingEntry class). This
 RemoteRoutingHandler allows for custom routing computation (for example, based on one
 of the service method parameters).public void setMetaArgumentsHandler(MetaArgumentsHandler metaArgumentsHandler)
SpaceRemotingInvocation.getMetaArguments().public void setGlobalOneWay(boolean globalOneWay)
true (defaults to false) all of the service methods will
 be invoked and the proxy will not wait for a return value. Note, any exception raised by the
 remote service will be logged on the server side and not propagated to the client.public void setVoidOneWay(boolean voidOneWay)
true (defaults to false) service methods that return void
 will be invoked and the proxy will not wait for a return value. Note, any exception raised by
 the remote service will be logged on the server side and not propagated to the client.public void setFifo(boolean fifo)
SpaceRemotingServiceExporter.
 This allows for remoting to work in fifo mode without needing to set the whole Space to work
 in fifo mode.public void setAsyncMethodPrefix(String asyncMethodPrefix)
DEFAULT_ASYNC_METHOD_PREFIX.public void setRemoteInvocationAspect(RemoteInvocationAspect remoteInvocationAspect)
RemoteInvocationAspect which can be set using setRemoteInvocationAspect(RemoteInvocationAspect). It is up the aspect to then call the
 actual remote invocation.public void afterPropertiesSet()
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanpublic Object getObject()
getObject in interface org.springframework.beans.factory.FactoryBeanpublic Class<?> getObjectType()
getObjectType in interface org.springframework.beans.factory.FactoryBeanpublic boolean isSingleton()
isSingleton in interface org.springframework.beans.factory.FactoryBeanpublic Object invoke(org.aopalliance.intercept.MethodInvocation methodInvocation) throws Throwable
invoke in interface org.aopalliance.intercept.MethodInterceptorThrowablepublic Object invokeRemote(org.aopalliance.intercept.MethodInvocation methodInvocation) throws Throwable
RemotingInvokerinvokeRemote in interface RemotingInvokerThrowableCopyright © GigaSpaces.