Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javassist.rmi
Class ObjectImporter

    java.lang.Object
      |
      +--javassist.rmi.ObjectImporter

All Implemented Interfaces:
  java.io.Serializable

public class ObjectImporter
extends java.lang.Object
implements java.io.Serializable

The object importer enables applets to call a method on a remote object running on the `Webserver`.

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,

- The parameter objects cannot contain the proxy object as a field value.
- If class `C` is of the remote object, then the applet cannot instantiate `C` locally or remotely.

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:
  `AppletServer`, `RemoteException`, `Viewer`, Serialized Form

Constructor Summary
`ObjectImporter(java.applet.Applet applet)` Constructs an object importer.
`ObjectImporter(java.lang.String servername, int port)` Constructs an object importer.

Method Summary
`java.lang.Object` | `call(int objectid, int methodid, java.lang.Object[] args)` Calls a method on a remote object.
`java.lang.Object` | `getObject(java.lang.String name)` Finds the object exported by a server with the specified name.
`java.lang.Object` | `lookupObject(java.lang.String name)` Finds the object exported by the server with the specified name.
`void` | `setHttpProxy(java.lang.String host, int port)` Sets an http proxy server.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ObjectImporter

    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` - the applet loaded from the `Webserver`.

### ObjectImporter

    public ObjectImporter(java.lang.String servername,
                          int port)

  Constructs an object importer.

  If you run a program with `javassist.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:
  `Viewer`

Method Detail

### getObject

    public java.lang.Object getObject(java.lang.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` - the name of the exported object.
  Returns:
    the proxy object or null.

### setHttpProxy

    public void setHttpProxy(java.lang.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.

### lookupObject

    public java.lang.Object lookupObject(java.lang.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` - the name of the exported object.
  Returns:
    the proxy object.
    `ObjectNotFoundException`

### call

    public java.lang.Object call(int objectid,
                                 int methodid,
                                 java.lang.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.

    `RemoteException`

Overview | Package | Class | Use | Tree | Deprecated | Index
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Javassist, a Java-bytecode translator toolkit. Copyright (C) 1999-2003 Shigeru Chiba. All Rights Reserved.