我制作了一个看起来像这样的小项目
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完成对象映射。