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

标签 java json web-services wildfly-10

我创建了一个简单的 Web 服务,用于接收给定 @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

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

[编辑]

@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 来避免这种情况吗?

最佳答案

@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();

关于Wildfly 上的 Java EE 7 Web 服务 - JSON 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36154044/

相关文章:

java - 舍入前可以检测到 "java.lang.ArithmeticException: Rounding necessary"吗?

python - 使用 python 访问受 token 保护的 API 中的数据

java - 我想将一些数据上传到我的数据库,但该方法返回 null

ruby-on-rails - Rails JSON API,如何处理 RABL 中的 nil 对象?

android - 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径中为 STRING - Laravel 到 Retrofit 2

java - 从 JSON 检索数据时出现 NullPointer 异常

javascript - 在 Angular JS 的 uri 参数中使用 'slash' 字符使用 Restful 服务

java - Tomcat8 org.apache.cxf.BusFactory.getBusFactoryClass 无法确定 BusFactory 实现类名

java - 通用列表转换为数组

java - 级联加入两个文件很慢