SpringBoot Rest application on App engine gives EofException error when going through a Filter

142 views
Skip to first unread message

gaurav bhandari

unread,
Jun 30, 2020, 12:38:37 PM6/30/20
to Google App Engine
The below error occurs if a Filter class is implemented. If the filter class is removed, the api works properly.
Error Message-
org.eclipse.jetty.io.EofException: Closed at org.eclipse.jetty.server.HttpOutput.checkWritable(HttpOutput.java:722) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:752) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233) ~[na:na] at java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312) ~[na:na] at java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:316) ~[na:na] at java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153) ~[na:na] at java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:254) ~[na:na] at org.springframework.util.StreamUtils.copy(StreamUtils.java:147) ~[spring-core-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:122) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.http.converter.StringHttpMessageConverter.writeInternal(StringHttpMessageConverter.java:44) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:219) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:123) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:503) ~[jakarta.servlet-api-4.0.3.jar!/:4.0.3] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[jakarta.servlet-api-4.0.3.jar!/:4.0.3] at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1631) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226) ~[websocket-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1618) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at myapp.AuthFilter.doFilter(AuthFilter.java:62) ~[classes!/:na] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1618) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at myapp.AuthFilter.doFilter(AuthFilter.java:62) ~[classes!/:na] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1618) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1618) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.7.RELEASE.jar!/:5.2.7.RELEASE] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1618) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[jetty-security-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1369) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:489) ~[jetty-servlet-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1284) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.Server.handle(Server.java:501) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) ~[jetty-server-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[jetty-io-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) ~[jetty-util-9.4.29.v20200521.jar!/:9.4.29.v20200521] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) ~[jetty-util-9.4.29.v20200521.jar!/:9.4.29.v20200521] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]" 


Code-
Startup -
@ServletComponentScan
@SpringBootApplication
public class RestBoot {
public static void main(String[] args) {
SpringApplication.run(RestBoot.class, args);
}
}

Filter -
@WebFilter(urlPatterns = "/*")
@Configuration
public class AuthFilter implements Filter {

@Autowired
DataSource pool;

@Override
public void doFilter(ServletRequest req, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) servletResponse;
if (!request.isSecure()) {
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Insecure Request.");
}

if( request.getRequestURI().contains("trial")) {
chain.doFilter(request , response );
System.out.println("Done");
}
      }

Controller -
@RestController
public class RestApiController {

@Autowired
private DataSource pool;

@GetMapping("/trial")
public ResponseEntity<String> hello() {

String abc1 = hello;
return new ResponseEntity<String>(abc1, HttpStatus.OK);
//return "Hello world! " + abc1;
}
}


Please advice what could be causing the issue.
Reply all
Reply to author
Forward
0 new messages