Java Wildfly 上的 EE 7 Web 服务 - JSON 问题

Java EE 7 Webservices on Wildfly - JSON issue

我已经为给定 @Path@GET 数据创建了一个简单的网络服务。在使用 @Produces(MediaType.APPLICATION_XML) 时一切正常,我可以看到 XML 输出,但是在将 MediaType.APPLICATION_XML 更改为 MediaType.APPLICATION_JSON 时出现此问题:

Context Path:/bms

Servlet Path:/resources

Path Info:/actualvalue

Query String:null

Stack Trace org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.ext.Providers

我使用 org.jboss.spec:jboss-javaee-7.0:1.0.3-Final Wildfly 10

提供的

[编辑]

@Entity
@Cacheable(false)
@Table(name = "tblActualValueFloat")
@XmlRootElement(name = "tblActualValueFloat")
@XmlAccessorType(XmlAccessType.FIELD)
public class ActualValueFloat extends AbstractModel {

        /*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
        @Id
        @Column(name = "PointSliceID")
        @XmlElement(name = "PointSliceID", required = false, type = Integer.class)
        private Integer id;
        @Column(name = "ActualValue")
        @XmlElement(name = "ActualValue", required = false, type = Double.class)
        private Double value;
        @Temporal(TemporalType.TIMESTAMP)
        @Column(name = "UTCDateTime")
        @XmlElement(name = "UTCDateTime", required = false, type = Date.class)
        private Date date;
        //setters and getters and equals
}

[edit2]

好的,我看到这适用于 Glassfish 4.1,但不适用于 Wildfly 10..任何关于如何通过使用提供的 Java EE Web 服务 API 来避免这种情况的线索?

好的,我已经研究过我的 org.jboss.weld.osgi.examples:weld-osgi-web-fwk:1.2.0.Beta1 带有过滤器以添加 CORS Headers ,包含 org.codehaus.jackson:jackson-jaxrs,所以我排除了它,现在它甚至在 Wildfly 10

上也能正常工作

@Rafcik 我在排除 org.codehaus.jackson:jackson-jaxrs:

时遇到了这个错误
A message body writer for Java class java.util.ArrayList, and Java type java.util.List<java.lang.String>, and MIME media type application/json was not found.
The registered message body writers compatible with the MIME media type are:
application/json ->
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider

我通过添加以下初始化代码修复了错误 "Unable to find contextual data of type: javax.ws.rs.ext.Providers":

ResteasyProviderFactory factory = ResteasyProviderFactory.getInstance();
ResteasyProviderFactory.pushContext(javax.ws.rs.ext.Providers.class, factory);
ResteasyClientBuilder resteasyClientBuilder = new
ResteasyClientBuilder().providerFactory(factory);
ResteasyClient client = resteasyClientBuilder.build();