Glassfish / Struts Web Application: Cannot Find Reason for IOException

I have a Java web application that throws an IOException (connection closed). Unfortunately, I cannot find the cause / source of the problem (therefore, I cannot provide a minimal code sample). I cannot reproduce the exception in the development environment, in the production environment, which it throws regularly (for example, 50 registered users: thrown (on average) every 10-20 minutes, sometimes more often).

How can I determine the cause of this problem (it seems to be related to the libraries used, maybe some configuration problem)?

Here are the settings:

  • Java application using Struts 2 and JDBC (Postgres 9), libraries:

    • ASM-5.0.2.jar

    • ASM-General-5.0.2.jar

    • ASM-tree-5.0.2.jar

    • Wikimedia Commons BeanUtils-1.8.0.jar

    • Wikimedia Commons Collection-3.2.1.jar

    • All-Cooking-2.0.jar

    • Common-FileUpload-1.3.1.jar

    • Total U 2.2.jar

    • Common Lang-2.4.jar

    • Common-lang3-3.2.jar

    • General Logging 1.1.3.jar

    • FreeMarker-2.3.22.jar

    • Javassist-3.11.0.GA.jar

    • javax.servlet-api.jar (version 3.1.0)

    • JUnit-4.7.jar

    • OGNL-3.0.6.jar

    • ojdbc14.jar

    • -9.4-1201.jdbc41.jar PostgreSQL

    • struts2-core-2.3.24.1.jar

    • Struts2-tile-plugin-2.3.24.1.jar

    • tiles-api-2.0.6.jar

    • tile-core-2.0.6.jar

    • tiles-JSP-2.0.6.jar

    • xwork-core-2.3.24.1.jar

  • Deployed on Glassfish 4.1.1 Server

Here is the stack trace:

[glassfish 4.1] [WARNING] [] [javax.enterprise.web] [[ StandardWrapperValve[default]: Servlet.service() for servlet default threw exception java.io.IOException: Connection is closed at org.glassfish.grizzly.nio.NIOConnection.assertOpen(NIOConnection.java:432) at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:653) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:355) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:342) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:161) at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:2199) at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1085) at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:568) at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:413) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Locally closed ]] 
+5
source share

Source: https://habr.com/ru/post/1238822/


All Articles