2016-03-22 61 views
1

我创建了一个简单的web服务,来自@Path@GET数据。在使用@Produces(MediaType.APPLICATION_XML)一切工作正常,我可以看到XML输出,但同时改变MediaType.APPLICATION_XMLMediaType.APPLICATION_JSON出现此问题:关于Wild Java的Java EE 7 Web服务 - JSON问题

上下文路径:/ BMS

servlet路径:/资源

路径信息:/ actualvalue

查询字符串:空

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

[EDIT2]

好吧,我看到这个作品与Glassfish的4.1,但与Wildfly 10 ..任何线索如何使用提供的JavaË避免这种情况E Web服务API?

+0

这些依赖关系应该是足够了:'的javax:JavaEE的-Web的API:7.0'和'javax.ws.rs:javax.ws.rs-api'(行家范围='提供'两者)。你不需要jboss规范依赖。 – assylias

+0

@assylias修改和相同的问题:( – Rafcik

+0

什么是@GET方法的返回类型? – assylias

回答

0

好吧,我研究我的org.jboss.weld.osgi.examples:焊接OSGi的网络FWK:1.2.0.Beta1过滤器,以增加CORS标头,包含org.codehaus .jackson:杰克逊 - JAXRS,所以我已经排除,现在它工作正常甚至Wildfly 10

1

@Rafcik当我排除的org.codehaus.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.P的上下文数据roviders”通过添加以下代码初始化:

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