In reviewing the framework code, it appears the LocalServiceProxy still serializes the parameters and result. Why? If executing in the same JVM this should be able to be bypassed - I assume with some caveats that the parameters cannot be mutated.
The current scenario seems to adversely affect performance - since almost all ‘client tier’ operations end up hitting a DataSource instance.
The documentation shows various configurations, but the one that is missing, and I would assume to be the best performing is:
==> host1, running tomcat with client tier, and middle tier
==> host2, running tomcat with client tier, and middle tier
===> database server
It is not any different in terms of single point of failure than the current environment, since if a web tier server goes down, all of those users need to log into a different instance, since the user sessions are not replicated - the same with the configuration shown above.
With a proper LocalServiceProxy, essentially just a method reference, with setup of the security context, the performance should be dramatically improve.