JBoss EAP 6.4 Jackson模块类加载

时间:2015-11-05 08:14:34

标签: jboss classloader jboss-eap-6 jboss-modules

我制作了一个看起来像这样的小项目

playboss.ear
    lib
        commonlib.jar
            JsonDeserializer.class
        testlib.jar
            JsonMessage.class
            Version.class
        jackson-1.9.4.jar
    playboss_ejb.jar
        MessageTimer.class

JsonMessage有一个成员:* private class msgVersion = Version.V0.class;
MessageTimer只是一个具有超时的Bean,除了使用JsonDeserializer反序列化JsonMessage的示例String之外什么都不做。 一切正常,即字符串转换为JsonMessage!

现在我向包含JAX-RS API和模型对象的项目添加一个依赖项,以便扩展lib。

    lib
        SomeAPI.jar
        javax.ws.rs-api-2.0.jar

现在,当我启动JBoss EAP 6.4时,我遇到以下异常:

Caused by: java.lang.ClassNotFoundException: playground.testlib.Version$V0 from [Module "org.codehaus.jackson.jackson-mapper-asl:main" from local module loader @9e89d68
  at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.7.Final-redhat-1]
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.7.Final-redhat-1]
  at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.7.Final-redhat-1]
  at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.7.Final-redhat-1]
  at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.7.Final-redhat-1]
  at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_66]
  at java.lang.Class.forName(Class.java:264) [rt.jar:1.8.0_66]
  at org.codehaus.jackson.map.deser.std.ClassDeserializer.deserialize(ClassDeserializer.java:42) [jackson-mapper-asl-1.9.9.redhat-4.jar:1.9.9.redhat-4]

我认为由于https://docs.jboss.org/author/display/AS7/Implicit+module+dependencies+for+deployments,jax-rs模块依赖项被触发,jackson从模块加载。

我的问题:
1)让我的反序列化再次工作的建议/最佳方法是什么? 2)我想了解如果模块类加载器显然没有看到我的模型类,如何使用jax-rs完成对象映射。

0 个答案:

没有答案