我创建了一个简单的 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/