【问题标题】:jetty nosql MongoSessionManager usage on herokuheroku 上的 jetty nosql MongoSessionManager 用法
【发布时间】: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 应用程序特定的类。 有没有办法配置码头实例,它可以找到我的应用程序使用的所有类?

【问题讨论】:

标签: heroku classloader embedded-jetty


【解决方案1】:

如果你只想在 webapp 中部署你的库,那就不容易了。通常你可以把它放在 $jetty.home/lib/ext 或类似的地方,然后把它放在更大范围的类加载器中。在这种嵌入式模式下,您可以使用 WebAppContext 上的系统和服务器类方法,但是我不知道 heroku jetty 实例是如何设置的,所以我可以保证它会起作用。

感谢 David 尽管他在 bugzilla(RT/Jetty 下的 bugs.eclipse.org)中打开了一个关于这个问题的问题(甚至有修复,我们喜欢这样),我将应用修复,它应该可以在7.6.1 和 8.1.1 将在几周后发布,或者在今天晚些时候在 master 和 jetty-8 分支上发布。

干杯

[edit] 对此的修复已应用于 master 和 jetty-8,并将出现在 jetty 的 7.6.1 和 8.1.1 版本中

【讨论】:

    猜你喜欢
    • 2019-08-15
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多