IIS Timeout on JBoss Transaction

Working more with our setup we started encountering “502 – Bad Gateways” errors when allowing users to run expensive queries on our database and give them the option to export the results. A temporary solution was to increase the ARR timeout as described in this blog post; the server farm settings are relevant for this case.

However, this still leaves us with the problem of some browser timing out on lengthy requests, so that we are now looking into an AJAX solution for decoupling the JBoss transaction from the front-end.

MS SQL Reserved Keywords and Hibernate

Surprise of the day, it turns out that User is a reserved keyword in T-SQL. You are still allowed to use keywords as identifiers, but you will need to escape them with square brackets:

[code lang=”latex”]
CREATE TABLE [User] (Id int);
[/code]

So far, so inconvenient. But things start getting really pretty when you clicked your schema together with SQL Server Management Studio, which will hide the keyword restrictions from you. Unfortunately Hibernate is not equally generous, so if you go from there and use your generated Hibernate mapping, you will be presented with a beautiful exception:

[code lang=”java”]
org.hibernate.exception.SQLGrammarException: Incorrect syntax near the keyword ‘user’.
[/code]

The solution for my case was to escape the table name in the related User.hbm.xml to table=”[user]”. Mildly annoying caveat: now the file has to be edited manually each time you generate your mappings, since there is no option to wire this type of adjustment into the reveng.xml.

JBoss and IIS 7

I have spent some quality time today with moving a web application from a temporary development environment (Windows 2003 x86, IIS 6) to a production server (Windows 2008 R2 x64, IIS 7). The IIS-JBoss integration on the development servers has been set up based on mod_jk and worked without causing and troubles. However, reproducing the setup in the new environment was failing miserably. The first impression I am getting from IIS is that even logging is a science for itself, so it was even hard to determine why.

Luckily a forum post finally pointed me in the direction of Application Request Routing (ARR) module for IIS 7 as an alternative solution. Performance might be still a subject to be determined, but the installation and configuration is worlds cleaner compared to the mod_jk version.