2010-06-18 57 views
1

我在grails中使用新的Sql方法得到问题。grails sql错误

import groovy.sql.Sql 
def datasource  
def organization_config = new Sql(dataSource) 
    def orgs = organization_config.rows("select o.organizationId,o.name from organization o ") 
    session.setAttribute("org_results", orgs); 

应用程序正在运行,但在重新启动tomcat服务器时出现这些错误。

SEVERE:加载持久会话时发生IOException:java.io.WriteAbortedException:写入中止; java.io.NotSerializableException:groovy.sql.GroovyRowResult
java.io.WriteAbortedException:写入中止; java.io.NotSerializableException:groovy.sql.GroovyRowResult

任何人都可以告诉我,这是未来。

在此先感谢, SRI ..

回答

4

的Tomcat可以坚持会话accress关闭和重新启动,如果你的所有会话对象实现java.io.Serializable。如果会话对象不执行java.io.Serializable,则会话无法在关闭和重新启动后继续。在您的案例中,groovy.sql.GroovyRowResult类型的对象不执行java.io.Serializable

只要您不聚集多个Tomcat实例来为您的应用程序提供服务,就可以在正常运行期间将该消息视为无害。在这种情况下,你真的应该在你放入会话的每个类中实现这个接口。否则,Tomcat无法发布多个群集节点之间的会话。

+0

嗨codescape, Mybad。你能否给我提供一些示例代码以避免这些错误。谢谢。 – Srinath 2010-06-21 04:03:15

+0

@Srinath:添加了有关java.io.Serializable的更多信息的链接,以及如何在我的答案中实现可序列化的类。 – stefanglase 2010-06-21 06:32:25