JSF 2 OpenJPA 2 Glassfish 3.1 WEB9031错误

时间:2011-04-11 14:03:27

标签: jsf-2 jpa-2.0 glassfish-3

我收到了这个错误,根据Apache支持,这是一个与Glassfish而不是OpenJPA相关的问题:

java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped

堆栈跟踪是:

Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1410)
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
    at com.ckd.model.BookModel.pcNewObjectIdInstance(BookModel.java)
    at org.apache.openjpa.enhance.PCRegistry.newObjectId(PCRegistry.java:138)
    at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClass(MetaDataRepository.java:1693)
    at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClasses(MetaDataRepository.java:1643)
    ... 112 more

有没有人遇到过这个以及如何解决这个问题?过去几天我一直坚持这个问题。

我可以在此处找到与此问题相关的其他帖子:JSF 2: h:link and getrowdata

1 个答案:

答案 0 :(得分:1)

上述错误与OpenJPA增强器的问题有关。当您执行Sun的JDK时,OpenJPA的动态增强器默认启动。反过来,这个动作会填满Glassfish的类加载器类 - 因此, WEB9031 错误。

对于遇到同样问题的人来说,一个简单的解决方法是在构建时进行增强 - 我在ANT中使用org.apache.openjpa.ant.PCEnhancerTask进行了增强 - 并将此属性添加到 persistence.xml 关闭动态增强器:<property name="openjpa.DynamicEnhancementAgent" value="false"/>

此外,将此内容放入 persistence.xml 以及<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />也不会有什么坏处。