## org.jboss.ejb.plugins.jrmp.interfaces
Class GenericProxy

    java.lang.Object
      |
      +--org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy

All Implemented Interfaces:
  java.io.Externalizable, java.io.Serializable

Direct Known Subclasses:
  BeanProxy, HomeProxy

public abstract class GenericProxy
extends java.lang.Object
implements java.io.Externalizable

Abstract superclass of JRMP client-side proxies.

Version:
  $Revision: 1.11 $
Author:
  Rickard Öberg (rickard.oberg@telkel.com), Jason Dillon <jason@planet57.com> *
See Also:
  `ContainerRemote`, Serialized Form

Field Summary
`protected ContainerRemote` `container` The remote interface of the container invoker of the container we proxy for.
`protected static java.lang.Object[]` `EMPTY_ARGS` An empty method parameter list.
`protected static java.lang.reflect.Method` `EQUALS` `Object.equals(java.lang.Object)` method reference.
`protected static java.lang.reflect.Method` `HASH_CODE` `Object.hashCode()` method reference.
`protected InitialContextHandle` `initialContextHandle` Provides access to the correct naming context for handle objects.
`protected java.lang.String` `name` The JNDI name of the container that we proxy for.
`protected boolean` `optimize` If `true</true>, this proxy will attempt to optimize VM-local calls.`
`protected static java.lang.reflect.Method` `TO_STRING` `Object.toString()` method reference.
`protected static TransactionPropagationContextFactory` `tpcFactory` Factory for transaction propagation contexts.

Constructor Summary
`` `GenericProxy()` A public, no-args constructor for externalization to work.
`protected` `GenericProxy(java.lang.String name, ContainerRemote container, boolean optimize)` Create a new GenericProxy.

Method Summary
`static void` `addLocal(java.lang.String jndiName, ContainerRemote invoker)` Add an invoker to the invokers map.
`protected javax.naming.InitialContext` `createInitialContext()` Create an `InitialContext` using the saved environment or create a vanilla `InitialContext` when the enviroment is null.
`protected java.rmi.MarshalledObject` `createMarshalledObject(java.lang.Object id, java.lang.reflect.Method method, java.lang.Object[] args)` Create a `MarshalledObject` suitable for invoking a remote container with.
`protected java.lang.Object` `getCredential()` Return the credentials to use for invocations with this proxy.
`protected java.security.Principal` `getPrincipal()` Return the principal to use for invocations with this proxy.
`protected javax.transaction.Transaction` `getTransaction()` Return the transaction associated with the current thread.
`protected java.lang.Object` `getTransactionPropagationContext()` Return the transaction propagation context of the transaction associated with the current thread.
`protected java.lang.Object` `invokeContainer(java.lang.Object id, java.lang.reflect.Method method, java.lang.Object[] args)` Invoke the container to handle this method invocation.
`protected boolean` `isLocal()` Returns `true` iff this instance lives in the same VM as its container.
`void` `readExternal(java.io.ObjectInput in)` Un-externalize this instance.
`static void` `removeLocal(java.lang.String jndiName)` Remove an invoker from the invokers map.
`static void` `setTPCFactory(TransactionPropagationContextFactory tpcf)` Set the transaction propagation context factory.
`static void` `setTransactionManager(javax.transaction.TransactionManager txMan)` Set the transaction manager.
`void` `writeExternal(java.io.ObjectOutput out)` Externalize this instance.

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

Field Detail

### EMPTY_ARGS

    protected static final java.lang.Object[] EMPTY_ARGS

  An empty method parameter list.

### TO_STRING

    protected static final java.lang.reflect.Method TO_STRING

  `Object.toString()` method reference.

### HASH_CODE

    protected static final java.lang.reflect.Method HASH_CODE

  `Object.hashCode()` method reference.

### EQUALS

    protected static final java.lang.reflect.Method EQUALS

  `Object.equals(java.lang.Object)` method reference.

### tpcFactory

    protected static TransactionPropagationContextFactory tpcFactory

  Factory for transaction propagation contexts. When set to a non-null value, it is used to get transaction propagation contexts for remote method invocations. If `null`, transactions are not propagated on remote method invocations.

### name

    protected java.lang.String name

  The JNDI name of the container that we proxy for.

### container

    protected ContainerRemote container

  The remote interface of the container invoker of the container we proxy for.

### optimize

    protected boolean optimize

  If `true</true>, this proxy will attempt to optimize VM-local calls.`

### initialContextHandle

    protected InitialContextHandle initialContextHandle

  Provides access to the correct naming context for handle objects.

Constructor Detail

### GenericProxy

    public GenericProxy()

  A public, no-args constructor for externalization to work.

### GenericProxy

    protected GenericProxy(java.lang.String name,
                           ContainerRemote container,
                           boolean optimize)

  Create a new GenericProxy.
  Parameters:
    `name` - The JNDI name of the container that we proxy for.
    `container` - The remote interface of the container invoker of the container we proxy for.
    `optimize` - If `true</true>, this proxy will attempt to optimize VM-local calls.`

Method Detail

### addLocal

    public static void addLocal(java.lang.String jndiName,
                                ContainerRemote invoker)

  Add an invoker to the invokers map.

### removeLocal

    public static void removeLocal(java.lang.String jndiName)

  Remove an invoker from the invokers map.

### setTransactionManager

    public static void setTransactionManager(javax.transaction.TransactionManager txMan)

  Set the transaction manager.

### setTPCFactory

    public static void setTPCFactory(TransactionPropagationContextFactory tpcf)

  Set the transaction propagation context factory.

### writeExternal

    public void writeExternal(java.io.ObjectOutput out)
                       throws java.io.IOException

  Externalize this instance. If this instance lives in a different VM than its container invoker, the remote interface of the container invoker is not externalized.
  Specified by:
    `writeExternal` in interface `java.io.Externalizable`

### readExternal

    public void readExternal(java.io.ObjectInput in)
                      throws java.io.IOException,
                             java.lang.ClassNotFoundException

  Un-externalize this instance. If this instance is deserialized in the same VM as its container invoker, the remote interface of the container invoker is restored by looking up the name in the invokers map.
  Specified by:
    `readExternal` in interface `java.io.Externalizable`

### getPrincipal

    protected java.security.Principal getPrincipal()

  Return the principal to use for invocations with this proxy.

### getCredential

    protected java.lang.Object getCredential()

  Return the credentials to use for invocations with this proxy.

### getTransaction

    protected javax.transaction.Transaction getTransaction()
                                                    throws javax.transaction.SystemException

  Return the transaction associated with the current thread. Returns `null` if the transaction manager was never set, or if no transaction is associated with the current thread.

### getTransactionPropagationContext

    protected java.lang.Object getTransactionPropagationContext()
                                                         throws javax.transaction.SystemException

  Return the transaction propagation context of the transaction associated with the current thread. Returns `null` if the transaction manager was never set, or if no transaction is associated with the current thread.

### isLocal

    protected boolean isLocal()

  Returns `true` iff this instance lives in the same VM as its container.

### createInitialContext

    protected javax.naming.InitialContext createInitialContext()
                                                        throws javax.naming.NamingException

  Create an `InitialContext` using the saved environment or create a vanilla `InitialContext` when the enviroment is null.
  Returns:
    `InitialContext` suitable for the bean that this is a proxy for.
  Throws:
    `javax.naming.NamingException` - Failed to create `InitialContext`.

### invokeContainer

    protected java.lang.Object invokeContainer(java.lang.Object id,
                                               java.lang.reflect.Method method,
                                               java.lang.Object[] args)
                                        throws java.lang.Throwable

  Invoke the container to handle this method invocation.

  If optimization is enabled and this is a local proxy, then the container is invoked directly, else a remote call is made.

  Parameters:
    `id` - ???
    `method` - The method to invoke.
    `args` - The arguments passed to the method.
  Throws:
    `java.lang.Throwable` - Failed to invoke container.

### createMarshalledObject

    protected java.rmi.MarshalledObject createMarshalledObject(java.lang.Object id,
                                                               java.lang.reflect.Method method,
                                                               java.lang.Object[] args)
                                                        throws javax.transaction.SystemException,
                                                               java.io.IOException

  Create a `MarshalledObject` suitable for invoking a remote container with.
  Parameters:
    `id` - ???
    `method` - The method to invoke.
    `args` - The arguments passed to the method.
  Returns:
    `MarshalledObject` suitable for invoking a remote container with.
  Throws:
    `javax.transaction.SystemException` - Failed to get transaction.
    `java.io.IOException` - Failed to create `MarshalledObject`.

Copyright © 2000 The JBoss Organization. All Rights Reserved.