【发布时间】:2012-02-22 10:08:32
【问题描述】:
我在 heroku 上有 grails 应用程序。我使用 MongoSessionManager 允许在 heroku 集群节点之间共享会话数据。 我还使用自定义引导类来配置码头实例,用于 grails 应用程序。
MongoSessionManager 的问题,当码头试图从 Mondodb 反序列化对象时,它会抛出 ClassNotFoundException:
2012-01-30T15:23:56+00:00 app[web.2]: 2012-01-30 15:23:56.121:WARN:oejnm.MongoSessionManager: 2012-01-30T15:23:56+00:00 应用 [web.2]: 在 java.net.URLClassLoader$1.run(URLClassLoader.java:217) 2012-01-30T15:23:56+00:00 app[web.2]: at java.security.AccessController.doPrivileged(Native Method) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 2012-01-30T15:23:56+00:00 app[web.2]: 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: java.lang.ClassNotFoundException: org.codehaus.groovy.grails.web.servlet.GrailsFlashScope 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:621) 2012-01-30T15:23:56+00:00 应用 [web.2]: 在 java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1592) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) 2012-01-30T15:23:56+00:00 应用程序 [web.2]: 在 org.eclipse.jetty.nosql.mongodb.MongoSessionManager.decodeValue(MongoSessionManager.java:447) 2012-01-30T15:23:56+00:00 应用程序 [web.2]:在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 2012-01-30T15:23:56+00:00 app[web.2]: at java.lang.Class.forName0(Native Method)
似乎码头使用了其他类加载器,它找不到我的 Web 应用程序特定的类。 有没有办法配置码头实例,它可以找到我的应用程序使用的所有类?
【问题讨论】:
-
我刚刚也遇到了这个问题,并且已经提出了问题。 bugs.eclipse.org/bugs/show_bug.cgi?id=370377
标签: heroku classloader embedded-jetty