After long research i could find the solution for above problem. It has to do with port bindings on
Find <!-- XSL Transform to apply to server.xml --> where you will find portHttps.
<xsl:when test="(name() = 'port' and . = '443')">
<xsl:attribute name="port"><xsl:value-of select="$portHttps" /></xsl:attribute>
$portHttps is maniuplated as $port+363, i dont why it is not coming proper but if I hardcode it with 443 it is working fine.
My question is, how do I redirect only those http requests to https, which came from port 80 or 8080. If user have set http port other than 80 or 8080, then it should not redirect to https.