1

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

上下文路径:/bms

小服务程序路径:/资源

路径信息:/实际值

查询字符串:空

堆栈跟踪 org.jboss.resteasy.spi.LoggableFailure:RESTEASY003880:找不到类型的上下文数据: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
}

[编辑2]

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

4

2 回答 2

1

@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

我通过添加以下初始化代码修复了错误“无法找到类型的上下文数据: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();
于 2016-05-04T19:28:34.923 回答
0

好的,我已经研究了我的org.jboss.weld.osgi.examples:weld-osgi-web-fwk:1.2.0.Beta1与添加 CORS 标头的过滤器,包含org.codehaus.jackson:jackson-jaxrs,所以我已经排除了它,现在它甚至可以在 Wildfly 10 上正常工作

于 2016-03-23T08:08:53.573 回答