The client I work for has about 150 web apps that run on WebSphere, which has been a mashup of various Java patterns, frameworks, etc. (Spring, JSF, GWT, WebServices, RESTful, etc.) It is to the point where something must be done to reduce the jar versions and duplicity of features in order to improve our environment and development life-cycle.
For example, we need WebApp_A to utilize CompanyJar_v1.1.jar and we need WebApp_B to use CompanyJar_v1.5.jar.
I know that OSGi is an option, but I have heard there may be some issues with Spring and OSGi, and our apps rely heavily on Spring. This may or may not be an issue. The other concern is the amount of effort to upgrade our apps to utilize OSGi. We understand whatever the approach, time and effort will be needed to update our apps, but we want to keep this to a minimum. However, if the best long-term solution requires more effort to update the apps, then so be it.
We could also utilize WebSphere's Shared Libraries capabilities, but we do not like to use WebSphere specific solutions. This would also be very cumbersome to manage from a server standpoint since we have so many versioned jars that would need to be managed.
Has anyone had any experience with moving their convoluted environment to a more modular environment? If so, what questions should the team be asking ourselves? What technologies should we consider?
Thanks, Sean