0

I'm using WebSphere 9.0.5.8 and I'm trying to deploy a JEE app that uses Crnk framework with version 3.4. Deployment is fine, but when a request is made, it looks like init() method is called twice what results in SRVE0271E error. Below the stacktraces. First one (dumped by me) that initializes the servlet with no errors, and the second one, where init() method is called by the ServletWrapper. The other thing is that on Tomcat everything works like a charm.

[26.08.21 09:21:12:280 CEST] 00000136 SystemOut     O 2021-08-26 09:21:12,279 ERROR [WebContainer : 1] (SimpleCrnkServlet.java:29) - ****.SimpleCrnkServlet.init(SimpleCrnkServlet.java:28)
javax.servlet.GenericServlet.init(GenericServlet.java:244)
com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:342)
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:169)
com.ibm.ws.webcontainer.servlet.ServletWrapper.load(ServletWrapper.java:1385)
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1039)
com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4219)
com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2210)
com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)
com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)

and the second call:

[26.08.21 09:21:12:949 CEST] 00000136 SystemOut     O 2021-08-26 09:21:12,949 ERROR [WebContainer : 1] (SimpleCrnkServlet.java:29) - *****.SimpleCrnkServlet.init(SimpleCrnkServlet.java:28)
javax.servlet.GenericServlet.init(GenericServlet.java:244)
com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:342)
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:169)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:634)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:143)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:96)
ch.nevis.ninja.filter.NinjaAuthenticationFilter$PriviledgedChainForwarder.run(NinjaAuthenticationFilter.java:107)
java.security.AccessController.doPrivileged(AccessController.java:708)
javax.security.auth.Subject.doAs(Subject.java:490)
ch.nevis.ninja.filter.NinjaAuthenticationFilter.injectPrincipal(NinjaAuthenticationFilter.java:386)
ch.nevis.ninja.filter.NinjaAuthenticationFilter.doFilter(NinjaAuthenticationFilter.java:222)
******.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:125)
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:197)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:90)
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:979)
com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1119)
com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4219)
com.ibm.ws.webcontainer.webapp.WebAppImpl.handleRequest(WebAppImpl.java:2210)
com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1030)
com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:382)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:465)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:532)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:318)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:289)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)

Maybe there's something in a WAS configuration that could prevent from calling the Servlet.init() twice?

Mariusz W
  • 39
  • 1
  • 8

1 Answers1

0

There is no configure in the servlet init() area. Each servlet wrapper has an internal flag which tracks its initialization.

Does your servlet have <load-on-startup> set to a positive integer? If it does, the loading should be during the application startup; else it should be at the request time.

Perhaps set the trace

=info:com.ibm.ws.webcontainer=all:com.ibm.wsspi.webcontainer*=all:HTTPChannel=all:GenericBNF=all

it will give more information.

pmdinh
  • 146
  • 1