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 Form| Constructor 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 Exporterimpl - a remote object to exportExportException - if a problem occurs exporting the objectSecurityException - if a SecurityException occurs exporting the
                                  objectIllegalArgumentException - if impl is nullIllegalStateException - 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 nullIllegalStateException - 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 nullIllegalStateException - 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 Exporterforce - 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.