Tomcat is more than enough to deploy most of the mid-end web applications without any problem but for the high-end applications which require high scalability and high availability, which might need some tune-ups with the support of expertise in this regard. Otherwise, you may realize numerous performance issues, memory leaks, server crashes etc.
IIS as a web application server is perfectly suited for .net, .net core, asp.net applications. Our core ESB runs on IIS and has hundreds of gigabytes of data moved through it every day spread across millions of transactions. We have other mission critical applications that deliver our results to patients and doctors relying on IIS web application servers. If you stay in the Microsoft development stack, IIS is a top tier, efficient, and reliable web server.
A big advantage that we use all the time is reviewing the logs that automatically get generated in IIS. It has helped us troubleshoot various problems in our applications over the years.
IIS integrates really well with Visual Studio and TFS. We are able to quickly deploy new applications and changes to applications when requested by the business.
IIS has proven that it is easy to configure and maintain with minimal effort.
tomcat is just part of the J2EE specification implementation, majorly focusing on the servlet (front-end) part. If you requires the full J2ee stack, like EJB support, you need consider other containers like Weblogic
tomcat's cluster level support is very limited
tomcat's admin/configuration is not so intuitive, and default logging needs a lot of improvement
We have no intention to replace all applications running on top of the IIS platform. Not all applications support other platforms and not all support staff are skilled in Linux/Apache platform support. Whereas IIS may not be the best performing or most secure web platform available, for the aforementioned reasons, it is impossible not to continue use of this product.
Tomcat has a very rich API set which allows us to implement our automation script to trigger the deployment, configure, stop and start Tomcat from the command line. In our projects, we embedded Tomcat in our Eclipse in all of the developer's machines so they could quickly verify their code with little effort, Azure Webapp has strong support for Tomcat so we could move our application to Azure cloud very easy. One drawback is Tomcat UI quite poorly features but we almost do not use it.
In general, Microsoft IIS is an alright product. It comes natively with Windows Server. It has good enough GUI to set things up & tweak things around. Once properly setup, it runs stably enough. And with enough Powershell magic, having a CI/CD pipeline to automatically deploy a new version of the application is doable.
Tomcat doesn't have a built-in watchdog that ensures restart upon failure, so you have to provide it externally. A very good solution is java service wrapper. The community edition is able to restart Tomcat upon out of memories exceptions.
ARR (application request routing) in Microsoft IIS Server enables the web-admins to increase the web app reliability and availability through the rule based routing and load balancing of HTTP requests which in turn provides highly available server. IIS 7.0 Manager also provides kernel as well as user mode caching for faster performance and in case if the server fails, the IIS server has good amount of details logged in its log files which help understand and debug the cause quickly. Load balancing facilitates IIS server to fight against availability issues.
Tomcat support to customize memory used and allow us to define the Connection pool and thread pool to increase system performance and availability, Tomcat server itself consume very little memory and almost no footprint. We use Tomcat in our production environment which has up to thousands of concurrent users and it is stable and provides a quick response.
In my experience, I have never had significant issues with IIS performance. Sometimes I've experienced issues with loading time, but it is mostly related to the web site code. However Amazon, Microsoft and Google providing free cloud services with very limited resources, and in that scenario, "heavy" websites on IIS could be the issue. In other situations - performance is good.
As mentioned earlier there is so much documentation or guides or stack overflow questions out there that someone will have faced the same or very similar scenario to what you are going through that you will almost certainly find a solution to what you are after.
Commercial application servers are available that support enterprise application needs, but many times this is overkill for most web applications running in the cloud, particularly for independent software vendors. The capabilities and management tools provided with these applications are superior to Tomcat, but most times unnecessary for the vast majority of web applications developed in Java.
On Windows, Microsoft IIS is easier to implement and maintain than Apache web service. Normally if you need to host PHP or other apache native content on a Windows server, it's recommended to use WAMP or equivalent software to simplify the installation, administration, and configuration of resources. However, you can use Microsoft IIS and other web services on the same server, taking care to keep separate folders and port usage for each system.
Microsoft IIS Server is scalable if the underlying server configuration is done correctly. Use x64 edition v/s 32bit and using 32bit mode application pools are some of the tweaks to be done to make the IIS server scalable. There are too many small configurations need to be carried out in order to make a highly scalable IIS server hence not giving full score in this area.
It has simplified administration efforts, thus saving much time to focus on other projects and issues.
It saves us in costs, as there are no licensing requirements.
It gives us the ability to manage all of our java applets in one place, so as to be able to host both development and production systems on one server.
Speed of development. You don't need to be an expert to expose your website through some DNS
Robust, there has never been any downtime because of IIS itself.
The ease of use can have (and has had) some negative impact because it's too easy to implement something, and then forget. When a server is taken down, those unthoughtful implementations come to light the hard way.