如何序列化java.security.Principal?

如何序列化java.security.Principal?,java,json,spring,spring-boot,serialization,Java,Json,Spring,Spring Boot,Serialization,我编写了以下代码: @RestController public class UserController { private final static Logger LOGGER = LoggerFactory.getLogger(UserController.class); @RequestMapping(path = "/", produces = "application/json") public @ResponseBody Principal getUse

我编写了以下代码:

@RestController
public class UserController {

    private final static Logger LOGGER = LoggerFactory.getLogger(UserController.class);

    @RequestMapping(path = "/", produces = "application/json")
    public @ResponseBody Principal getUser(HttpServletRequest request) throws Exception {
        try {
            Principal principal = request.getUserPrincipal();
            LOGGER.debug("User found" + principal.toString());
            return principal;
          } 
        catch (Exception e) {
            LOGGER.debug("User not found : " + e.getMessage());
            throw e;
        }
    }
}
但它抛出:

java.lang.IllegalStateException:getOutputStream()已被删除 要求作出这种反应

如何序列化该对象?是什么让Spring Boot的对象可序列化?在执行过程中,实际的对象类型是
org.apache.catalina.realm.GenericPrincipal
实现的
Principal

根据要求,以下是完整的堆栈跟踪:

#错误#org.apache.catalina.core.ContainerBase.[catalina].[localhost].[loggedinusertest].[dispatcherServlet].#匿名#https-jsse-nio-8041-exec-5#na#ab54cfe76#loggedinusertest#web#ab54cfe76#na#Servlet# 对于servlet,[dispatcherServlet]引发了异常 java.lang.IllegalStateException:getOutputStream()已被删除 要求在 org.apache.catalina.connector.Response.getWriter(Response.java:624) 在 org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211) 在 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView.render(ErrorMvcAutoConfiguration.java:218) 在 org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257) 在 org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:635) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 在 org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:112) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316) 在 org.springframework.boot.web.support.ErrorPageFilter.handleErrorStatus(ErrorPageFilter.java:153) 在 org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:121) 在 org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:61) 在 org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:94) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:112) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在 com.sap.core.connectivity.jco.session.ext.RequestTracker.invoke(RequestTracker.java:55) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:610) 在 com.sap.cloud.runtime.impl.bridge.security.AbstractAuthenticator.invoke(AbstractAuthenticator.java:206) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) 在