Hi In the text you, like most I think, define services to be distributed. I do not understand why everybody introduce that limitation. You can implement a one JVM system in that uses business oriented "services" (interface programing) that locates the service implementors at run or call time. I do not see a fundamental difference in that architecture and the distributed SOA. Equally I do not think you should consider a architecture as SOA if you have hardcoded the impleremtor of a webservice even if it is business oriented and loosely coupled otherwise...
Perhaps it is sufficent to have a broker between the service requestor and implementor? That is when you truly have decoupled the system, if the implementor and requestor runns in the same JVM or not does not seem that relevant. (in theory :-) )