|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.rmi.server.RemoteObject
java.rmi.server.RemoteServer
net.sbbi.upnp.remote.UnicastRemoteObject
public class UnicastRemoteObject
This class can be used for remote objects that need to work behind
an NAT firewall compatible with IGD UPNP specifications.
The following system properties let you setup this class :
net.sbbi.upnp.remote.deviceUDN=someUPNPDeviceUDN, the device identifier to
be used when multiple IGD upnp devices are on the network
net.sbbi.upnp.remote.failWhenNoDeviceFound=true|false, Property to throw an
exception when the object is exported and no UPNP device is found, default to false
net.sbbi.upnp.remote.failWhenDeviceCommEx=true|false, Property to throw an
exception when the object is exported and an error occurs during com with device, default to false
net.sbbi.upnp.remote.discoveryTimeout=4000, timeout in ms to discover upnp devices
default to 1500, try to increase this timeout if you can't find a present device
on the network
Each instance of this class can create a shutdown hook trigered during JVM shutdown
to make sure that the port opened with UPNP is closed.
The hook is created as soon as the port is opened on the UPNP device.
Migration for distributed objects is quite simple :
change the standard java.rmi.server.UnicastRemoteObject class extends to
this class and you're done.
If you have trouble to make the objects available from behind your router/firewall
make sure that you have correctly set the java.rmi.server.hostname system property with
an hostname matching your router/firewall IP.
Make also sure that your RMI Registry port is opened on the router
otherwise nothing will work. You can use a urn:schemas-upnp-org:device:InternetGatewayDevice:1
device just like this class to automate the job.
| Field Summary |
|---|
| Fields inherited from class java.rmi.server.RemoteObject |
|---|
ref |
| Constructor Summary | |
|---|---|
protected |
UnicastRemoteObject()
Creates and exports a new UnicastRemoteObject object using an anonymous port. |
protected |
UnicastRemoteObject(int port)
Creates and exports a new UnicastRemoteObject object using the particular supplied port. |
protected |
UnicastRemoteObject(int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
Creates and exports a new UnicastRemoteObject object using the particular supplied port and socket factories. |
| Method Summary | |
|---|---|
Object |
clone()
Returns a clone of the remote object that is distinct from the original. |
void |
closePort()
Closes the port on the UPNP router |
static RemoteStub |
exportObject(Remote obj)
Exports the remote object to make it available to receive incoming calls using an anonymous port. |
static Remote |
exportObject(Remote obj,
int port)
Exports the remote object to make it available to receive incoming calls, using the particular supplied port. |
static Remote |
exportObject(Remote obj,
int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
Exports the remote object to make it available to receive incoming calls, using a transport specified by the given socket factory. |
| Methods inherited from class java.rmi.server.RemoteServer |
|---|
getClientHost, getLog, setLog |
| Methods inherited from class java.rmi.server.RemoteObject |
|---|
equals, getRef, hashCode, toString, toStub |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
protected UnicastRemoteObject()
throws RemoteException
RemoteException - if failed to export object
protected UnicastRemoteObject(int port)
throws RemoteException
port - the port number on which the remote object receives calls
(if port is zero, an anonymous port is chosen)
RemoteException - if failed to export object
protected UnicastRemoteObject(int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
throws RemoteException
port - the port number on which the remote object receives calls
(if port is zero, an anonymous port is chosen)csf - the client-side socket factory for making calls to the
remote objectssf - the server-side socket factory for receiving remote calls
RemoteException - if failed to export object| Method Detail |
|---|
public Object clone()
throws CloneNotSupportedException
clone in class ObjectCloneNotSupportedException - if clone failed due to
a RemoteException.
public static RemoteStub exportObject(Remote obj)
throws RemoteException
obj - the remote object to be exported
RemoteException - if export fails
public static Remote exportObject(Remote obj,
int port)
throws RemoteException
obj - the remote object to be exportedport - the port to export the object on
RemoteException - if export fails
public static Remote exportObject(Remote obj,
int port,
RMIClientSocketFactory csf,
RMIServerSocketFactory ssf)
throws RemoteException
obj - the remote object to be exportedport - the port to export the object oncsf - the client-side socket factory for making calls to the
remote objectssf - the server-side socket factory for receiving remote calls
RemoteException - if export failspublic void closePort()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||