0

私はTerracottaWebセッションをアプリケーションアーキテクチャに統合することに取り組んできました。すべてが正しく実行され、適切に通信していますが、アプリケーションサーバーは大きな例外をスローし続けます。基本的に、JDBCコネクタ(mysql dbにヒットする)はシリアル化できないと言っています(java.io.NotSerializableException: org.apache.tomcat.jdbc.pool.DataSource)。

プールされたJNDIコネクタを使用していますが、基本的なJNDIコネクタに切り替えても、問題が発生します。

リソースは次のとおりです。Tomcat7、Mysql、および最新バージョンのTerracottaでホストされているGrails2.04。

編集:セッション検査出力を追加しました:からの出力は次の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)

これで、シリアル化できないエラーが発生する前にリスナーが起動しなくなりました。

4

1 に答える 1

1

セッションスコープ用にマークしたサービスを削除することで、この問題を解決しました。このサービスのどこにもjdbcデータソースとやり取りしていなかったので、何が起こっているのかよくわかりません。

うまくいけば、他の誰かがこの問題に遭遇した場合、彼らはサービススコーピングで遊んで、インスタンスで何が起こっているのかを理解することができます。

于 2012-10-07T20:26:48.103 に答える