|
GigaSpaces XAP 9.7.2 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.remoting.support.RemotingSupport org.springframework.remoting.support.RemoteAccessor org.openspaces.remoting.ExecutorSpaceRemotingProxyFactoryBean
public class ExecutorSpaceRemotingProxyFactoryBean
A space executor remoting proxy that forward the service execution to a remote service with the space as
the transport layer. Services are remotely exported in the "server side" using the
SpaceRemotingServiceExporter
. The actual invocations uses the space executors
mechanism to perform the actual method invocation, allowing to perform async invocations (invocations that
return Future
(which is better than the sync remoting option). In general, the
executor based remoting should be used over the sync remoting option.
The proxy requires a setGigaSpace(org.openspaces.core.GigaSpace)
interface to be set in
order to write execute.
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 ExecutorRemotingTask
class).
The proxy allows for a pluggable routing handler implementation by setting
setRemoteRoutingHandler(org.openspaces.remoting.RemoteRoutingHandler)
.
The proxy allows to perform broadcast the remote invocation to all different cluster members (partitions
for example) by setting the broadcast
flag to true
. In such cases,
a custom setRemoteResultReducer(org.openspaces.remoting.RemoteResultReducer)
can be plugged to reduce the results of
all different services into a single response (assuming that the service has a return value).
The actual remote invocation can be replaced with an aspect implementing RemoteInvocationAspect
which can be set using setRemoteInvocationAspect(org.openspaces.remoting.RemoteInvocationAspect)
. It is up the aspect to then
call the actual remote invocation.
Note that it is also possible to configure method level broadcasting, RemoteResultReducer
,
RemoteRoutingHandler
, RemoteInvocationAspect
and MetaArgumentsHandler
using the
ExecutorRemotingMethod
annotation.
SpaceRemotingServiceExporter
Field Summary | |
---|---|
static String |
DEFAULT_ASYNC_METHOD_PREFIX
|
Fields inherited from class org.springframework.remoting.support.RemotingSupport |
---|
logger |
Constructor Summary | |
---|---|
ExecutorSpaceRemotingProxyFactoryBean()
|
Method Summary | |
---|---|
void |
afterPropertiesSet()
|
Object |
getObject()
|
Class<?> |
getObjectType()
|
Object |
invoke(MethodInvocation methodInvocation)
|
Object |
invokeRemote(MethodInvocation methodInvocation)
This invocation will cause the actual remote invocation. |
boolean |
isSingleton()
|
void |
setApplicationContext(ApplicationContext applicationContext)
|
void |
setBroadcast(boolean broadcast)
If set the true (defaults to false ) causes the remote invocation
to be called on all active (primary) cluster members. |
void |
setGigaSpace(GigaSpace gigaSpace)
Sets the GigaSpace interface that will be used to work with the space as the transport layer. |
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 RemoteInvocationAspect
which can be set using setRemoteInvocationAspect(org.openspaces.remoting.RemoteInvocationAspect) . |
void |
setRemoteResultReducer(RemoteResultReducer remoteResultReducer)
When using broadcast set to true , allows to plug a custom reducer that can
reduce the array of result objects into another response object. |
void |
setRemoteRoutingHandler(RemoteRoutingHandler remoteRoutingHandler)
In case of remote invocation over a partitioned space the default partitioned routing index will be random. |
void |
setReturnFirstResult(boolean returnFirstResult)
When set to true (defaults to true ) will return the first result
when using broadcast. |
void |
setTimeout(long timeout)
Sets the timeout that will be used to wait for the remote invocation response. |
Methods inherited from class org.springframework.remoting.support.RemoteAccessor |
---|
getServiceInterface, setServiceInterface |
Methods inherited from class org.springframework.remoting.support.RemotingSupport |
---|
getBeanClassLoader, overrideThreadContextClassLoader, resetThreadContextClassLoader, setBeanClassLoader |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String DEFAULT_ASYNC_METHOD_PREFIX
Constructor Detail |
---|
public ExecutorSpaceRemotingProxyFactoryBean()
Method Detail |
---|
public void setGigaSpace(GigaSpace gigaSpace)
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
setApplicationContext
in interface ApplicationContextAware
BeansException
public void setTimeout(long timeout)
60000
(60 seconds).
public void setRemoteRoutingHandler(RemoteRoutingHandler remoteRoutingHandler)
RemoteRoutingHandler
allows for custom routing computation
(for example, based on one of the service method parameters).
public void setBroadcast(boolean broadcast)
true
(defaults to false
) causes the remote invocation
to be called on all active (primary) cluster members.
public void setRemoteResultReducer(RemoteResultReducer remoteResultReducer)
true
, allows to plug a custom reducer that can
reduce the array of result objects into another response object.
public void setMetaArgumentsHandler(MetaArgumentsHandler metaArgumentsHandler)
SpaceRemotingInvocation.getMetaArguments()
.
public void setReturnFirstResult(boolean returnFirstResult)
true
(defaults to true
) will return the first result
when using broadcast. If set to false
, an array of results will be retuned.
Note, this only applies if no reducer is provided.
public void setRemoteInvocationAspect(RemoteInvocationAspect remoteInvocationAspect)
RemoteInvocationAspect
which can be set using setRemoteInvocationAspect(org.openspaces.remoting.RemoteInvocationAspect)
. It is up the aspect to then
call the actual remote invocation.
public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
public Object getObject()
getObject
in interface FactoryBean
public Class<?> getObjectType()
getObjectType
in interface FactoryBean
public boolean isSingleton()
isSingleton
in interface FactoryBean
public Object invoke(MethodInvocation methodInvocation) throws Throwable
invoke
in interface MethodInterceptor
Throwable
public Object invokeRemote(MethodInvocation methodInvocation) throws Throwable
RemotingInvoker
invokeRemote
in interface RemotingInvoker
Throwable
|
GigaSpaces XAP 9.7.2 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |