簡體   English   中英

將會話同步添加到Spring MVC

[英]Adding session synchronization to Spring MVC

我需要將會話同步添加到Spring MVC應用程序。 我正在使用Spring 3.1.2。

需要同步,因為我將有多個AJAX調用更新會話數據。 並非在Web應用程序中同步會話數據,而是做出了設計決定,以強制同步處理傳入的呼叫。

在我的servlet.xml中,我具有以下內容:

<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="synchronizeOnSession" value="true" />
</bean>

但是,如果我從同一個會話對同一個請求處理程序進行兩次AJAX調用,它們將同時執行。 我期待的syncnizeOnSession可以防止這種情況。

我在配置中缺少什么嗎?

我最終添加了一個BeanPostProcessor來設置syncnizeOnSession標志。

添加了這個新類:

@Component
public class MyPostProcessor implements BeanPostProcessor
{
  @Override
  public Object postProcessBeforeInitialization( Object bean, String name ) throws BeansException
  {
    if( bean instanceof RequestMappingHandlerAdapter )
    {
      RequestMappingHandlerAdapter adapter = ( RequestMappingHandlerAdapter ) bean;
      adapter.setSynchronizeOnSession( true );
    }

    return bean;
  }

  @Override
  public Object postProcessAfterInitialization( Object bean, String beanName ) throws BeansException
  {
    return bean;
  }
}

與應用程序上下文中的組件掃描條目一起:

<context:component-scan base-package="com.company.base.spring.MyPostProcessor" />

您可以在handleInternal(...)處的RequestMappingHandlerAdapter(org.springframework.web.servlet.mvc.method.annotation)中設置一個斷點,以確認syncnizeOnSession設置為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM