There is a EJBDeployer MBean I see in the JMX console. The value for CallByValue is false.
So I'm assuming all EJB calls for all apps are call-by-reference semantics? How do you configure call-by-reference on an app level (i.e. some apps call-by-value and some call-by-reference)?
What is the approx. performance benefit of doing this (we're skipping the marshalling/unmarshalling now)?
1) file [JBOSS_HOME]/[CONF]/jboss-service.xml, MBean name="jboss:service=Naming", <attribute name="CallByValue">
2) standard configuration is "true", all others configurations (default, all, web, standard) uses "false"
3) Since the cluster configuration defaults to "false", I'd keep this value as is - thus use Call By Reference. The Spec mandates the opposite, but I don't see why we wouldn't wanna let JBoss optmize /inVM/ calls.
As Jens say the SPEC conform way is call-by-value.
If you use the standard server configuration it will be so configured.
But it is a performance improvment if you use call-by-reference for the duration, because of serialization. Also the througput is better because of unburden the GC.
If you keep the behaviour in mind I see no issue why you should not use call-by-reference.