存档于 '项目异常日志'
严重: Exception loading sessions from persistent storage
发表时间:02. 2月, 2010 作者:Freddie.
严重: Exception loading sessions from persistent storage
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: …
J2ee的session并没有要求session attribute必须要Serializable呀。原来这是tomcat 5的新功能,服务复位后自动恢复session。
如果要禁用这一特性,到apache-tomcat/conf/Catalina/localhost目录下找到webapp同名的xml,修改成:
引用
<Context path=”…” reloadable=”…” docBase=”…” workDir=”…”>
<Manager className=”org.apache.catalina.session.PersistentManager” saveOnRestart=”false”/>
</Context>
对于使用Netbeans自带tomcat的情况,配置文件在用户Home目录下的.netbeans底下,例如我windows机器上是:
C:\Documents and Settings\pinxue\.netbeans\5.5beta\apache-tomcat-5.5.16_base\conf\Catalina\localhost\
如果想保留这个功能,但是清除异常的session持久记录,删除相应的SESSION.ser即可,该文件在:
.netbeans\5.5beta\apache-tomcat-5.5.16_base\work\Catalina\localhost\{webAppName}\SESSIONS.ser
补充:
Netbeans 重新发布 webapp 后,对应的context会重新生成,应该修改项目下META-INF/context.xml。
Netbeans生成该文件的模板是:
\Program Files\netbeans-5.5beta\enterprise3\apache-tomcat-5.5.16\conf\context.xml
详细内容
解决Hibernate的Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction definition.
发表时间:29. 1月, 2010 作者:Freddie.
一般这个错误是事务引起的,如果确定事务没有问题,还是有这个错,可以重写OpenSessionInViewFilter的2个方法
在myfaces的wiki里提供了OpenSessionInViewFilter的一个子类如下:
public class OpenSessionInViewFilter extends org.springframework.orm.hibernate3.support.OpenSessionInViewFilter {
/**
* we do a different flushmode than in the codebase
* here
*/
protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException {
Session session = SessionFactoryUtils.getSession(sessionFactory, true);
session.setFlushMode(FlushMode.COMMIT);
return session;
}
/**
* we do an explicit flush here just in case
* we do not have an automated flush
[...]
详细内容
[spring]:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode
发表时间:30. 12月, 2009 作者:Freddie.
org.springframework.dao.InvalidDataAccessApiUsageException: Write
operations are not allowed in read-only mode
(FlushMode.NEVER/MANUAL): Turn your Session into
FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction
definition.
at
org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOper
ationAllowed(HibernateTemplate.java:1095)
这个异常产生的主要原因是DAO采用了Spring容器的事务管理策略,如果操作方法的名称和事务策略中指定的被管理的名称不能够匹配上,spring 就会采取默认的事务管理策略(PROPAGATION_REQUIRED,read only).如果是插入和修改操作,就不被允许的,所以包这个异常
详细内容
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
发表时间:30. 12月, 2009 作者:Freddie.
错误日志:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:92)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:78)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:174)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:137)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:578)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:314)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy1.update(Unknown Source)
at com.tub.service.ProductServiceImpl.update(ProductServiceImpl.java:48)
at com.tub.action.ProductAction.saveOrUpdate(ProductAction.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
at [...]

