2017-10-02 7 views
0

Quand faire une demande de poste d'un Microservice à un autre en utilisant le client feindre de netflix nuage de printemps, je reçois l'erreur suivante dans Postman:nuage de printemps de téléchargement de fichiers feindre client

{ 
"timestamp": 1506933777413, 
"status": 500, 
"error": "Internal Server Error", 
"exception": "feign.codec.EncodeException", 
"message": "Could not write JSON: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile[\"inputStream\"]->java.io.FileInputStream[\"fd\"])", 
"path": "/attachments" 
} 

Et ma console éclipse montre l'exception suivante :

com.fasterxml.jackson.databind.JsonMappingException: aucun sérialiseur trouvé pour la classe java.io.FileDescriptor et pas de propriétés découvertes pour créer BeanSerializer (pour éviter exception, désactivez SerializationFeature.FAIL_ON_EMPTY_BEANS) (par la chaîne de référence: org .springframework.web.multipart.support. StandardMultipartHttpServletRequest $ StandardMultipartFile ["inputStream"] -> java.io.FileInputStream ["fd"]) at com.fasterxml.jackson.databind.JsonMappingException.from (JsonMappingException.java:284) ~ [jackson-databind-2.8.9 .jar: 2.8.9] à com.fasterxml.jackson.databind.SerializerProvider.mappingException (SerializerProvider.java:1110) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson .databind.SerializerProvider.reportMappingProblem (SerializerProvider.java:1135) ~ [jackson-databind-2.8.9.jar: 2.8.9] à l'adresse com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty (UnknownSerializer.java : 69) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize (UnknownSerializer.java:32) ~ [jackson-databind-2.8 .9.jar: 2.8.9] à com.fasterxml.jackso n.databind.ser.BeanPropertyWriter.serializeAsField (BeanPropertyWriter.java:704) ~ [jackson-databind-2.8.9.jar: 2.8.9] sur com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields (BeanSerializerBase.java:689) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ser.BeanSerializer.serialize (BeanSerializer.java:155) ~ [jackson-databind- 2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField (BeanPropertyWriter.java:704) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields (BeanSerializerBase.java:689) ~ [jackson-databind-2.8.9.jar: 2.8.9] sur com.fasterxml.jackson.databind.ser. BeanSerializer.serialize (BeanSerializer.java:155) ~ [jackson-databind-2.8.9.jar: 2.8.9] sur com.fasterxm l.jackson.databind.ser.DefaultSerializerProvider.serializeValue (DefaultSerializerProvider.java:292) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ObjectWriter $ Prefetch.serialize (ObjectWriter.java:1429) ~ [jackson-databind-2.8.9.jar: 2.8.9] à com.fasterxml.jackson.databind.ObjectWriter.writeValue (ObjectWriter.java:951) ~ [jackson-databind-2.8. 9.jar: 2.8.9]

MISE À JOUR 1

Ceci est mon interface feindre:

@FeignClient(name="attachment-service", fallback=AttachmentHystrixFallback.class) 
public interface AttachmentFeignClient { 

@RequestMapping("upload") 
void upload(@RequestPart(name="file") MultipartFile file, @RequestParam(name="attachableId") Long attachableId, 
     @RequestParam(name="className") String className, @RequestParam(name="appName") String appName); 

Et c'est le contrôleur principal de Microservice:

@RestController 
public class AttachmentController implements Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = -4431842080646836475L; 

@Autowired 
AttachmentService attachmentService; 

@RequestMapping(value = "attachments", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 
public void upload(@RequestPart MultipartFile file, @RequestParam Long attachableId, @RequestParam String className, @RequestParam String appName) throws Exception { 
    attachmentService.uploadFile(file, attachableId, className, appName); 
} 

} 

Je suis certainement manque une sorte de sérialiseur ici
Toute suggestion serait appréciée!
Merci

+0

sont les POJO sur ces 2 microservices identiques? Si leurs champs et leurs noms correspondent, vous n'avez pas besoin de sérialiseur.Montrez une coupure de votre code avec le repos défini dans un seul service, et la même méthode dans votre interface propre – mlecz

+0

@mlecz oui tous les pojos sont situés dans un démarreur qui est intégré dans les deux microservices – ZiOS

+0

@mlecz jetez un oeil à la mise à jour 1 s'il vous plaît – ZiOS

Répondre

0

je résolu le problème en suivant ce Link