Java Wildfly 10和Jackson 2
我有这样的问题 maven中的所有依赖项-提供 jboss部署结构 是这样吗Java Wildfly 10和Jackson 2,java,maven,jackson,wildfly,wildfly-10,Java,Maven,Jackson,Wildfly,Wildfly 10,我有这样的问题 maven中的所有依赖项-提供 jboss部署结构 是这样吗 <deployment> <dependencies> <module name="by.lib" meta-inf="export" export="true"/> <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
<deployment>
<dependencies>
<module name="by.lib" meta-inf="export" export="true"/>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
<!--<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true"/>-->
<!--<module name="org.jboss.resteasy.resteasy-jaxrs" export="true"/>-->
<!--<module name="com.fasterxml.jackson.core.jackson-databind" export="true"/>-->
<!--<module name="com.fasterxml.jackson.core.jackson-core" export="true"/>-->
<!--<module name="com.fasterxml.jackson.core.jackson-annotations" export="true"/>-->
<!--<module name="org.jboss.resteasy.resteasy-jackson2-provider" export="true"/>-->
</dependencies>
<exclude-subsystems>
<subsystem name="logging"/>
<subsystem name="resteasy"/>
</exclude-subsystems>
</deployment>
或
当我尝试
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class ConfiguredRESTProvider implements ContextResolver<ObjectMapper> {
private static ObjectMapper mapper;
static {
mapper = new ObjectMapper();
AnnotationIntrospector primary = new JacksonAnnotationIntrospector();
AnnotationIntrospector secondary = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
AnnotationIntrospector pair = AnnotationIntrospectorPair.create(primary, secondary);
mapper.setAnnotationIntrospector(pair);
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
// TODO Разбраться почему не отрабатывае? ("balanceAmount": 2.41E8)
mapper.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true);
mapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// mapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS,true);
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
// public void ConfiguredRESTProvider() {
// // ObjectMapper mapper = new ObjectMapper();
// ObjectMapper mapper = locateMapper(type, json);
// ObjectMapper mapper = super._mapperConfig.getDefaultMapper();
// // AnnotationIntrospector primary = new JacksonAnnotationIntrospector();
// // AnnotationIntrospector secondary = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
// // AnnotationIntrospector pair = AnnotationIntrospectorPair.create(primary, secondary);
// // mapper.setAnnotationIntrospector(pair);
//
// mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
// // TODO Разбраться почему не отрабатывае? ("balanceAmount": 2.41E8)
// mapper.configure(SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN, true);
// mapper.configure(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN, true);
// mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// // mapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS,true);
// mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
// super.setMapper(mapper);
// }
@Override
public ObjectMapper getContext(Class<?> aClass) {
return mapper;
}
}
NoClassDefFoundError
forJaxbAnnotationIntrospector
表示模块jackson模块jaxb注释
未指定为依赖项
此模块包含类JaxbAnnotationIntrospector
我认为应将依赖项添加为:
<module name="com.fasterxml.jackson.module.jackson-module-jaxb-annotations"/>
根据需要指定导出。关于此错误消息:
java.lang.NoClassDefFoundError: Failed to link
com/fasterxml/jackson/jaxrs/base/ProviderBase
或:
WildFly没有加载/导出所有需要的库。您的jboss部署结构.xml文件应该如下所示:
<deployment>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
<!-- This module contain the ProviderBase class: -->
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true"/>
</dependencies>
<exclusions>
<!-- Just to make sure these modules are not loaded -->
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
<module name="org.jboss.resteasy.resteasy-jettison-provider"/>
</exclusions>
</deployment>
第二次尝试时,您既包括又排除了
org.jboss.resteasy.resteasy-jackson2-provider
模块。我不确定哪一个会赢。
2017-01-12 10:59:27,659 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 93) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./: java.lang.NoClassDefFoundError: com/fasterxml/jackson/module/jaxb/JaxbAnnotationIntrospector
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/module/jaxb/JaxbAnnotationIntrospector
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructors(Class.java:1651)
at org.jboss.resteasy.util.PickConstructor.pickSingletonConstructor(PickConstructor.java:30)
at org.jboss.resteasy.spi.ResteasyProviderFactory.createConstructorInjector(ResteasyProviderFactory.java:2252)
at org.jboss.resteasy.spi.ResteasyProviderFactory.createProviderInstance(ResteasyProviderFactory.java:2244)
at org.jboss.resteasy.spi.ResteasyProviderFactory.addContextResolver(ResteasyProviderFactory.java:1130)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1667)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1368)
at org.jboss.resteasy.spi.ResteasyProviderFactory.registerProvider(ResteasyProviderFactory.java:1290)
at org.jboss.resteasy.spi.ResteasyDeployment.registerProvider(ResteasyDeployment.java:571)
at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:347)
at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:250)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:113)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)
at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.
<module name="com.fasterxml.jackson.module.jackson-module-jaxb-annotations"/>
java.lang.NoClassDefFoundError: Failed to link
com/fasterxml/jackson/jaxrs/base/ProviderBase
java.lang.NoClassDefFoundError: com/fasterxml/jackson/jaxrs/base/ProviderBase
<deployment>
<dependencies>
<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import"/>
<!-- This module contain the ProviderBase class: -->
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true"/>
</dependencies>
<exclusions>
<!-- Just to make sure these modules are not loaded -->
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
<module name="org.jboss.resteasy.resteasy-jettison-provider"/>
</exclusions>
</deployment>