2016-04-03 12 views
3

Yaylı önyükleme ve jarse ile ağ geçidi API'sı üzerinde çalışıyorum (Spring-boot-starter-jersey kullandım). Ben xml ve json yanıtı hem dönmeye varsayalım am, istek xml için yapıldığında ama 404. olsun buradaSpring Boot ile Jersey dönüşü xml yanıtı

package com.quickp.services; 

import javax.ws.rs.DefaultValue; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 

import org.springframework.http.MediaType; 
import org.springframework.web.bind.annotation.ResponseBody; 

import com.quickp.unit; 
import com.quickp.models.units; 
import com.quickp.serviceclient.ApiClient; 

@Path("api/units") 
public class UnitsService{ 

    private ApiClient client; 

    public UnitsService(ApiClient client){ 
     this.client = client; 
    } 

    @GET 
    @Produces({MediaType.APPLICATION_XML_VALUE,  MediaType.APPLICATION_JSON_VALUE}) 
    public @ResponseBody Units getUnits(
      @QueryParam("search") final String search, 
      @QueryParam("page") @DefaultValue("1") final int page) { 
     return client.getUnits(search, page, 10); 

    } 

} 

pom.xml şu vardır hizmeti için kodudur json yanıt ile iş gibi görünüyor:

<dependency> 
    <groupId>com.fasterxml.jackson.dataformat</groupId> 
    <artifactId>jackson-dataformat-xml</artifactId> 
    <version>2.5.0</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-xml-provider</artifactId> 
    <version>2.5.0</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.woodstox</groupId> 
    <artifactId>woodstox-core-asl</artifactId> 
    <version>4.4.1</version> 
</dependency> 

ve Units.class gibi bir şey olduğunu:

@Data 
@JacksonXmlRootElement(localName = "units") 
public class Units { 
    private int found; 
    private int display; 
    private boolean hasMore; 
    @JsonProperty("unit") 
    @JacksonXmlElementWrapper(useWrapping = false) 
    List<Unit> list; 
} 

ve unit.class bir şey gibi:

(
@Data 
@EqualsAndHashCode 
@JacksonXmlRootElement(localName = "unit") 
public class Unit { 
    private int id; 
    private String name; 
    private String unitType; 
    private String unitApp; 
    private String unitHomeApp; 
} 
)

(Ben lambok kullanıyorum, böylece el ile alıcı ve elek eklemeniz gerekmez).

Yardımın için teşekkürler, buna takılıyorum.

Selamlar senin POJOs üzerinde JAXB ek açıklamaları beklediğini

cevap

2

varsayılan XML sağlayıcı JAXB kullanır sajid. Eğer Jackson XML sağlayıcısını kullanmak istiyorsanız, yine de JAXB'yi geçersiz kılacak bir kayıt yaptırmanız gerekmektedir. yerine beklenen 500

public class JerseyConfig extends ResourceConfig { 
    public JerseyConfig() { 
     register(JacksonXMLProvider.class); 
     // use JacksonJaxbXMLProvider if you also want JAXB annotation support 
    } 
} 

404 nedeni, this question ilişkilidir. This answer sorunu çözmeli, böylece beklenen hata yanıtlarını aldınız.