The Centive software I worked upon had a fairly standard J2EE pattern, with JSPs & EJBs handled by WebLogic, and an applet for display. However, when I started work there, and was setting up my work environment, I was told, "Do this to start up the Web server, and this to start up the app [application] server." Each started up a separate instance of WebLogic, with different J2EE apps hosted. I was told it's important to start the Web server first, wait a bit, and then start up the app server. Or maybe it was the opposite order: I can't remember. I did think it was a little odd, because I was already familiar with WebLogic from prior work, and hadn't heard of such different flavours of WebLogic. A single instance of WebLogic could certainly handle both JSPs and EJBs; there was no such thing as a "web" server or an "app" server with WebLogic.
Anyway, I dutifully started the two WebLogic servers as instructed, and did my work. But, later, actually about two months later, I was curious to find out exactly how the two WebLogic server instances were different, if only for my own edification. Upon investigation, I found that there was no difference; the entire Centive application could run perfectly well on one WebLogic server instance.
When I told my colleagues about what I had found, nobody could really remember why two WebLogic servers were customarily used. I suggested making one WebLogic server the default configuration. There were several objections, each of which I patiently countered:
To the company's credit, nobody said that we should stick with two servers because we're used to it. So I undertook to change the product to use only one WebLogic server. I took particular care to make the transition as smooth as possible:
All told, the transition took about two months, and was very successful, with everybody happily using the new configuration. What I learnt from it was the importance of the "soft" skills in ensuring its success, such as: