В моем методе контроллера Spring MVC Rest я пытаюсь вернуть объект HttpSession
в другом пользовательском объекте с именем Token
, который находится внутри объекта Spring ResponseEntity
, обратно клиенту.
Но по какой-то причине я получаю ошибку Stackoverflow
из-за некоторой бесконечно рекурсивной проблемы Jackson
привязки данных, всякий раз, когда я включаю объект HttpSession
в качестве атрибута в мой Token
учебный класс.
Я не получаю ошибку StackOverflow
, когда HttpSession
объект не в моем Token
классе.
ВотМой Token
класс:
public class Token implements Serializable {
private static final long serialVersionUID = 1L;
private HttpSession session;
private String value;
public Token () {}
public Token (HttpSession session, String value) {
this.session = session;
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
}
Вот мой метод контроллера:
@RequestMapping(value = "/getData", method = RequestMethod.GET)
public ResponseEntity<Token> getData(HttpServletRequest request) {
HttpSession session = request.getSession();
Token t = new Token(session, "value");
return new ResponseEntity<Token>(t, HttpStatus.OK);
}
Кто-нибудь знает, почему это так?
Вот трассировка стека:
Root cause of ServletException. org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: weblogic.servlet.internal.WebAppServletContext["securityContext"]->weblogic.servlet.internal.ServletSecurityContextImpl["servletContext"]............... com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at ........-