I've just created IntraVMInvokerProxyFactoryBean and IntraVMInvokerServiceExposer which allows communication between application contexts in different web applications in the same thread. They are probably going to be added to the sandbox any day now. Because two web application do not use the same class loader serialization is required when passing objects from one web application to the other and back.
I also suggested to create a LocalInvokerProxyFactoryBean and LocalInvokerServiceExporter. Web applications that are depolyed in an EAR package together with a EJB part typically have a class loader that has the EJB part class loader as its parent which allows you to do what IntraVMInvoker does without serialization (if the classes you send back and forth are deployed in APP-INF/lib). This would allow you to get an exported service from a session bean or message driven bean like this:
If you're interested I can write this over the weekend. The advantage would be that you can reuse your application context created by ContextLoaderListener in the EJB part of your EAR.
MyService myService = (MyService)LocalInvokerProxyFactory.getProxy(MyService.class);