I think your article pretty well made Microsoft's point. Sure there are a million reasons why the test wasn't fair (benchmarks like this never are, no matter who does them) or why different components or approaches could have been taken on the J2EE side that would make the results more closely aligned. The key is that you take .NET out of the box, develop your system with the standard components and you get a result that is excellent. You get a result that is so much better than the J2EE standard result that it takes two pages to even try to explain why the test wasn't fair.
You also try to make the point that J2EE is better because it is more open. Well, you certainly can't argue that you have a lot of choices on the J2EE side. You can use different hardware vendors, different Java compilers, different operating systems, different middle-ware, different database, etc., etc.
Yes, you have a lot of choices - until you make the choice. Then you are pretty well locked into whatever you chose. Develop a big web site using BEA WebLogic, then decide you want to switch to IBM WebSphere. Outside of the fact you'll throw away the money you've spent on WebLogic, you’ll have a lot more work than just copying your application to the WebSphere server.
The .NET side is actually the open environment. You can choose from any number of languages (only a few of which are supplied by Microsoft) and intermix them in the same project. You can choose any standard database engine. The application you develop will run in any standard web-browser. You can choose hardware from any number of vendors and mix and match them. You can choose from a wide range of development, design and project management tools. Out of all the myriad of components required to develop and run a web application, you only have to lock down one thing – the operating system.
The good news with .NET is that even the operating system limitation will probably go away. The way Microsoft architected it, .NET will run on other operating systems (eg. UNIX) if someone ports the Common Language Runtime. Since the company that does that will make a lot of money, I’m sure people are already working on it.