如何序列化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)
在