From the ejb 3.0 core spec:
3.2.3 Choosing Between a Local or Remote Client View
(...)
• Remote calls involve pass-by-value. This copy semantics provides a layer of isolation between
caller and callee, and protects against the inadvertant modification of data. The client and the
bean may be programmed to assume this parameter copying.
(...)
• Local calls involve pass-by-reference. The client and the bean may be programmed to rely on
pass-by-reference semantics. For example, a client may have a large document which it wants
to pass on to the bean to modify, and the bean further passes on. In the local programming
model the sharing of state is possible. On the other hand, when the bean wants to return a data
structure to the client but the bean does not want the client to modify it, the bean explicitly copies
the data structure before returning it, while in the remote programming model the bean does
not copy the data structure because it assumes that the system will do the copy.
21.2.7 Argument Passing Semantics
An enterprise bean’s remote business interfaces and/or remote home and remote interfaces are remote
interfaces for Java RMI. The container must ensure the semantics for passing arguments conforms to
Java RMI-IIOP. Non-remote objects must be passed by value.
Specifically, the EJB container is not allowed to pass non-remote objects by reference on inter-EJB
invocations when the calling and called enterprise beans are collocated in the same JVM. Doing so
could result in the multiple beans sharing the state of a Java object, which would break the enterprise
bean’s semantics. Any local optimizations of remote interface calls must ensure the semantics for passing
arguments conforms to Java RMI-IIOP.
An enterprise bean’s local business interfaces and/or local home and local interfaces are local Java
interfaces. The caller and callee enterprise beans that make use of these local interfaces are typically
collocated in the same JVM. The EJB container must ensure the semantics for passing arguments across
these interfaces conforms to the standard argument passing semantics of the Java programming language.
Check
http://xdoclet.sourceforge.net/xdoclet/tags/bea-tags.html#@weblogic_enable-call-by-reference__0____