Top Description Fields Constructors Methods
javassist.tools.rmi

public Class ObjectImporter

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Imports
java.io.BufferedInputStream, .BufferedOutputStream, .IOException, .InputStream, .ObjectInputStream, .ObjectOutputStream, .OutputStream, java.lang.reflect.Constructor, java.net.Socket, .URL

The object importer enables applets to call a method on a remote object running on the Webserver (the main class of this package).

To access the remote object, the applet first calls lookupObject() and obtains a proxy object, which is a reference to that object. The class name of the proxy object is identical to that of the remote object. The proxy object provides the same set of methods as the remote object. If one of the methods is invoked on the proxy object, the invocation is delegated to the remote object. From the viewpoint of the applet, therefore, the two objects are identical. The applet can access the object on the server with the regular Java syntax without concern about the actual location.

The methods remotely called by the applet must be public. This is true even if the applet's class and the remote object's classs belong to the same package.

If class X is a class of remote objects, a subclass of X must be also a class of remote objects. On the other hand, this restriction is not applied to the superclass of X. The class X does not have to contain a constructor taking no arguments.

The parameters to a remote method is passed in the call-by-value manner. Thus all the parameter classes must implement java.io.Serializable. However, if the parameter is the proxy object, the reference to the remote object instead of a copy of the object is passed to the method.

Because of the limitations of the current implementation,

All the exceptions thrown by the remote object are converted into RemoteException. Since this exception is a subclass of RuntimeException, the caller method does not need to catch the exception. However, good programs should catch the RuntimeException.

See Also
javassist.tools.rmi.AppletServer, javassist.tools.rmi.RemoteException, javassist.tools.web.Viewer

Field Summary

Modifier and TypeField and Description
private final byte[]
protected byte[]
private int
private String
private int
private static final Class<?>[]
protected byte[]
private static final long
serialVersionUID

default serialVersionUID

private String

Constructor Summary

AccessConstructor and Description
public
ObjectImporter(java.applet.Applet
the applet loaded from the Webserver.
applet
)

Constructs an object importer.

public
ObjectImporter(String servername, int port)

Constructs an object importer.

Method Summary

Modifier and TypeMethod and Description
public Object
call(int objectid, int methodid, Object[] args)

Calls a method on a remote object.

private Object
createProxy(int oid, String classname)

public Object

Returns:

the proxy object or null.
getObject
(String
the name of the exported object.
name
)

Finds the object exported by a server with the specified name.

public Object

Returns:

the proxy object.
lookupObject
(String
the name of the exported object.
name
)

Finds the object exported by the server with the specified name.

public void
setHttpProxy(String host, int port)

Sets an http proxy server.

private void
private void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

endoflineback to summary
private final byte[] endofline
lookupCommandback to summary
protected byte[] lookupCommand
orgPortback to summary
private int orgPort
orgServernameback to summary
private String orgServername
portback to summary
private int port
proxyConstructorParamTypesback to summary
private static final Class<?>[] proxyConstructorParamTypes
rmiCommandback to summary
protected byte[] rmiCommand
serialVersionUIDback to summary
private static final long serialVersionUID

default serialVersionUID

servernameback to summary
private String servername

Constructor Detail

ObjectImporterback to summary
public ObjectImporter(java.applet.Applet applet)

Constructs an object importer.

Remote objects are imported from the web server that the given applet has been loaded from.

Parameters
applet:java.applet.Applet

the applet loaded from the Webserver.

ObjectImporterback to summary
public ObjectImporter(String servername, int port)

Constructs an object importer.

If you run a program with javassist.tools.web.Viewer, you can construct an object importer as follows:

Viewer v = (Viewer)this.getClass().getClassLoader();
ObjectImporter oi = new ObjectImporter(v.getServer(), v.getPort());
See Also
javassist.tools.web.Viewer

Method Detail

callback to summary
public Object call(int objectid, int methodid, Object[] args) throws RemoteException

Calls a method on a remote object. It sends a POST request to the server (via an http proxy server if needed).

This method is called by only proxy objects.

createProxyback to summary
private Object createProxy(int oid, String classname) throws Exception
getObjectback to summary
public Object getObject(String name)

Finds the object exported by a server with the specified name. If the object is not found, this method returns null.

Parameters
name:String

the name of the exported object.

Returns:Object

the proxy object or null.

lookupObjectback to summary
public Object lookupObject(String name) throws ObjectNotFoundException

Finds the object exported by the server with the specified name. It sends a POST request to the server (via an http proxy server if needed).

Parameters
name:String

the name of the exported object.

Returns:Object

the proxy object.

setHttpProxyback to summary
public void setHttpProxy(String host, int port)

Sets an http proxy server. After this method is called, the object importer connects a server through the http proxy server.

skipHeaderback to summary
private void skipHeader(InputStream in) throws IOException
writeParametersback to summary
private void writeParameters(ObjectOutputStream dout, Object[] params) throws IOException