On Mon, Mar 20, 2023 at 1:59 PM Harri Pesonen <harri.peso...@sinch.com> wrote:
>
> Hello,
>
> I changed:
>
>   *   source code target from Java 8 to Java 11
>   *   Tomcat from 8.5 to 9.0.73
>   *   Java runtime from Java 11 to Java 17
> and now I see extra error in Tomcat log, which did not happen before:

The Servlet API was changed so that in the HttpSessionListener
interface the sessionCreated method is now a "default". So something
is not right in this area after your upgrade.

Rémy

>
> (http-nio-8080-exec-8) (org.apache.catalina.session.StandardSession#tellNew) 
> Session event listener threw exception
> java.lang.AbstractMethodError: Receiver class 
> org.apache.tomcat.websocket.server.WsSessionListener does not define or 
> inherit an implementation of the resolved method 'abstract void 
> sessionCreated(javax.servlet.http.HttpSessionEvent)' of interface 
> javax.servlet.http.HttpSessionListener.
>                              at 
> org.apache.catalina.session.StandardSession.tellNew(StandardSession.java:390)
>                              at 
> org.apache.catalina.session.StandardSession.setId(StandardSession.java:363)
>                              at 
> org.apache.catalina.session.StandardSession.setId(StandardSession.java:342)
>                              at 
> org.apache.catalina.session.ManagerBase.createSession(ManagerBase.java:763)
>                              at 
> org.apache.catalina.connector.Request.doGetSession(Request.java:3008)
>                              at 
> org.apache.catalina.connector.Request.getSession(Request.java:2422)
>                              at 
> org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:650)
>                              at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                              at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>                              at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>                              at 
> java.base/java.lang.reflect.Method.invoke(Method.java:568)
>                              at 
> org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1268)
>                              at 
> org.jvnet.hk2.internal.MethodInterceptorImpl.internalInvoke(MethodInterceptorImpl.java:85)
>                              at 
> org.jvnet.hk2.internal.MethodInterceptorImpl.invoke(MethodInterceptorImpl.java:101)
>                              at 
> org.jvnet.hk2.internal.MethodInterceptorInvocationHandler.invoke(MethodInterceptorInvocationHandler.java:39)
>                              at 
> jdk.proxy4/jdk.proxy4.$Proxy72.getSession(Unknown Source)
>                              at 
> com.sap.cctr.ri.context.AuthenticationFilter.filter(AuthenticationFilter.java:341)
>                              at 
> org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:108)
>                              at 
> org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:44)
>                              at 
> org.glassfish.jersey.process.internal.Stages.process(Stages.java:173)
>                              at 
> org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:248)
>                              at 
> org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
>                              at 
> org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
>                              at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:292)
>                              at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:274)
>                              at 
> org.glassfish.jersey.internal.Errors.process(Errors.java:244)
>                              at 
> org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
>                              at 
> org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
>                              at 
> org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
>                              at 
> org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
>                              at 
> org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
>                              at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)
>                              at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)
>                              at 
> org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>                              at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>                              at 
> org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:328)
>                              at 
> org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:158)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
>                              at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
>                              at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
>                              at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
>                              at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
>                              at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
>                              at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
>                              at 
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673)
>                              at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
>                              at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
>                              at 
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389)
>                              at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>                              at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926)
>                              at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
>                              at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>                              at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
>                              at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>                              at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>                              at 
> java.base/java.lang.Thread.run(Thread.java:833)
>
> Problem happens when our code calls
>
> public class AuthenticationFilter implements ContainerRequestFilter {
> ...
> @Override
> public void filter(ContainerRequestContext requestContext) throws IOException 
> {
>     HttpServletRequest request = ...
> ...
>     request.getSession(true);
>
> This did not happen before, I did not see that error in log.
> It still creates that session just fine. This error comes with every new 
> session only once.
> I don't quite understand why it is doing websocket related things, because 
> this application is not using websocket.
> Am I doing something wrong?
> It seems like compatibility problem between Tomcat 9 and Java 11/17.
>
> -Harri

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to