Quando chiamo un particolare metodo di servizio restful, che viene creato utilizzando CXF, ottengo il seguente errore, qualcuno sa perché e come risolverlo?Eccezione JAXB: Classe non nota in questo contesto
JAXBException: classe com.octory.ws.dto. ProfileDto né della sua classe Super è noto a questo contesto ...
seguito sono il metodo di servizio e DTOs rilevanti:
public class Service {
public Response results() {
Collection<ProfileDto> profilesDto = new ArrayList<ProfileDto>();
...
SearchResultDto srd = new SearchResultDto();
srd.setResultEntities(profilesDto); // Setting profilesDto collection as resultEntities
srd.setResultSize(resultSize);
return Response.ok(srd).build();
}
}
SearchResultDto:
@XmlRootElement(name="searchResult")
public class SearchResultDto {
private Collection resultEntities;
private int resultSize;
public SearchResultDto() { }
@XmlElementWrapper(name="resultEntities")
public Collection getResultEntities() {
return resultEntities;
}
public void setResultEntities(Collection resultEntities) {
this.resultEntities = resultEntities;
}
public int getResultSize() {
return resultSize;
}
public void setResultSize(int resultSize) {
this.resultSize = resultSize;
}
}
ProfileDto:
@XmlRootElement(name="profile")
public class ProfileDto {
...
...
public ProfileDto() { }
...
}
L'aggiunta di @XmlSeeAlso ha risolto il problema; Avevo l'impressione che le annotazioni fossero necessarie solo quando la classe di riferimento era una sottoclasse. Grazie. – ABK07
Cosa succede se la classe è 'SearchResultDto' dove T è generico? –
@Hendy Irawan - L'annotazione può anche essere aggiunta al servizio Web stesso (ad esempio dopo l'annotazione '@ WebService'). Se hai a che fare con i generici, ha più senso dichiarare tipi addizionali, poiché in quella fase dovresti conoscere l'intera serie di tipi. – CurtainDog