为了实现 session-in-view Hibernate 模式,我像这样使用了我的自定义 ServletFilter:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
// Starting a database transaction
sessionFactory.getCurrentSession().beginTransaction();
// Continue the request
chain.doFilter(request, response);
// Committing the database transaction
sessionFactory.getCurrentSession().getTransaction().commit();
} catch (StaleObjectStateException se) {
// Some codes here
}
}
处理请求后似乎将提交事务。但是当我们使用 Spring BlazeDS Integration 对 Flex 的输出进行序列化时,出现了一个问题:
BlazeDS 在提交事务之前使用惰性获取序列化结果对象及其所有子对象(在 chain.doFilter 行)。如此多的查询淹没了数据库以获取对象,有时它永远不会完成。
我该如何解决这个问题?有任何配置来限制 BlazeDS 中的序列化深度吗?