Well apart from the fact that Java EE started as an interface to CORBA and as such will always be tainted with the dreaded "curse of CORBA".
There are a number of anomilies with java EE servers. Yes they should be faster and yes they should be easier to use and yes they should be more reliable -- but for the most part they are not. If you are stuck waiting for minutes at a time for an e-Commerce server to respond (Air France and BBVA come to mind) then the chances are that the back end was built with Java EE.
There are reasons for this.
The early Java EE APIs were awful (EJBs in particular) ate up enormous amounts of programmers time and created thousands of lines of technical code that had nothing to do with the business application in hand. Programmers were so pleased to get anything appearing on the browser they did care how clunky it was.
Then there is the Java culture of over engineering -- why define Pi as a constant when you can have an abstract constant factory which reads an XML configuration file telling it where to find the XML file with the value of Pi.
Proprietary hardware, most enterprises had standardized on Solaris or AIX when Java EE came along and so built the new web based infrastructure on what they were familiar with. Nice though these machines are they cost at least twice as much as commodity x86 so most of these sites cannot take advantage of high perfomance, cheap x86 linux systems without significant re-engineering.
PHP works! Like COBOL or VB before it, it is intensely disliked by language purists but tens of thousands of successful business applications have been built using these "ugly" languages.
The surprise is not why more sites use Java but why more sites do not use Python. Even though there is a proliferation of web servers and frameworks they are pretty much all excellent. YouTube, Google etc are pretty impressive as reference customers. Not to mention it has a serious kool factor.