Environment
Oracle WLS 10.3.6
Jdev : 11.1.2.4
Use Case
An application that depends on custom shared libraries needs to be redeployed with ZERO downtime. That means without interrupting the availability of the application to existing and new clients.
E.g.
Application : MainApp (deployed as EAR)
Shared Library. : another application consisting of an employees taskflow that is bundled as ADF Library and deployed as shared library on WLS (deployed as WAR)
If the application which is deployed as Shared Lib has any bugs and since we want zero downtime we deploy a new version of the Shared Lib. But our MainApp still refer to the older version of Shared Lib. The application does not dynamically adopt to the new latest library version. As I remember this was working earlier in previous version of ADF, whenever a newer version of SharedLib was deployed, it was dynamically picked up by the MainApp. But somehow this behavior I don’t see in current version of ADF. Any thoughts?
On the other hand, for our MainApp to refer to the latest version of SharedApp we have 2 options.
1. MainApp needs to be Stopped and Started again. In this case we don’t achieve ZERO downtime as the connected sessions are interrupted.
2. Instead of Stop/Start, we can go with Production Redeployment option wherein we deploy a newer version of MainApp. In this case already connected sessions will refer to older version of MainApp and older version of Shared Lib. New sessions will get connected to newer version of MainApp and newer version of Shared Lib. This is perfectly fine and we achieve ZERO downtime. But there is a drawback.
Suppose MainApp is handled by one team and other modules(deployed as Shared Libs) are handled by different different teams. If we go with Option 2, this creates a dependency i.e. every time a SharedLib is deployed, a newer version of MainApp has to be deployed.
Any other possible solution ?
Thanks,
Sanjeeb