[英]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.