Building against the 1.2.27 tag, I've come across an issue with the order of includes in jk_global.h that breaks the build using Visual Studio 2005. Some recent changes to keepalive code started using the tcp_keepalive struct in <mstcpip.h>, which is only included in jk_global.h if _WINDOWS_ is not already defined - i.e. if <windows.h> has not already been included. Unfortunately <windows.h> is included by APR (at least in the Apache 2.0 build I have), and the APR headers are included before the #ifndef _WINDOWS_ block. Switching the APR includes to below the #ifdef WIN32 block fixes the build. It appears there's some fragility in the includes - it seems a bit odd that mod_jk is sensitive to being the first to import <windows.h> - but I didn't look hard enough at all the other defines/includes in there to say it could be separated out entirely. (On a side note, <windows.h> is included in jk_mt.h, which may not be necessary).
Can you check if the trunk jk_global.h fixes the build?
Looks good now - thanks.