我一直致力于将Terracotta网络会话集成到我们的应用程序架构中。一切都正常运行和正确说话,但应用程序服务器不断抛出一个巨大的例外。基本上它是说JDBC连接器(命中mysql db)不可序列化(java.io.NotSerializableException: org.apache.tomcat.jdbc.pool.DataSource
)。
我们正在使用池化的JNDI连接器,我切换到基本的JNDI连接器仍然遇到了问题。
这是我们的资源:Grails 2.04托管在Tomcat 7,Mysql和最新版本的Terracotta上。
编辑:添加了会话检查输出
以下是session.inspect ()
的输出:
Session Content:
javamelody.remoteAddr = 0:0:0:0:0:0:0:1%0
SPRING_SECURITY_CONTEXT = org.springframework.security.core.context.SecurityContextImpl@f140e22a: Authentication: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@f140e22a: Principal: org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser@b56ac240: Username: test@gmail.com; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@166c8: RemoteIpAddress: 0:0:0:0:0:0:0:1%0; SessionId: 837DF793887F57E6F0563708346A9EE1; Granted Authorities: ROLE_USER
org.codehaus.groovy.grails.FLASH_SCOPE = org.codehaus.groovy.grails.web.servlet.GrailsFlashScope@58e83637
javamelody.country = US
javamelody.sessionActivation = SessionListener[sessionCount=1]
emailServersService = proxyTargetClass=true; optimize=false; opaque=false; exposeProxy=false; frozen=false
org.springframework.web.context.request.ServletRequestAttributes.DESTRUCTION_CALLBACK.(inner bean) = org.springframework.web.context.request.DestructionCallbackBindingListener@753f827a
grails-resources.debug-timestamp = 1349195096775
javamelody.remoteUser = test@gmail.com
org.springframework.web.context.request.ServletRequestAttributes.DESTRUCTION_CALLBACK.emailServersService = org.springframework.web.context.request.DestructionCallbackBindingListener@1c8f53b9
编辑2: 遵循Burt的建议后,会话侦听器会抛弃这些属性名称(以及一些冗长的堆栈跟踪),但是再次没有提到数据源。
java.lang.Exception: attribute added: SPRING_SECURITY_LAST_USERNAME
java.lang.Exception: attribute added: org.openid4java.discovery.DiscoveryInformation
java.lang.Exception: attribute added: org.codehaus.groovy.grails.FLASH_SCOPE
java.lang.Exception: attribute added: SPRING_SECURITY_CONTEXT
2012-10-02 14:17:37,827 [http-bio-8080-exec-9] DEBUG mail.EmailServersService - Initialization of new EmailServersService
java.lang.Exception: attribute added: org.springframework.web.context.request.ServletRequestAttributes.DESTRUCTION_CALLBACK.(inner bean)
现在,在不可序列化错误出现之前,侦听器不会触发。
答案 0 :(得分:1)
我通过删除已标记为会话范围的服务来解决此问题。在这项服务中,我甚至没有与jdbc数据源交互,所以我真的不知道发生了什么。
希望如果有其他人遇到这个问题,他们可以使用服务范围来弄清楚他们的实例发生了什么。