Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 正在response.setBufferSize上获取IllegalStateException,但只是有时_Spring_Spring Mvc_Jboss_Response_Illegalstateexception - Fatal编程技术网

Spring 正在response.setBufferSize上获取IllegalStateException,但只是有时

Spring 正在response.setBufferSize上获取IllegalStateException,但只是有时,spring,spring-mvc,jboss,response,illegalstateexception,Spring,Spring Mvc,Jboss,Response,Illegalstateexception,我有一个使用Spring3.2.11.RELEASE的web应用程序,运行在JBoss7.1.3.Final上 应用程序在单个应用程序服务器上运行 奇怪的是,有时我的应用程序会在特定的控制器方法上出现间歇性的java.lang.IllegalStateException: @RequestMapping(value = "/sync", method = RequestMethod.POST) public void sync(@RequestParam final String orgId,

我有一个使用Spring3.2.11.RELEASE的web应用程序,运行在JBoss7.1.3.Final上

应用程序在单个应用程序服务器上运行

奇怪的是,有时我的应用程序会在特定的控制器方法上出现间歇性的
java.lang.IllegalStateException

@RequestMapping(value = "/sync", method = RequestMethod.POST)
public void sync(@RequestParam final String orgId,
                 final HttpServletResponse response) throws IOException
{
    response.setBufferSize(1024);

response.setBufferSize
方法偶尔会产生以下错误,尽管它是我的方法的第一行:

13:47:40,954 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/clever].[dispatcher]] (http-/127.0.0.1:8081-1)  Servlet.service() for servlet dispatcher threw exception: java.lang.IllegalStateException
        at org.apache.catalina.connector.ResponseFacade.setBufferSize(ResponseFacade.java:234) [jbossweb-7.0.17.Final.jar:]
        at org.collegeboard.springboard.clever.controller.CleverOrganizationController.sync(CleverOrganizationController.java:112) [classes:]
        at sun.reflect.GeneratedMethodAccessor1017.invoke(Unknown Source) [:1.6.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_65]
        at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_65]
        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) [spring-web-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) [spring-web-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:685) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) [spring-webmvc-3.2.11.RELEASE.jar:3.2.11.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.1.Final.jar:1.0.1.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.17.Final.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:165) [jboss-as-web-7.1.3.Final.jar:7.1.3.Final]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.17.Final.jar:]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372) [jbossweb-7.0.17.Final.jar:]
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.17.Final.jar:]
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679) [jbossweb-7.0.17.Final.jar:]
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) [jbossweb-7.0.17.Final.jar:]
        at java.lang.Thread.run(Thread.java:680) [rt.jar:1.6.0_65]  

有什么办法可以让这一切永远消失吗?

可能是spring在回复中已经写了一些东西。
例如,如果您声明了一个modelatibute。

可能是spring已经在响应中写入了一些内容。
例如,如果您声明了一个modelatibute。

我无法发表评论,因此添加评论作为答案,如果它可能对您有所帮助的话。只需检查jsp中是否有autoFlush=true,这可能就是原因。另外,在设置响应缓冲区大小之前,您可以在控制器方法中使用response.isCommitted()进行检查。

我无法进行注释,因此如果可以帮助您的话,请添加注释作为答案。只需检查jsp中是否有autoFlush=true,这可能就是原因。在设置响应缓冲区大小之前,您还可以在控制器方法中使用response.isCommitted()进行检查。

您应该在提交之前调用
setBufferSize
。您可以通过调用
ServletResponse
对象上的
isCommitted()
来检查它是否已提交。该文件规定:

已提交的响应已写入其状态代码和标头

在调用
ServletResponse
上的
setBufferSize
时,这种情况也发生在我身上,为时已晚。对您来说,这可能是一个线程问题,这可以解释为什么这种情况会不稳定地发生

的文档解释了您何时获得非法状态异常:

在编写任何响应正文内容之前,必须调用此方法;如果内容已写入或响应对象已提交,则此方法将抛出IllegalStateException。”


您应该在提交之前提前调用
setBufferSize
。您可以通过在
ServletResponse
对象上调用
isCommitted()
来检查是否已提交。该文件规定:

已提交的响应已写入其状态代码和标头

在调用
ServletResponse
上的
setBufferSize
时,这种情况也发生在我身上,为时已晚。对您来说,这可能是一个线程问题,这可以解释为什么这种情况会不稳定地发生

的文档解释了您何时获得非法状态异常:

在编写任何响应正文内容之前,必须调用此方法;如果内容已写入或响应对象已提交,则此方法将抛出IllegalStateException。”


我遇到了同样的问题

java.lang.IllegalStateException:PWC3999:无法创建会话 在提交响应之后

我尝试了上面博客中提到的一切。什么事都没有发生

我终于知道有一个表单,它有一个
j_security\u check
的动作,因为这个表单,问题就出现了

<h:form method="post" action="j_security_check">

为了解决这个问题,我在父xhtml文件中创建了一个没有任何操作的空表单,它解决了这个问题

我仍然需要弄清楚,为什么在父xhtml文件中使用空表单标记后问题得到了解决


希望这会对某人有所帮助。

我遇到了同样的问题

java.lang.IllegalStateException:PWC3999:无法创建会话 在提交响应之后

我尝试了上面博客中提到的一切。什么事都没有发生

我终于知道有一个表单,它有一个
j_security\u check
的动作,因为这个表单,问题就出现了

<h:form method="post" action="j_security_check">

为了解决这个问题,我在父xhtml文件中创建了一个没有任何操作的空表单,它解决了这个问题

我仍然需要弄清楚,为什么在父xhtml文件中使用空表单标记后问题得到了解决


希望这会对某些人有所帮助。

您是否声明了任何自定义筛选器?你有控制器建议吗?你能发布你的完全控制器类吗?@Dave A嘿,试试我实现的。对meDo有任何问题吗?是否声明了自定义筛选器?你有控制器建议吗?你能发布你的完全控制器类吗?@Dave A嘿,试试我实现的。对meThis的任何问题注释都是控制器中唯一的方法。这里没有其他带有@modelattributer注释或类似内容的符号。有没有办法告诉你已经写了什么?如果response.getOutputStream()返回ByteArrayOutputStream,你也可以读取((ByteArrayOutputStream)response.getOutputStream())。toByteArray()这是控制器中唯一的方法。这里没有其他带有@modelattributer注释或类似内容的符号。有没有办法告诉你已经写了什么?如果response.getOutputStream()返回ByteArrayOutputStream,你也可以读取((ByteArrayOutputStream)response.getOutputStream()).toByteArray()我不能运行“setBufferSize”。它已经是该方法的第一行了,那么我如何更早地运行它呢?我正在考虑在调用
sync
的块中设置缓冲区大小。这样,将在写入响应之前对其进行配置。在已经写入的响应上设置缓冲区是没有意义的。我不能更早地运行“setBufferSize”。它已经是该方法的第一行了,那么我如何更早地运行它呢?我正在考虑在调用
sync
的块中设置缓冲区大小。这样,它将是c