【发布时间】:2014-02-22 16:14:58
【问题描述】:
我正在尝试使用会话复制配置 tomcat 7 集群。
我使用了this tutorial,并且在位于 tomcat 示例中的测试 servlet 上一切正常。
http://localhost/examples/servlets/servlet/SessionExample。
所以我添加了一些属性,然后停止其中一个节点,会话复制成功。
但是当我使用 hibernate + spring mvc + spring security 将此配置移动到我的应用程序时,当我尝试登录时,我总是遇到异常
SEVERE: Unable to serialize delta request for sessionid [69845CF0E87B3F0F64FB605FAC1D4987.node1]
java.io.NotSerializableException: org.apache.commons.dbcp.BasicDataSource
我所有的会话对象都实现了 Serializable 接口,我在 web.xml 中添加了 我试过使 EntityManager 字段瞬态,但它没有帮助。我认为可能是spring试图将一些bean保存到会话中,但我已经搜索了项目并没有找到任何会话范围的bean。
有人知道如何处理这个问题吗?
更新:
public abstract class AbstractDAOImpl<E, I> implements AbstractDAO<E, I> {
private static final long serialVersionUID = 7372882616977337461L;
@PersistenceContext
protected transient EntityManager entityManager;
applicationContext.xml
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="${jdbc-driver}" p:url="${jdbc-db-url}" p:username="${jdbc-db-username}"
p:password="${jdbc-db-passwd}" p:testWhileIdle="true"
p:timeBetweenEvictionRunsMillis="7200000" p:validationQuery="select 1;"
destroy-method="close" />
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="MIQlocal" />
<property name="dataSource" ref="dataSource" />
<property name="jpaDialect" ref="jpaDialect" />
<property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property>
</bean>
<bean id="transactionManager" name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="dataSource" ref="dataSource" />
</bean>
【问题讨论】:
标签: java spring session tomcat7