Head First EJB page 87.... EJBObject's only job is to capture the incoming client calls to the bean.
Who is responsible for deserializing the arguments and providing the real heap based objects to the real bean class?
If container services are kicking in then the argument objects should already be available so as to include them in transaction and other services.
Can anyone provide the list of Key Performance Area's (KPA's) for EJBObject?
EJB uses RMI as underlying network architecture, therefore it's the container, through RMI, which takes care of remote communication. EJBObject, which is one of the classes the Container creates, implementing the bean remote component interface, acts as a middleware between the client and the real bean. Let's think at the following example: in an EJB container there is only one law: nothing can arrive to the bean if the container (or one of its 007) intercepted it first.
The lifetime is: client -> serialization -> server -> deserialization -> Container (EJBHome/EJBObject, low level services) -> bean. An EJBObject is the way a container can assure its services, still ensuring the bean-based functionalities. To see the KPA of a container (which include EJBObject features), just have a look at the EJB[Local]Object, EJB[Local]Home, SessionContext, EntityContext, UserTransaction interfaces and the services that those offer to the client. To those, add CMP for entity beans, asynchronous communication between clients and beans, the API guaranteed by each EJB 2.0 compliant server.