public class GenericExporter extends Object implements Exporter, Serializable
Details of
the export and unexport behavior, including the underlying transport communication protocols used
for remote invocation and additional remote invocation semantics, are defined by the particular
implementation of ITransportConfig
configuration object.
When the object exported by
export(Remote)
method, the return value is dynamic proxy(SmartStub) which represents a
direct reference to the exported object.
If the exported stub is located in Local VM
with remote object, every invoked method will have a direct reference call on remote object,
otherwise the stub was serialized and moved out side of local VM.
If the exported stub was
never serialized and no reference left pointing to this stub, this stub will be collected by GC
without calling explicitly unexport(boolean)
method.
Working with GenericExporter,
OneWayRemoteCall
annotation on desired remote method. The remote interface method with defined
OneWayRemoteCall
annotation will be called as one-way(async) remote call without return
value and without being blocking while the remote call will be execute by Remote implementation.
Steps to create distributed RPC service.
ITransportConfig
configuration object.
Example:
public interface IRemoteHello
extends Remote
{
String say( String name )
throws RemoteException;
OneWayRemoteCall
,
ITransportConfig
,
Serialized FormConstructor and Description |
---|
GenericExporter(ITransportConfig config)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
_unexport(Remote obj)
Unexport the desired obj from the underlying transport protocol and remove the obj from the
manage cache.
|
Remote |
export(Remote impl)
Exports the specified remote object and returns a proxy that can be used to invoke remote
methods on the exported remote object.
|
Remote |
export(Remote impl,
boolean allowCache)
Exports the specified remote object and returns a proxy that can be used to invoke remote
methods on the exported remote object.
|
Remote |
export(Remote impl,
ITransportConfig config,
boolean allowCache)
Exports the specified remote object with desired
ITransportConfig configuration
object and returns a proxy that can be used to invoke remote methods on the exported remote
object. |
ITransportConfig |
getConfiguration() |
boolean |
isExported(Remote obj)
Returns
true if the provided obj exported by GenericExporter. |
boolean |
unexport(boolean force)
Unexports the remote object that was exported by this
Exporter such that it will
no longer receive remote method invocations that were made possible as a result of exporting
it with this Exporter . |
boolean |
unexport(Remote obj)
Removes the remote object, obj, from the runtime of underlying transport protocol.
|
public GenericExporter(ITransportConfig config)
config
- The configuration object for this exporter. All exported objects will be used
by ITransportConfig
.public ITransportConfig getConfiguration()
public Remote export(Remote impl) throws ExportException
Exporter
instance.
The returned proxy implements an implementation-specific set of remote interfaces of the remote object and may also implement additional implementation-specific interfaces.
A remote interface is an interface that extends the interface java.rmi.Remote
and whose methods each declare at least one exception whose type is
java.rmi.RemoteException
or one of its superclasses.
If the impl
object already exported, returns the same proxy instance
representing this impl
export
in interface Exporter
impl
- a remote object to exportExportException
- if a problem occurs exporting the objectSecurityException
- if a SecurityException
occurs exporting the
objectIllegalArgumentException
- if impl
is null
IllegalStateException
- if an object has already been exported with this
Exporter
instancepublic Remote export(Remote impl, boolean allowCache) throws ExportException
Exporter
instance.
The returned proxy implements an implementation-specific set of remote interfaces of the remote object and may also implement additional implementation-specific interfaces.
A remote interface is an interface that extends the interface java.rmi.Remote
and whose methods each declare at least one exception whose type is
java.rmi.RemoteException
or one of its superclasses.
If the impl
object already exported, returns the same proxy instance
representing this impl
impl
- a remote object to exportallowCache
- allow the exported object to cached when serialized over the networkExportException
- if a problem occurs exporting the objectSecurityException
- if a SecurityException
occurs exporting the
objectIllegalArgumentException
- if impl
is null
IllegalStateException
- if an object has already been exported with this
Exporter
instancepublic Remote export(Remote impl, ITransportConfig config, boolean allowCache) throws ExportException
ITransportConfig
configuration
object and returns a proxy that can be used to invoke remote methods on the exported remote
object. This method must only be invoked once on a given Exporter
instance.
The returned proxy implements an implementation-specific set of remote interfaces of the remote object and may also implement additional implementation-specific interfaces.
A remote interface is an interface that extends the interface java.rmi.Remote
and whose methods each declare at least one exception whose type is
java.rmi.RemoteException
or one of its superclasses.
If the impl
object already exported, returns the same proxy instance
representing this impl
config
- the configuration object to export the impl
object.impl
- a remote object to exportExportException
- if a problem occurs exporting the objectSecurityException
- if a SecurityException
occurs exporting the
objectIllegalArgumentException
- if impl
is null
IllegalStateException
- if an object has already been exported with this
Exporter
instanceprotected boolean _unexport(Remote obj)
public boolean unexport(Remote obj)
obj
- the remote object to be unexported pending or in-progress calls; if false, only
unexports the object if there are no pending or in-progress callspublic boolean unexport(boolean force)
Exporter
such that it will
no longer receive remote method invocations that were made possible as a result of exporting
it with this Exporter
. The unexport operation may not occur if the
force
argument is false
. This method must only be invoked after the
export
method has been invoked on this Exporter
instance to export
a remote object successfully.
This method returns true
if upon return, the remote object is no longer
exported with this Exporter
, and false
if the remote object remains
exported with this Exporter
. This method will always return true
if it has returned true
previously.
The force
parameter serves to indicate whether or not the caller desires the
unexport to occur even if there are known remote calls pending or in progress to the remote
object that were made possible by this Exporter
:
force
is true
, then the remote object will be forcibly
unexported even if there are remote calls pending or in progress, and this method will return
true
.
force
is false
, then this acts as a hint to the
implementation that the remote object should not be unexported if there are known remote
calls pending or in progress, and this method will either unexport the remote object and
return true
or not unexport the remote object and return false
. If
the implementation detects that there are indeed remote calls pending or in progress, then it
should return false
; otherwise, it must return true
. If the
implementation does not support being able to unexport conditionally based on knowledge of
remote calls pending or in progress, then it must implement this method as if
force
were always true
. If the remote object is unexported as a result of this method, then the implementation may (and should, if possible) prevent remote calls in progress from being able to communicate their results successfully.
unexport
in interface Exporter
force
- if true
, the remote object will be unexported even if there are
remote calls pending or in progress; if false
, the remote object
may only be unexported if there are no known remote calls pending or in
progresstrue
if the remote object is unexported when this method returns and
false
otherwisepublic boolean isExported(Remote obj)
true
if the provided obj exported by GenericExporter.obj
- the object to check.true
if provided obj exported and manage by GenericExporter.Copyright © GigaSpaces.