We have a number of webapps (actually portlets) that need to talk to each other's business layers. Initially we were looking at creating a jar for each portlet's business layer and putting it into tomcat's shared/lib and making each a singleton. This does not seem to be a clean approach and I fear it will come back to bite us in the end if we deploy it this way. Is there a prefered way using spring to allow N number of webapps to access each other's backend services? Ideally I would like to keep each backend service deployed in it's own jar so that they can be maintained seperately, but also have them accessible through one context. Is this possible with spring? This design seems like it could pretty easily be implemented in an EJB tier using stateless session beans, but so far we have looked to avoid adding an EJB container unless necessary.
It seems that this has to be a fairly common request. Are there any best practices for implementing this in spring? Is spring the right solution for this problem or should I look further at an EJB approach?