| java.lang.Object org.jboss.invocation.Invocation org.jboss.invocation.MarshalledInvocation
All known Subclasses: org.jboss.invocation.pooled.interfaces.PooledMarshalledInvocation,
MarshalledInvocation | public class MarshalledInvocation extends Invocation implements java.io.Externalizable(Code) | | The MarshalledInvocation is an invocation that travels. As such it serializes
its payload because of lack of ClassLoader visibility.
As such it contains Marshalled data representing the byte[] of the Invocation object it extends
Besides handling the specifics of "marshalling" the payload, which could be done at the Invocation level
the Marshalled Invocation can hold optimization and needed code for distribution for example the
TransactionPropagationContext which is a serialization of the TX for distribution purposes as
well as the "hash" for the methods that we send, as opposed to sending Method objects.
Serialization "optimizations" should be coded here in the externalization implementation of the class
author: Marc Fleury author: Bill.Burke@jboss.org author: Scott.Stark@jboss.org author: Clebert.Suconic@jboss.org - added pluggable serialization version: $Revision: 57209 $ |
hashMap | static Map hashMap(Code) | | WeakHashMap> of declaring class to hashes
|
marshalledArgs | protected transient Object marshalledArgs(Code) | | |
methodHash | protected transient long methodHash(Code) | | |
methodMap | protected transient Map methodMap(Code) | | The Map of methods used by this Invocation
|
serialVersionUID | final static long serialVersionUID(Code) | | Serial Version Identifier.
|
tpc | protected Object tpc(Code) | | The Transaction Propagation Context for distribution
|
useFullHashMode | static boolean useFullHashMode(Code) | | A flag indicating if the full hash format that includes the interface
should be used
|
MarshalledInvocation | public MarshalledInvocation()(Code) | | |
calculateHash | public static long calculateHash(Method method)(Code) | | |
getFullInterfaceHashes | public static Map getFullInterfaceHashes(Class intf)(Code) | | Calculate method full hashes. This algo is taken from RMI with the full
method string built from the method toString() which includes the
modifiers, return type, declaring class, name, parameters and exceptions.
Parameters: intf - - the class/interface to calculate method hashes for. Map mapping of method string to method desc hash |
getInterfaceHashes | public static Map getInterfaceHashes(Class intf)(Code) | | Calculate method hashes. This algo is taken from RMI with the
method string built from the method name + parameters + return type. Note
that this is not able to distinguish type compatible methods from
different interfaces.
Parameters: intf - - the class/interface to calculate method hashes for. Map mapping of method string to method desc hash |
getMethodHash | public long getMethodHash()(Code) | | |
getPayloadValue | public Object getPayloadValue(Object key)(Code) | | A Marshalled invocation has serialized data in the form of
MarshalledValue objects. We overwrite the "getValue" to deserialize the
data, this assume that the thread context class loader has visibility
on the classes.
|
getTransactionPropagationContext | public Object getTransactionPropagationContext()(Code) | | |
getUseFullHashMode | public static boolean getUseFullHashMode()(Code) | | Get the full hash mode flag.
the full hash mode flag. |
getValue | public Object getValue(Object key)(Code) | | A Marshalled invocation has serialized data in the form of
MarshalledValue objects. We overwrite the "getValue" to deserialize the
data, this assume that the thread context class loader has visibility
on the classes.
|
methodToHashesMap | public static Map methodToHashesMap(Class c)(Code) | | Calculate method hashes. This algo is taken from RMI with the full
method string taken from the method.toString to include the declaring
class.
Parameters: c - the class/interface to calculate method hashes for. Map mapping of method hash to the Method object. |
removeHashes | public static void removeHashes(Class declaringClass)(Code) | | Remove all method hashes for the declaring class
Parameters: declaringClass - a class for which a calculateHash(Method) was called |
setMarshalledArguments | public void setMarshalledArguments(IMarshalledValue marshalledValue)(Code) | | This is method is used for chaing the MarshalledAruments in a Call-By-Value operation.
|
setMethodHash | public void setMethodHash(long methodHash)(Code) | | |
setMethodMap | public void setMethodMap(Map methods)(Code) | | |
setTransactionPropagationContext | public void setTransactionPropagationContext(Object tpc)(Code) | | |
setUseFullHashMode | public static void setUseFullHashMode(boolean flag)(Code) | | Set the full hash mode flag. When true, method hashes are calculated
using the getFullInterfaceHashes which is able to differentiate methods
by declaring class, return value, name and arg signature, and exceptions.
Otherwise, the getInterfaceHashes method uses, and this is only able to
differentiate classes by return value, name and arg signature. A
useFullHashMode = false is compatible with 3.2.3 and earlier.
This needs to be set consistently on the server and the client.
Parameters: flag - the full method hash calculation mode flag. |
|
|