2017-01-12 24 views
1

RESTアプリケーションでレスポンスのシリアル化に問題があります。クラスjava.util.logging.ErrorManagerでシリアライザが見つかりませんでした。BeanSerializerを作成するためのプロパティが見つかりません

ここに私のコードの簡単なスナップショットです:私の実装クラスで ResponseWrapper.class

@JsonInclude(Include.NON_NULL) 
public class ResponseWrapper { 

    private User user; 
    private Token token; 
    private Authentication authentication; 

    public ResponseWrapper(){} 
    //setters and getters 
} 

Configuration.class

@Configuration 
public class BeanConfig { 

@Bean 
@Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) 
public ResponseWrapper response() { 
    return new ResponseWrapper(); 
} 

}

私はautowired変数だ:

@Autowired 
ResponseWrapper response; 

私はちょうど

return response; 

ように私の応答を返す私はメッセージ

Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.logging.ErrorManager and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.coig.prek.webservice.utils.wrappers.ResponseWrapper$$EnhancerBySpringCGLIB$$9e771672["targetSource"]->org.springframework.aop.target.SimpleBeanTargetSource["beanFactory"]->org.springframework.beans.factory.support.DefaultListableBeanFactory["beanClassLoader"]->org.apache.catalina.loader.ParallelWebappClassLoader["resources"]->org.apache.catalina.webresources.StandardRoot["context"]->org.apache.catalina.core.StandardContext["logger"]->org.apache.juli.logging.DirectJDKLog["logger"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["handlers"]->org.apache.juli.AsyncFileHandler["errorManager"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class java.util.logging.ErrorManager and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.coig.prek.webservice.utils.wrappers.ResponseWrapper$$EnhancerBySpringCGLIB$$9e771672["targetSource"]->org.springframework.aop.target.SimpleBeanTargetSource["beanFactory"]->org.springframework.beans.factory.support.DefaultListableBeanFactory["beanClassLoader"]->org.apache.catalina.loader.ParallelWebappClassLoader["resources"]->org.apache.catalina.webresources.StandardRoot["context"]->org.apache.catalina.core.StandardContext["logger"]->org.apache.juli.logging.DirectJDKLog["logger"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["parent"]->java.util.logging.Logger["handlers"]->org.apache.juli.AsyncFileHandler["errorManager"]) 

を持って、私は実際に私が間違っているの何見当がつかない。私は@JsonIgnoreの注釈を@JsonPropertyとしようとしましたが、それは私が働いていたのです。だから私は間違ってやっていること、正しくシリアライズできないことをあなたに尋ねているのですか?

説明が十分でない場合は、申し訳ありませんが、私はこの問題について他にどのようなことが書けるか分かりません。

@Edit 私はここだと思うResponseEntityクラス

return new ResponseEntity<ResponseWrapper>(response, HttpStatus.OK); 

答えて

0

を使用して応答Beanを返していますが、ジャクソンは空のオブジェクトをシリアル化しようとしています。あなたはこの事を避けるためにジャクソンを設定する必要があり :

ジャクソン1.1:

myObjectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false); 

ジャクソン2.X

myObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); 

春にこの事を行うには例がhereを見つけることができます

+0

問題は、私がそれをしているときに何らかの理由で「無限再帰」を得たことです。一方、直列化オブジェクトは決して空ではありません。 – rdabrowski

+0

responeインスタンスから 'Autowired'を削除しようとしています。 –

+0

しかし、私がcorectlyを理解すれば、私はそのbeanのインスタンスを呼び出すことができなくなります – rdabrowski

関連する問題