Under JBoss 3.x there was very little difference in the performance of invoking an EJB with a local vs remote interface as long as the ejb was, in fact, in the same jvm. JBoss seemed to have good optimization of the remote interface. For example, the cost for 10,000 creates of a trivial session bean on my desktop was: local=532 ms vs remote = 891 ms. Not a big difference.

On the other hand, under JBoss 4.0 I don't see the same level of optimization. The same test produces: local=281 ms vs remote = 45,593 ms. This is a 50 times slower and essentially the same performance as invoking the remote interface from outside the jvm.

Is this likely to be addressed in a future version or is this factor of 50 performance penalty likely to persist in 4.x?

Note than when I run the tests on WebSphere 5.x or WebLogic 8.1 the profile is similar to that of JBoss 3.2.

Your using the default configuration which explicitly disables call by reference optimization as per the ejb spec as required for the j2ee certificaton. Use the standard configuration which has the optimizations enabled by default.