如何定义整个Spring项目的连接范围-Web服务连接范围

时间:2018-09-05 12:42:40

标签: java spring tomcat

是否可以定义整个春季项目的范围,例如sessionrequest等?

我有一个spring项目,该项目仅用作Web服务来为其他项目提供服务,其他项目共同构成了应用程序。在Web服务项目中,有许多端点,必要时可以通过来自其他项目的soapMessages访问所有端点。

我想实现的是,这个Web服务项目每次响应其客户时,都应立即关闭连接。我找到了以下解决方案,但它们并不是解决此问题的真正方法:

在我添加的web.xml文件中

<session-config>
        <session-timeout>10</session-timeout>       
</session-config>

但这并没有按照我的意愿进行,因为它每10分钟关闭一次所有会话。

我创建了.htaccess文件并添加了

<IfModule mod_headers.c>
    Header set Connection close
</IfModule>

显然,Tomcat甚至没有对此进行评估,您只能在服务器的全局范围内设置这些属性,这些属性不是特定于项目的,而是应用于该服务器中的所有应用程序。

通过这种方式,我知道在每次请求时关闭连接并重新打开它会降低性能。

1 个答案:

答案 0 :(得分:0)

每次在API上收到请求时,都可以使用尝试资源。您可以使用try-with-resource打开会话,并将该会话用于整个流程,然后在响应之后,该会话将随作用域自动关闭。 例如:

try (Session session = sessionFactory.openSession()) {

     Response resp = service.doSomething(session);
     return resp;
}