Java 每次初始响应后,Tomcat响应都相同

Java 每次初始响应后,Tomcat响应都相同,java,spring,tomcat,Java,Spring,Tomcat,我在tomcat上运行了一个相对简单的SpringWeb应用程序,它返回一个xml文档。初始请求进入,我可以调试代码。但是,后续请求不会放入调试器。我可以使用浏览器或soapUI发出初始请求,随后在不同浏览器/程序/机器上的请求会得到与初始请求相同的响应 localhost\u access\u日志正在填充每个请求。但是,log4j文件在第一个请求之后不会被填充 我正在使用Tomcat7和Spring3.1.1。这发生在eclipse中部署用于启用调试的tomcat上,也发生在linux上的另一

我在tomcat上运行了一个相对简单的SpringWeb应用程序,它返回一个xml文档。初始请求进入,我可以调试代码。但是,后续请求不会放入调试器。我可以使用浏览器或soapUI发出初始请求,随后在不同浏览器/程序/机器上的请求会得到与初始请求相同的响应

localhost\u access\u日志正在填充每个请求。但是,log4j文件在第一个请求之后不会被填充

我正在使用Tomcat7和Spring3.1.1。这发生在eclipse中部署用于启用调试的tomcat上,也发生在linux上的另一个tomcat服务器上

这类似于另一个从未有过公认答案的问题

因此,这似乎不是浏览器缓存不同的应用程序使请求得到相同的响应,而是某种Tomcat缓存

有什么想法吗?这里是server.xml,我认为它可能是问题的原因,但我没有看到任何危险信号。另外,我正在访问web应用程序,它可能在服务器端进行缓存

获取请求示例:http://localhost:8130/bootstrap/xml?environment=dev

它返回一个xml文档,如此RequestMapping中所述:

@RequestMapping(value = "/xml", method = RequestMethod.GET,produces="application/xml")
样本响应:

<connection_details env="dev">
  <servers>
    <server host="localhost" name="auth" port="9876"/>
  </servers>
</connection_details>
问题表现为每个请求都返回与初始请求相同的结果,即使传入GET请求的环境变量发生更改。即使来自不同浏览器和soapUI的请求也是如此

如何创建上述响应的示例:

private ModelAndView bootstrap(HttpServletResponse response, String environment) { 

        Map<String, Object> model = new HashMap<String, Object>();
        try {
            DOMSource domSource = new DOMSource(documentBuilder.parse(context
                    .getResourceAsStream(bootstrapXmlFileName)));

            model.put("xml", domSource);
            model.put("requestedEnvironment", environment);
        }
        catch (Exception e) {
            response.setHeader("ERRORS", e.getMessage());
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            return null;
        }

        return new ModelAndView("bootstrap_connection_selector", model);
    }
然后将其传递给xslt转换:

<bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.xslt.XsltView" />
        <property name="prefix" value="/WEB-INF/xsl/" />
        <property name="suffix" value=".xslt" />

    </bean>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

        <!-- parameter for the requested location --> 
        <xsl:param name="requestedlocation"/>
        <!-- start template matching on the connection_details element -->  
        <xsl:template match="/connection_details">

        <!-- duplicate the enclosing <connection_details env=xxx" element -->
        <xsl:element name="connection_details">
            <xsl:attribute name="env">
                <xsl:value-of select="@env"/>
            </xsl:attribute>

            ...

        <!-- close the <connection_details> element -->
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
最后,进行以下转换:

<bean id="viewResolver"
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.xslt.XsltView" />
        <property name="prefix" value="/WEB-INF/xsl/" />
        <property name="suffix" value=".xslt" />

    </bean>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

        <!-- parameter for the requested location --> 
        <xsl:param name="requestedlocation"/>
        <!-- start template matching on the connection_details element -->  
        <xsl:template match="/connection_details">

        <!-- duplicate the enclosing <connection_details env=xxx" element -->
        <xsl:element name="connection_details">
            <xsl:attribute name="env">
                <xsl:value-of select="@env"/>
            </xsl:attribute>

            ...

        <!-- close the <connection_details> element -->
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
server.xml:


这是一个不检查过滤器的糟糕情况。web.xml中应用了缓存过滤器,这可能是我唯一没有检查的地方。它错误地使用request.getRequestURI作为缓存的键,而实际上它需要整个请求字符串来正确地将其放置在缓存中


谢谢

您能展示一下如何生成响应以及它是什么吗?在上面添加了关于响应的详细信息。我对创建响应的过程更感兴趣。上面的其他详细信息-xslt转换可能与此有关。