2016-03-22 62 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();