Q: What is the speed difference between an embedded servlet container vs. separate process containers.
A: The difference is roughly 5 to 10 times faster performance with embedded servlet container. The reason for this is we do not need to go through the RMI layer and serialize invocations if both the servlet and EJB containers are located within the same JVM. The EJB proxies detect local invocations and use pass-by-reference semantics rather than pass-by-value semantics in local invocations therefore dramatically increasing the performance. In 2.x series you have to explicitly turn the optimized invocations on for this to work; in 3.x series the optimized invocations are enabled by default.